Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problemy z szyboscia strony
Forum PHP.pl > Forum > Serwery WWW > Apache
soska66
Sluchajcie, zapomnijcie o moim pierwszym poscie w tym temacie. Chce ugryzc istote problemu z innej strony

Czy mozecie pomoc w rozszyfrowaniu gdzie leza bledy konfiguracyjne na serwerze VPS? Zrobilem test strony za pomoca serwisu loadimpact.com i juz przy tescie na 20 klientow, strona siada calkowicie, opoznienie wg statystyki wynosi ponad 20s. Co jest nie tak?

Serwer ma 512mb ramu.
Na VPSsie jest zainstalowany Apache 2.2.3, PHP5, MySQL 5
PHP laczy sie z MySQL poprzez PDO, permanent connection jest wlaczone.
Doinstalowalem APC (Alternative PHP cache), ktory zwiekszyl liczbe request per seconds dla strony glownej z 20 do 70.

Ustawienia Apache

  1. # prefork MPM
  2. <IfModule mpm_prefork_module>
  3. StartServers 10
  4. MinSpareServers 10
  5. MaxSpareServers 20
  6. MaxClients 100
  7. MaxRequestsPerChild 1500
  8. </IfModule>


MaxClients wydaje sie i tak za duzy (wg wzoru, MaxClients = (dostepna pamiec / wielkosc procesu Apache (u mnie kolo 15mb) ) bo powinien byc ustawiony na okolo 30, biorac pod uwage wolne zasoby. Ale i tak zmienianie tej wartosci a takze wylaczenie APC w zasadzie nie zmienia wynikow testu i przy 20 klientach strona siada. Serwer sie nie wiesza, ale opoznienia sa ogromne... strony w zasadzie nie da sie otworzyc podczas testu

Co przoczylem? Co jest nie tak?
jaslanin
a nie jest czasem tak że masz gwarantowane 256 mb ram, burstable 512 ? jeżeli nie jest to tajemnica to daj linka do oferty gdzie kupiłeś VPS

Zobacz też w konfiguracje mysql, zobacz co mówi mysqltuner.pl i mysqltuner.pl

Podaj też ile masz pamięci zajęte przez system.
soska66
Cytat(jaslanin @ 27.05.2010, 12:33:25 ) *
a nie jest czasem tak że masz gwarantowane 256 mb ram, burstable 512 ? jeżeli nie jest to tajemnica to daj linka do oferty gdzie kupiłeś VPS

Zobacz też w konfiguracje mysql, zobacz co mówi mysqltuner.pl i mysqltuner.pl

Podaj też ile masz pamięci zajęte przez system.



O zesz .... az mi sie glupio zrobilo. Wlasnie zdalem sobie sprawe, ze ten akurat server jest typu STARTER i ma jedynie 128mb ramu!! Zmylilo mnie to, ze jako zazwyczaj bierzemy o jeden poziom wyzszy VPS, z 512mb ramu, albo jeszcze wieksze. Dlatego z gory zalozylem pojemnosc... no nie dziwie sie, ze tak to wszystko dziala w tej sytuacji smile.gif czasem czlowiek nie pomysli o jednej prostej komendzie a wejdzie na forum i zacznie klepac opisowke smile.gif

Natychmiast upgraduje to konto i wtedy wroce do testow

BTW: Macie jakies zle doswiadczenia lub porady w kontekscie uzywania APC? Czy uzycie tego modulu moze miec negatywny wplyw na dzialanie strony w kontekscie konsumpcji pamieci? W konifguracji mozna ustawic rozmiar shared memory.. jak to dokladnie dziala... php jest cachowane dla kazdego klienta osobno czy wielu klientow korzysta z jednego zasobu?
jaslanin
1. Czasami problemem jest to że korzystając z cacherów np. APC, PHP jest wykonywane na prawach apache.
2. Czasami jego wady są zaletami, przy włączonym np. przy "apc.stat = false", jak zmienisz plik to cache się nie zaktualizuje ale za to szybciej będzie działało. Przy wordpresie nie można mieć z kolei włączonego "apc.include_once_override"
3. Raczej zużycie pamięci jest mniejsze, bo nie trzeba za każdym razem parsować kodu tylko od razu jest on przetwarzany na op-code.
4. APC cachuje każdy plik osobno, jeżeli 2 klientów używa jednego pliku, to używają jednego zcachowanego pliku (op-code). Odnośnie konfiguracji shared memory można poczytać np. tu: http://www.imminentweb.com/technologies/tu...php-performance
soska66
Cytat(jaslanin @ 27.05.2010, 13:43:28 ) *
1. Czasami problemem jest to że korzystając z cacherów np. APC, PHP jest wykonywane na prawach apache.
2. Czasami jego wady są zaletami, przy włączonym np. przy "apc.stat = false", jak zmienisz plik to cache się nie zaktualizuje ale za to szybciej będzie działało. Przy wordpresie nie można mieć z kolei włączonego "apc.include_once_override"
3. Raczej zużycie pamięci jest mniejsze, bo nie trzeba za każdym razem parsować kodu tylko od razu jest on przetwarzany na op-code.
4. APC cachuje każdy plik osobno, jeżeli 2 klientów używa jednego pliku, to używają jednego zcachowanego pliku (op-code). Odnośnie konfiguracji shared memory można poczytać np. tu: http://www.imminentweb.com/technologies/tu...php-performance


Dzieki za odnosniki i pomoc... poczytam i pobawie sie konfiguracja

Takie pytanie, ab pokazuje mi w wynikach testu

  1. Complete requests: 100
  2. Failed requests: 23
  3. (Connect: 0, Length: 23, Exceptions: 0)
  4.  


Failed request, Length... o co chodzi? Jest jakas wartosc, ktora okresla max wielkosc zapytania?

Robie ponowne testy serwera. Upgradowalem go do 1024mb ramu i zainstalowalem APC. Wyglada na to, ze dzieki cachowaniu php, zaleznosc MaxClients od dostepnej pamieci RAM nie jest juz tak scisla jak wychodzi ze wzoru. Ustawilem MaxClients na 200, czyli toretycznie o wiele za duzo niz powinno byc przy okolo 700mb wolnej pamieci, a mimo to, przy tescie na 250 klientow, caly czas pozostaje wolne ponad 200mb ramu.

Kilka dni temu robilem test na serwerze z 512mb ram i bez zainstalowanego APC... MaxClients wynosilo 150 - serwer padl calkowicie przy tescie na 100 klientow
jaslanin
Na początku wyniku masz zapewne coś takiego:

Document Length: 15673 bytes

Jeżeli długość żądania różni się od tego wzorcowego to pojawia się ten błąd.
soska66
Wrocmy do tego testu wczorajszego co robilem. Jak juz wspomnialem, ugradowalem serwer do 1024 ramu. Zauwazylem tez, ze uzycie APC umozliwia zwiekszenie wartosci MaxClients jako, ze Apache nie zuzywa juz tyle pamieci na parsowanie php. Ustawilem MaxClients na 250 i odpalilem test na 250 klientow - najwieksze opoznienie wynioslo 3 s., serwer dzialal ladnie do konca testu, nie zblizajac sie nawet do ryzyka zawieszenia sie

Dzis juz jednak nie jestem tych ustawien taki pewny... oto dlaczego

Zaraz po wgraniu APC i restarcie Apache, system pokazywal okolo 500mb wolnej pamieci. Podczas najwiekszego testu, na 250 klientow (I MaxClients = 250), ilosc wolnej pamieci spadala do 200mb, ale ani razu nie zeszla nizej.

Przed chwila sprawdzilem stan pamieci na serwerze, i pokazuje jedynie 130mb, pomimo, ze zaden test nie jest odpalony... W konsekwencji zmniejszylem MaxClients do 120, tak na wszelki wypadek. Bede monitorowal sytuacje ale zastanawia mnie czy przychodzi Ci do glowy jakas pierwsza mysl... skad ten spadek wolnej pamieci przez noc... z 500mb do 130mb
jaslanin
zapewne przez to że najczęściej używane dane znalazły się w cache lub były buforowane np. w moim przypadku jest to tak:

Kod
Mem:   4120744k total,  3940064k used,   180680k free,   179952k buffers
Swap:  2104440k total,       44k used,  2104396k free,  3084956k cached


Być może buffersy Ci tyle zajmują

A ogólnie rzecz ujmując to że dużo ramu jest zużywane niekoniecznie jest złe, jeżeli ten ram idzie np. na przechowywanie tabel mysql zamiast na dysku to w pamięci to nie jest to złe.
soska66
bede monitorowal sytuacje z pamiecia na przestrzeni dni i co jakis czas zwiekszal MaxClients. Zobaczymy co z tego wyjdzie

Tymczasem, probuje sklecic kilka prostych zdan dla klienta, ktory chce wiedziec ile osob moze jednoczesnie przebywac na stronie. Czy nie rozmijam sie z prawda piszac:

Cytat
Dokladna liczba nie moze byc oszacowana. W tej chwili Apache akceptuje 120 jednoczesnych polaczen, co oznacza, w prostych slowach, ze gdy 200 osob przeladuje strone w tym samym momencie, 120 z nich zostanie obsluzonych natychmiast, a 80 zostanie wrzuconych w 'kolejke'. Jak dlugo uzytkownik czeka w kolejce zalezy od tego jak szybko serwer potrafi obsluzyc jednego uzytkownika - to zalezy od kliku czynnikow. Oczekiwanie nie powinno to jednak trwac dluzej niz kilka sekund

Prosze pamietac, ze zarowno test jak i wartosc MaxClients wskazuje na liczbe uzytkownikow, ktorzy przeladowuja strone w dokladnie tym samym momencie. Nawet gdy na stronie jest 2000 uzytkownikow, wszyscy spedza 95% czasu czytajac strone a tylko okolo 5% czasu na wysylanie zadan (ladowanie podstron) wiec tylko czesc z nich, podejrzewam, ze mniejsza niz 120, bedzie 'klikac' w tym samym dokladnie momencie


Sorki za takie pytanie, ale nigdy nie mialem okazji skladac skrawkow moich informacji na temat dzialania serwera w opis, ktory ma zrozumiec laik
jaslanin
To jest wartość czysto teoretyczna. Ab test pobiera tylko 1 plik, a jak wiadomo stron to pliki js, obrazki, css, które są osobnymi żądaniami, wymagają one odczytu z dysku/cache. Jeżeli np. strony mają np. komentarze i ludzie je jednocześnie oglądają i wysyłają to też ma znaczenie na wydajności. Zapewne testy wykonywałeś za pomocą polecenia: localhost:80/index.php, przez co nie wiesz jak będzie się to wszystko zachowywało na łączu. Np. wiadomo że jak masz dla VPS łącze 10mbps to przy 120 klientach naraz będziesz miał 85 kbps dla jednego użytkownika, co też da pewny narzut na szybkość działania.

Ja nigdy takich rzeczy nie szacowałem, ale postaram się w wolnym czasie poszukać coś na ten temat.
soska66
Cytat(jaslanin @ 28.05.2010, 12:54:02 ) *
To jest wartość czysto teoretyczna. Ab test pobiera tylko 1 plik, a jak wiadomo stron to pliki js, obrazki, css, które są osobnymi żądaniami, wymagają one odczytu z dysku/cache. Jeżeli np. strony mają np. komentarze i ludzie je jednocześnie oglądają i wysyłają to też ma znaczenie na wydajności. Zapewne testy wykonywałeś za pomocą polecenia: localhost:80/index.php, przez co nie wiesz jak będzie się to wszystko zachowywało na łączu. Np. wiadomo że jak masz dla VPS łącze 10mbps to przy 120 klientach naraz będziesz miał 85 kbps dla jednego użytkownika, co też da pewny narzut na szybkość działania.

Ja nigdy takich rzeczy nie szacowałem, ale postaram się w wolnym czasie poszukać coś na ten temat.


Testy akurat nie byly robione w AB... tzn byly ale inne smile.gif Tu odnosze sie bezposrednio do testow z serwisu loadimpact.com, ktory dziala w ten sposob, ze symuluje dana ilosc klientow wysylajaych wkolko zapytania do strony - to sie tyczy wszystkich elementow strony, wliczajac js, css i obrazki. Oczywiscie ma ten test ma rowniez wplyw samo lacze. To na tym opieram swoje podsumowanie. Komentarzy na stronie nie ma... jedyne formularze wysylajace dane to panel loginu i rejestracji newsletter
jaslanin
z tego co doczytałem i zauważyłem ten loadimpact.com symuluje trochę normalnych użytkowników. Czyli raz jest trochę więcej a raz trochę mniej użytkowników. Ale myślę że jeżeli podasz link do tego serwisu Twój tekst to będzie dobrze.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.