Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wydajnością, zbadanie co powoduje problemy - jak?
Forum PHP.pl > Forum > Serwery WWW > Apache
jedrus4
Trochę niezbednego wprowadzania:

Posiadamy duże forum działające na skrypcie vbulletin.

600 tys. postów, 17 tys. użytkowników, 20 000 unikalnych odwiedzin dziennie

Maszyna dedykowana, ma spory potencjał, 4GB pamięci, 64 bity na dual core X2 AMD, ale przy obecnym kształcie baz danych powoli przymierzamy się do przesiadki na sprzęt o dwukrotnie wyższej specyfikacji ze względu na rozmiar bazy dochodzący powoli do 2GB.

Forum pracowało bez większych problemów na vb w wersji 3.8.4.

W grudniu padła decyzja o przyjrzeniu się możliwościom VB4 na środowisku testowym. Udało się pomyślnie przeprowadzić migrację danych, przenieść wszystko na środowisko działające "z boku". Wpuściliśmy użytkowników, zebraliśmy dość pozytywny feedback i czekaliśmy na wersję GOLD z przesiadką. Ponieważ cały czas były głosy o tym, że nie działają różne "wtyczki", a to shoutbox się nie podobał użytkownikom, a to grafika, a to milion innych powodów... czekaliśmy aż uda nam się odwzorować oczekiwaną funkcjonalność na nowym silniku.

Udało się. Kilka dni temu przeprowadziliśmy kolejny udany upgrade na środowisku testowym, dwie próby pomyślnie, przygotowaliśmy skrypty do migracji, wyłączyliśmy forum na godzinę, wcisnęliśmy czerwony przycisk i nacisnęliśmy wajchę - na "pierwszy ogień" poszło duże forum. Pełen backup bazy, plików, nadpisanie plików, odpalenie skryptów - znacie procedurę...

...ta noc i dzień po były najdłuższymi w życiu administratora forum (ja osobiście jestem odpowiedzialny za utrzymanie sprzętu oraz fizycznie za drugie - nie zmigrowane jeszcze fourm).

Jak tylko ludzie zaczęli pojawiać się na forum, transfer skoczył o 70%. Apache co chwilę generował maksymalną ilość klientów, nie będąc w stanie w sensownym czasie obsłużyć odpowiedniej ilości zapytać. Co ciekawe - ilość zapytań SQLa wyraźnie spadła w związku z tym, że apache nie nadążał z dostarczaniem zapytań. Pytanie brzmi dlaczego? Aktualna konfiguracja apache-a jak i bazy mysql została wypracowana przez lata doświadczeń i podążania za trendami optymalizacyjnymi dla tego rodzaju rozwiązań. Przesiadka na VB4 sprawiła, że wszystko stanęło w miejscu...

Cały problem polega na tym, że nie ma możliwosci tego tak naprawdę zweryfikować, dopóki nie przerzuci się całego obciążenia z forum testowego na forum "produkcyjne" - bo niby jak? W labie wszystko działa płynnie, szybko i bez najmniejszych problemów. Jak wpuścimy 1500 użytkowników na raz, zaczynają się poważne problemy z obsługiwaniem requestów...

Dla porównania transfer z dnia poprzedzającego przesiadkę i "czarnego wtorku":








Tutaj pytanie do Was

Czy jest możliwe sprawdzenie, co na serwerze zajmuje najwięcej zasobów procesora? Chodzi mi np. o wskazanie, że plik abc.php powoduje najwięcej problemów.
Jesteśmy cały czas w trakcie prób wykrycia problemu, ale poruszamy się trochę po omacku....

Czy są dostępne jakieś narzędzia do sprawdzenia które skrypty php powodują wąskie gardło?

Będę wdzięczny za każdą podpowiedź.
Riklaunim
Profilowanie kodu za pomocą XDebug, MySQL Slow Log smile.gif
atsuki
A ja od siebie dodam: postawic nginxa w dwóch opcjach. Pierwszej jako proxy do apacha, nginx zajmuje sie wszystkimi plikami sytatycznymi reszte proxuje do apacha. Druga nginx z php-fpm smile.gif.
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.