Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wkopanie źródeł do RAMu
pieto
post 8.12.2011, 22:46:54
Post #1





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Hej, dawno mnie tu nie było, wiec rzucę coś ciekawego.

Potrzebuję zoptymalizować jeden większy portal i tak kombinując wymyśliłem aby źródła ba! w zasadzie cały serwis
przerzucić do RAMu, nie wiem od czego zacząć wiec pytanie.

Jakieś koncepcje ?

z góry dzięki za podpowiedzi..
pozdrawiam


--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
!*!
post 9.12.2011, 09:37:33
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Chcesz cały portal wrzucić do ramu? mocne biggrin.gif

A tak poważniej to zainteresuj się memcached.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
pieto
post 9.12.2011, 10:08:31
Post #3





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Ano pierwsze co mi przyszło to memcached i rewrite zrodel rzutowany na imageMagica z cachem kierowany do RAMu,
Opcja nr - łatwiejsza w teorii ale nie wiem czy idzie - Dowiazanie symboliczne rzutowane na RAM..

Jakies inne pomysly ?


--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
Go to the top of the page
+Quote Post
Uriziel01
post 9.12.2011, 10:10:37
Post #4





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Jest to niestety niezbyt wykonalne w PHP.
Ale tutaj masz liste dostepnych 'akceleratorów', działaja one na zasadzie przechwycenia wygenerowanego OPCode'u z PHP który potem jest zapisywany do pliku, daje to niesamowity boost bo tak na prawdę większośc aplikacji traci najwięcej czasu na interpretację kodu w PHP do kodu maszynowego.
Tutaj masz liste najpopularniejszych akceleratorów dla PHP:
http://en.wikipedia.org/wiki/List_of_PHP_accelerators
Możesz też zainteresować się HipHop dla PHP od twórców Facebook'a, jest to inne podejście, skrypt jest tam interpretowany i zmieniany na 'wysoce wydajny' kod Cpp, ale tak po prawdzie to ten 'wysoce wydajny' kod ma także swoje wady i luki, w pewnych zastosowaniach może okazać się nawet sporo mniej wydajny niż samo PHP (istnieje kilka ciekawych artykułów na ten temat).

Jeżeli naprawdę interesujesz się wykonywaniem kodu w 'pamięci RAM' jak to zgrabnie ująłeś zainteresuj się implementacją protokołu HTTP dla Cpp (jest kilka FW do tego celu, niestety żaden z nich nie jest pozbawiony wad), można w ten sposób wykonać demona który będzie jak desktopowa aplikacja obsługiwał nadchodzące od serwera zapytania, ale:
1)Poziom trudności stworzenia takiej aplikacji jest niewspółmiernie większy niż pisanie w PHP
2)Ponownie w pewnych zastosowaniach może to doprowadzić do zmniejszenia wydajności zamiast jej wzrostu.

Ten post edytował Uriziel01 9.12.2011, 10:11:50
Go to the top of the page
+Quote Post
pieto
post 9.12.2011, 10:40:59
Post #5





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


Dzięki za info,
Właśnie pomysł zrodził przy okazji implementacji akceleratora, faktycznie w dużej części rozwiązuje sporo problemów.
Jednak nie do końca mój główny - ograniczenie ilości requestów do serwera, tu uprzedzam z góry ze techniki łączenia cssów, js i grafik w sprity zaimplementowałem ale dalej dysk ledwo zipie..
Czy niezbyt możliwe z poziomu PHP, hm nie sądze.

Pod warunkiem że źródła będą dynamicznie generowane lub pseudo-generowane (można przepuścić przez skrypt, np cachujacy do pamieci) powinno się dać,
tak czy siak znajdę chwilę to pokombinuję. smile.gif
Problemem zdaje się być baza danych chociaż tu widzę rozwiązanie na poziomie samej bazy - tworzenie zmapowanych widoków






--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
Go to the top of the page
+Quote Post
Uriziel01
post 9.12.2011, 10:50:30
Post #6





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Oczywiście że się da, tworząc jakies potwory w stylu popen(). Tylko po co? Na 99% będzie to miało mniejsza wydajność niż zwyczajny kod w PHP, poprostu skrypty PHP cierpią z powodu ograniczonej obsługi standardowych portów WEJ/WYJ.
Ale czysto TEORETYCZNIE widze to tak:
Pracujący 24H demon który czeka na otwarcie sie procesu który jest tworzony przy kazdym requeście od klienta, ma on już wczytaną grafike, css, szablony, i18n i co tam sobie jeszcze wymarzysz. Po otwarciu procesu, odbiera od niego argumenty, przetwarza je, generuje kod, przesyła go do procesu-klienta a ten natychmiast wysyła go zleceniodawcy. Ale powiedz mi w jaki sposób chcesz tutaj rozwiązać problem wielu jednoczesnych requestów ? Niestety nie możemy uzyc wielowątkowości, pozostaje tylko odpalić kilka daemonów, co WYDATNIE zwiększy zużycie pamięci RAM. Potem pozostaje problem balansowania ilosci zapytań, konfliktów dostepu etc. etc. etc.
I powiedz mi, czy warto ?

EDIT:
Było by dużo prościej przy aktywnych requestach do daemon'a, ale niestety w PHP (wg. mojej obecnej wiedzy) brak mechanizów na to pozwalających, stąd też ten pasywny styl połączeń.

Ten post edytował Uriziel01 9.12.2011, 10:51:59
Go to the top of the page
+Quote Post
!*!
post 9.12.2011, 10:51:38
Post #7





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Teoretycznie ilość requestów możesz ograniczyć przez ajax, choć to zależy od budowy całego portalu.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
redeemer
post 9.12.2011, 11:34:27
Post #8





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


1) cachowanie zapytan do bazy
2) opcode caching
3) KeepAlive w apache na On

Co do bazy, jeżeli masz dużo zapytań ze statusem "Using filesort" to quick-fixem bedzie zrobienie ramdisku i ustawienie go w konfigu jako tmpdir dla mysql. No i popraw/zoptymalizuj zapytania/indeksy smile.gif


--------------------
Go to the top of the page
+Quote Post
by_ikar
post 9.12.2011, 11:52:35
Post #9





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Możesz też dokupić jakiś średni serwer, postawić na nim nginx'a i z niego serwować całą treść statyczną. To samo zresztą możesz zrobić z bazą danych, przenieść na inny serwer. Możesz też zwiększyć cache bazy, wtedy o ile masz dużo pamięci ram, to cała baza mogłaby być nawet trzymana w pamięci. Możesz również wymienić dysk, podłączyć kolejny i spiąć go w raid. Możesz podłączyć dysk ssd. Możliwości jest bardzo dużo, wszystko zależy w głównej mierze od ilości gotówki jaką posiadasz.

Sprawa wrzucenia całego serwisu do pamięci ram, jest problematyczna. Z samą optymalizacją kodu dobrze radzą sobie akceleratory i wątpię aby wrzucenie do pamięci całego serwisu było mniej pracochłonne i efektywniejsze od akceleratorów.

O ile ten serwis jest napisany oop, mógłbyś przebudować autoloadera, który by sprawdzał czy w pamięci (apc) przetrzymywany jest obiekt i go zamiast includować, pobierać z pamięci. W sumie mogłoby się to wydawać dość ciekawe.

Ten post edytował by_ikar 9.12.2011, 11:56:15
Go to the top of the page
+Quote Post
Uriziel01
post 9.12.2011, 12:00:06
Post #10





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


W jakiś dziwny sposób ta dyskuja kompletnie zmieniła swój obrót, ale w porządku smile.gif

No pewnie, jak ma za dużo kasy może nawet postawić CDN'a ale chyba jednak autor miał coś kompletnie innego na mysli. Ma jeden serwer, potrzebuje zoptymalizować kod tak aby nie być zmuszonym dokupic kolejne maszyny.
Go to the top of the page
+Quote Post
by_ikar
post 9.12.2011, 12:02:36
Post #11





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Cytat(Uriziel01 @ 9.12.2011, 12:00:06 ) *
W jakiś dziwny sposób ta dyskuja kompletnie zmieniła swój obrót, ale w porządku smile.gif

No pewnie, jak ma za dużo kasy może nawet postawić CDN'a ale chyba jednak autor miał coś kompletnie innego na mysli. Ma jeden serwer, potrzebuje zoptymalizować kod tak aby nie być zmuszonym dokupic kolejne maszyny.


No wiesz, niektórych rzeczy się nie da bardziej zoptymalizować, zasoby serwera nie są nieskończone i swoje granice mają. Nie napisał ile tych odwiedzin ma oraz jaki ma serwer. Wróżbitą raczej nie jestem, więc dostał ogólne informacje, tak samo ogólne które dostałem i ja.
Go to the top of the page
+Quote Post
pieto
post 9.12.2011, 12:47:22
Post #12





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

Ostrzeżenie: (0%)
-----


EE, nie potrzebnie tak daleko sięgamy,
Owszem przerzucanie serwisu bezpośrednio z PHP jest dość uciążliwe, ale nie chodzi skrocenie czasu wykonywania php'a,
a ograniczenie udziału dysku .

Nie wiem dlaczego zapomniałem o starej jak świat metodzie tworzenia RAMdysku..
ot, http://members.fortunecity.com/ramdisk/RAMDisk/ramdriv.htm

+ cachowanie na ramdysk powinno rozwiązać mój problem.




Dla ciekawskich benchmark
http://fiehnlab.ucdavis.edu/staff/kind/Col...-benchmarks.pdf
smile.gif


--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
Go to the top of the page
+Quote Post
Uriziel01
post 9.12.2011, 13:23:56
Post #13





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Poprostu wow. jakas czarna dziura sprawiła że kompletnie zapomniałem o czyms czego używałem jeszcze kilka lat temu sam we własnym domowym zaciszu. Faktycznie jest to najszybsze i najprostsze możliwe rozwiązanie w kwestii 'przeniesienia do RAMu' skryptów PHP. A także przechowywania tego statycznego contentu.

Ten post edytował Uriziel01 9.12.2011, 13:25:43
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:15