Skocz do zawartości
denis94

Dziwny problem z apache

Polecane posty

Witam.

Posiadam portal na którym w godzinach szczytu przebywa około 1800-2500 użytkowników.

Serwer na którym to stoi to serwer vps.

 

Średnie zużycie ramu w ciągu dnia to około 45%.

Zużycie ramu w godzinach szczytu około 60%

 

Mój problem polega na tym, że serwer www czasami w ciągu kilku minut powoduje raptem 100% zużycie ramu i utrzymuje się do tej pory, dopóki nie przeładuję usługi httpd. Gdy tylko to zrobię problem po kilkunastu sekundach ustępuje i zużycie ramu spada do normalnego poziomu. Podczas tak wysokiego zużycia ramu strona nie ładuje się lub zwraca błąd 500.

Najdziwniejsze jest w tym wszystkim to, że nie dzieje się to tylko w godzinach szczytu. Czasami występuje to nawet wczesnym rankiem gdy ruch jest najmniejszy.

Logi nie wykazują żadnych nadzwyczajnych działań czy ataków tym bardziej, że po przeładowaniu (nie zresetowaniu) httpd wszystko wraca do normy.

 

Bywa, że czasami są dwa tygodnie przerwy w występowaniu tego problemu, a czasami bywa, że dzieje się to 2-3 razy dziennie.

 

Proszę o pomoc lub naprowadzenie na przyczynę problemu. Może ktoś spotkał się z czymś podobnym?

Edytowano przez denis94 (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ciężko będzie coś więcej powiedzieć, może to być jakiś długi keepalive, jakiś skrypt może się zloopować bądź jesteś zwyczajnie atakowany jakimś slowlorisem.

 

Poleciłbym zacząć od skrócenia keepalive'a i timeoutu dla php i zmierzyć parę dodatkowych rzeczy podczas takiego "skoku", cokolwiek co może nas nakierować, logi z access'a na pewno nam mogą pomóc, tak samo jak logi php czy nawet liczba threadów apache'a (o ile używasz prefork'a).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ok dzięki za wskazówki. Timeouty zmniejszone. Jak tylko znów będzie skok to pozbieram logi.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Znów miała miejsce ta sytuacja.

 

Logi:

 

Apache Access Log - brak jakichkolwiek niepokojących.

 

System Messages

Feb 12 20:10:44 xyz freshclam[1368]: Received signal: wake up
Feb 12 20:10:44 xyz freshclam[1368]: ClamAV update process started at Tue Feb 12 20:10:44 2013
Feb 12 20:10:44 xyz freshclam[1368]: main.cld is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
Feb 12 20:10:44 xyz freshclam[1368]: daily.cld is up to date (version: 16670, sigs: 759792, f-level: 63, builder: ccordes)
Feb 12 20:10:44 xyz freshclam[1368]: Current functionality level = 61, recommended = 63
Feb 12 20:10:44 xyz freshclam[1368]: Please check if ClamAV tools are linked against the proper version of libclamav
Feb 12 20:10:44 xyz freshclam[1368]: DON'T PANIC! Read http://www.clamav.net/support/faq
Feb 12 20:10:45 xyz freshclam[1368]: bytecode.cld is up to date (version: 210, sigs: 39, f-level: 63, builder: neo)
Feb 12 20:10:45 xyz freshclam[1368]: Current functionality level = 61, recommended = 63
Feb 12 20:10:45 xyz freshclam[1368]: Please check if ClamAV tools are linked against the proper version of libclamav
Feb 12 20:10:45 xyz freshclam[1368]: DON'T PANIC! Read http://www.clamav.net/support/faq
Feb 12 20:10:45 xyz freshclam[1368]: [LibClamAV] ***********************************************************
Feb 12 20:10:45 xyz freshclam[1368]: [LibClamAV] ***  This version of the ClamAV engine is outdated.     ***
Feb 12 20:10:45 xyz freshclam[1368]: [LibClamAV] *** DON'T PANIC! Read http://www.clamav.net/support/faq ***
Feb 12 20:10:45 xyz freshclam[1368]: [LibClamAV] ***********************************************************
Feb 12 20:10:46 xyz freshclam[1368]: [LibClamAV] ***********************************************************
Feb 12 20:10:46 xyz freshclam[1368]: [LibClamAV] ***  This version of the ClamAV engine is outdated.     ***
Feb 12 20:10:46 xyz freshclam[1368]: [LibClamAV] *** DON'T PANIC! Read http://www.clamav.net/support/faq ***
Feb 12 20:10:46 xyz freshclam[1368]: [LibClamAV] ***********************************************************
Feb 12 20:10:48 xyz freshclam[1368]: --------------------------------------

 

 

logi httpd dla domeny:

wiele lini typu:

 

[Tue Feb 12 20:12:33 2013] [error] [client xxx.xxx.xxx.xxx] Script timed out before returning headers: index.php

 

 

Po przeładowaniu httpd w logach Apache Error Log:

 

[Tue Feb 12 20:20:19 2013] [notice] SIGHUP received.  Attempting to restart
[Tue Feb 12 20:20:20 2013] [warn] RSA server certificate CommonName (CN) `localhost' does NOT match server name!?
[Tue Feb 12 20:20:20 2013] [notice] Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8o DAV/2 configured -- resuming normal operations

 

 

Liczba procesów httpd podczas skoku: 99

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dziwna sprawa, wszystko wskazuje na to że winą jest updatujący się ClamAV, ale z jakiego powodu to nie mam zielonego pojęcia...

 

Feb 12 20:10:45 xyz freshclam[1368]: [LibClamAV] ***  This version of the ClamAV engine is outdated.     ***

 

Polecam zacząć od standardowego updatea (apt-get update && apt-get dist-upgrade)

 

 

Jeśli chcesz szybkiego rozwiązania problemu to możesz sprawdzić czy całkowite odinstalowanie ClamAV (apt-get purge clamav*) pomoże, ja osobiście sądzę że tak bo jeśli w syslogu nie ma nic ciekawszego to raczej to on jest winowajcą. Jeśli natomiast chcesz się pobawić w detektywa to...

 

Pytanie pierwsze, jakie to IP w tych logach httpd? Mogą to być zarówno userzy, którzy nie mogą wczytać strony jak i jakiś botnet, który atakuje httpd. Raczej stawiam na to pierwsze. Jeśli natomiast IP jest jedno i to samo i nie jest to ani IP zewnętrzne/wewnętrzne Twojego serwera to najzwyczajniejszy w świecie DoS.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Co ma Clamav do tego ? :)

 

[Tue Feb 12 20:12:33 2013] [error] [client xxx.xxx.xxx.xxx] Script timed out before returning headers: index.php

 

Timeouty, timeouty... i konfiguracja.

Przy takim ruchu standardowa konfiguracja Apache nie jest dobrym rozwiązaniem.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

WG mnie to trochę podejrzane, że ClamAV się zupdatował ~2 min wcześniej, ale jak najbardziej mogą to być tylko przypuszczenia :P. Jednak w przypadku prefork'a apache'a thready się nie kończą "na raz" tylko po trochu, dlatego też odrzuciłem ilość userów.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Pudło to nic podejrzanego, a tym bardziej nie wpłynął na pracę serwera WEB.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Update i upgrade zrobiony. Niestety problem nadal występuje :(

Czy znacie jakieś narzędzie w którym mógł bym monitorować który to dokładnie plik php jest odpowiedzialny za przeciążenie apache?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

Kolego Archi, logi w takim wypadku nic mu nie powiedzą. Zakładając taką konfigurację połączenia Apache<=>PHP dzięki której widzimy obciążenie per wywołany plik na wiele to nam się nie zda przy konstrukcji dzisiejszych aplikacji kiedy to w 99% przypadków dowiemy się, że to index.php ;) W poszukiwaniu wąskiego gardła musimy już skorzystać z wew. profilerów czy też np. xdebuga i wyśledzić najbardziej problematyczne fragmenty aplikacji.

 

Ale w opisanym wyżej przypadku myślę, że nie ma co tak daleko się zapuszczać bo problem pewnie tkwi w sumie: faktycznych możliwości VPSa i tego co jest w stanie wyciągnąć w takim środowisku Apache.

 

Na pewno pierwszy krok to wywalenie Apacza, potem odpowiednie skonfigurowanie nginx+php-fpm+xcache. Potem można obserwować co się dzieje: ruch vs wykorzystanie zasobów vs poszukiwanie "wąskich gardeł".

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

(...)

Na pewno pierwszy krok to wywalenie Apacza, potem odpowiednie skonfigurowanie nginx+php-fpm+xcache. Potem można obserwować co się dzieje: ruch vs wykorzystanie zasobów vs poszukiwanie "wąskich gardeł".

 

Ten fragment mi się podoba ;).

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys
Na pewno pierwszy krok to wywalenie Apacza, potem odpowiednie skonfigurowanie nginx+php-fpm+xcache. Potem można obserwować co się dzieje: ruch vs wykorzystanie zasobów vs poszukiwanie "wąskich gardeł".

Uwierz, że na tym Apache można ustawić wydajne środowisko i FPM też będzie działał.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość nrm

Poważnie? "Pacz pan", kto by przypuszczał...

 

Wydajne, nie oznacza najwydajniejsze. Szczególnie jak masz ciasnego VPSa to ma to znaczenie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×