Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czasowe, bardzo duże zużycie pamięci przez Apache'a
Forum PHP.pl > Forum > Serwery WWW
Pronigo
Witam,

Mam postawiony dość popularny serwis na serwerze dedykowanym - Solaris, Apache, PHP i MySQL. Mój problem polega na tym, że czasami, nie zależnie od pory dnia, zużycie pamięci przez Apache'a drastycznie wzrasta, nawet do 90%. A z reguły, przez zdecydowana większość czasu użycie pamięci oscyluje wokoło 20%. To duże zużycie zazwyczaj nie trwa długo - do pół godziny. Po czym powoli spada, i tak po 2 minutach jest znowu 20%. Sa to wszystkie procesy Apache-a:

/opt/local/sbin/httpd -k start

I jest ich kilkadziesiąt. Zużycie procesora takiego jednego procesu jest znikome, poniżej 0,5%. Logi puste.

O co może tutaj chodzić? Dlaczego czasami zużycie pamięci tak bardzo czasami wzrasta? Co się stanie jak użycie pamięci dojdzie do 100%? Strona przestanie działać?

I jedno istotne pytanie - czy taki pojedyńczy proces Apache-a, który zajmuje bardzo dużo pamięci, mogę zabić, aby tej pamięci zwolnić? Czy Apache się po czymś takim nie wysypie?
uupah5
Cytat
Po czym powoli spada, i tak po 2 minutach jest znowu 20%. Sa to wszystkie procesy Apache-a:
/opt/local/sbin/httpd -k start
I jest ich kilkadziesiąt. Zużycie procesora takiego jednego procesu jest znikome, poniżej 0,5%. Logi puste.

"jakiś" ślad musi zostać. procesy same się nie mnożą, tylko są to jakieś requesty. zobacz access i error logi serwera www. jeśli site jest podpięty pod bazę, to slow logi bazy.
jeśli masz dostęp, to sprawdzaj statystyki rrd. pomyśl o całości serwera, może "obok" wysyłasz duże bazy newsletterowe, robią się backupy, jakieś cronowe zadania?
Cytat
O co może tutaj chodzić? Dlaczego czasami zużycie pamięci tak bardzo czasami wzrasta? Co się stanie jak użycie pamięci dojdzie do 100%? Strona przestanie działać?

zacznie zrzucać pamięć do swapa, czyli tak jak w desktopie - dysk mieli w nieskończoność, a komp zdycha;)
Cytat
I jedno istotne pytanie - czy taki pojedyńczy proces Apache-a, który zajmuje bardzo dużo pamięci, mogę zabić, aby tej pamięci zwolnić? Czy Apache się po czymś takim nie wysypie?

leczyć przyczyny a nie zabijać pacjenta.
a jak to dedyk to nawet nie znając przyczyn, możesz wykonać parę zmian, które na pewno nie zaszkodzą a mogą diametralnie pomóc. przykładowo migracja apache->nginx
kaliban.gnb
Tak jak napisał kolega wyżej:
- logi apache'a - musi w nich coś być
- jeśli masz Apache Prefork, to w chwili, gdy procesy "workerów" nie będą wydalać z serwowaniem strony, apache zacznie wcinać RAM, aż w koncu zacznie swappować co skończy się "zdechnięciem" serwera (zeżre cały ram, cały swap i dalej będzie głodny - możesz mieć problem połączyć się via SSH, bo nie będzie ramu na obsłużenie sesji...)
Apache Worker (threaded) jest podobno szybszy i mniej pamięciożerny, ale nie wszystkie aplikacje dobrze na nim działają. nginx, light....możesz mieć problem z uruchomieniem konkretnej aplikacji "out of the box", ale ludzie sobie chwalą.

Poczytaj to: http://httpd.apache.org/docs/2.0/misc/perf-tuning.html i ustaw MaxClients oraz opcjonalnie MaxRequestsPerChild (to jest alternatywa dla tego Twojego "czy mogę zabić proces" - po serwnięciu MaxRequestsPerChild requestów proces sam się zabije (master go wykończy) i na jego miejsce zostanie uruchomiony nowy - trzeba uważać, bo uruchamianie workera zajmuje przeważnie więcej czasu niż obsługa requestu, więc ustawianie tego limitu bardzo nisko, może spowodować spadek wydajności....natomiast jeśli zauważysz, że procesy apache'a "puchną", tzn. uruchamiasz i mają np. 30MB, a po paru godzinach mają już 120MB - to ten parametr może pomóc "doraźnie/na szybko" ograniczyć wycieki pamięci - lepiej poszukać w aplikacji, ale wiadomo jak to czasem bywa...).

No i znów - jak pisał kolega uupah5 - jeśli masz dostęp do jakichś statsów (najlepiej z serwera, ale od biedy Google Analytics też jakieś światło rzuci) - sprawdź, może o danej porze masz naturalny peak.
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.