|
Apache2: 100% CPU bez wyraźnej przyczyny
marecek - 22-09-2009 14:18
Jak w temacie: pacjent to Apache/2.2.3 (Debian4) PHP/5.2.0-8+etch15 mod_ssl/2.2.3 OpenSSL/0.9.8c Server Built: Jul 29 2009 10:30:58. Usługi obsługiwane to klasyczne fora php+mysql (vbulletin x2 + phpby przemo x2).
Z niewiadomych przyczyn po starcie apache-a obciążenie szybuje w stronę 100%. Dzieje się to sporadycznie od tygodnia. Do dziś wystarczyło "obrócić" usługę httpd i wszystko wracało do normy. Aktualnie - serwer jest non stop w pełni obciążony nawet po restarcie usługi. Okazuje się też, że apache będzie konsumował 100% zasobów nawet, jeśli pozbawię go folderu www (tzn. obetnę gałąź, w której zgromadzone są wszystkie zasoby publikowane). Restart usługi sprawia, że sytuacja normuje się na kilka minut, po czym obciążenie wraca do 100%.
Nie zanotowałem żadnych nadmiernych prób wyłudzenia hasła (fail2ban ubija średnio 5 delikwentów dziennie, liczba ta nie rośnie), na serwerze nie pracują żadni użytkownicy, obciążenie jest na stałym poziomie (tzn. na forach przebywa stała ilość użytkowników, a rozkład dobowy obciążenia jest przewidywalny i w miarę stały od lat).
Co ciekawe nie widać żadnego negatywnego wpływu tego zjawiska na czas ładowania stron obsługiwanych przez tego apache-a.
Poniżej zrzuty z webminstats: http://www.206club.net/ext/pass/aerror1.png
i w większej skali: http://www.206club.net/ext/pass/aerror2.png
atop pokazuje coś takiego:
ATOP - localhost 2009/09/22 14:15:51 10 seconds elapsed PRC | sys 0.24s | user 19.72s | #thr 218 | #zombie 0 | #exit 8 | CPU | sys 3% | user 197% | irq 0% | idle 0% | wait 0% | cpu | sys 2% | user 98% | irq 0% | idle 0% | cpu000 w 0% | cpu | sys 0% | user 100% | irq 0% | idle 0% | cpu001 w 0% | MEM | tot 3.8G | free 713.2M | cache 1.1G | buff 59.5M | slab 208.5M | SWP | tot 2.0G | free 1.5G | | vmcom 3.2G | vmlim 3.9G | DSK | sda | busy 1% | read 0 | write 173 | avio 0 ms | DSK | sdb | busy 0% | read 1 | write 36 | avio 0 ms | NET | transport | tcpi 886 | tcpo 962 | udpi 0 | udpo 0 | NET | network | ipi 886 | ipo 967 | ipfrw 0 | deliv 886 | NET | dev eth0 | pcki 814 | pcko 896 | in 132 Kbps | out 644 Kbps | NET | dev lo | pcki 72 | pcko 72 | in 9 Kbps | out 9 Kbps |
PID SYSCPU USRCPU VGROW RGROW USERNAME THR ST EXC S CPU CMD 1/4 15265 0.00s 2.56s 0K 0K www-data 1 -- - R 26% apache2 15502 0.00s 2.50s 0K 0K www-data 1 -- - R 25% apache2 15258 0.00s 2.43s 0K 0K www-data 1 -- - R 24% apache2 15456 0.00s 2.41s 0K 0K www-data 1 -- - R 24% apache2 15386 0.01s 2.26s 0K 0K www-data 1 -- - R 23% apache2 15153 0.00s 2.20s 0K 0K www-data 1 -- - R 22% apache2 15004 0.00s 2.20s 0K 0K www-data 1 -- - R 22% apache2 2553 0.16s 0.89s 0K 0K mysql 69 -- - S 10% mysqld 17400 0.02s 0.70s 768K 788K www-data 1 -- - S 7% apache2 16696 0.00s 0.24s 0K 0K www-data 1 -- - S 2% apache2 17300 0.00s 0.20s -1792K -1412K www-data 1 -- - S 2% apache2 17095 0.00s 0.18s 512K 184K www-data 1 -- - S 2% apache2 17412 0.01s 0.16s -3328K -3156K www-data 1 -- - S 2% apache2 17404 0.00s 0.15s -2560K -2356K www-data 1 -- - S 2% apache2 17249 0.00s 0.11s 1280K 1188K www-data 1 -- - S 1% apache2 17406 0.00s 0.10s 0K 8K www-data 1 -- - S 1% apache2
...natomiast server-status w ogóle wydaje się nie być świadomym obciążenia, które generuje apache:
Apache Server Status for localhost Server Version: Apache/2.2.3 (Debian) PHP/5.2.0-8+etch15 mod_ssl/2.2.3 OpenSSL/0.9.8c Server Built: Jul 29 2009 10:30:58
--------------------------------------------------------------------------------
Current Time: Tuesday, 22-Sep-2009 13:58:03 CEST Restart Time: Tuesday, 22-Sep-2009 13:43:16 CEST Parent Server Generation: 0 Server uptime: 14 minutes 46 seconds Total accesses: 32899 - Total Traffic: 116.6 MB CPU Usage: u109.86 s6.59 cu0 cs0 - 13.1% CPU load 37.1 requests/sec - 134.7 kB/second - 3715 B/request 112 requests currently being processed, 16 idle workers KKKKKKKKKWK_KKKKK_WKKKKKKKK.K_KKKKK.K.KKKKKKKKKKKKK.KWK..KKK.KK. KK.K.WKKW_K._KKKK.KKW.KKK_KKKK.WWKKK_K_KK_.CK_KK_K_KK.KWK._.K_KK KKKK.__.KKKKKK..KKKWKK.......................................... ................................................................
Macie jakiś pomysł jak wyśledzić i ubić ten problem?
I.L.O. - 24-09-2009 17:57
To wygląda tak jakby apache miał mnóstwo procesów, a powinien być tylko jeden.
PiotrSz - 24-09-2009 18:40
Nie masz nic w logach (np. nie możność podłączenia gniazda)?
P.S. Apache nie działa na jednym procesie :)
marecek - 24-09-2009 22:59
Nie masz nic w logach (np. nie możność podłączenia gniazda)?
P.S. Apache nie działa na jednym procesie :)
Fakt, Apache zawsze mi generuje tyle procesów, ile ustawię zmienną maxclients.
Czy możesz rozwinąć czym jest "nie możność podłączenia gniazda" ? (tzn. nie bardzo wiem co to są gniazda...).
lessmian2 - 25-09-2009 08:11
Możesz zamieścić jakieś logi?
PiotrSz - 25-09-2009 09:21
Faktycznie wyraziłem się dość niejasno. Chodziło mi o coś w stylu "unable to connect socket" Możesz sprawdzić jeszcze ruch tcpdump'em.
fnmirk - 25-09-2009 15:18
PiotrSz, czym wersja angielska wypowiedzi różni się od polskiej?
nie możność podłączenia gniazda
unable to connect socket
marecek - 28-09-2009 12:08
Możesz zamieścić jakieś logi?
Czy możesz powiedzieć, o które dzienniki konkretnie Ci chodzi? Przyglądałem się dość intensywnie dziennikom (apache, syslog, auth.log) i w momencie wystąpienia problemu nie dzieje się kompletnie nic nadzwyczajnego. Ot tak po prostu apache zaczyna zużywać po prostu najpierw 100% jednego, a później 100% drugiego rdzenia procesora.
Zaczynam się zastanawiać czy to nie ma przypadkiem podłoża sprzętowego...
lessmian2 - 28-09-2009 12:21
Miałem na myśli głownie logi Apache. Ale jeśli mówisz że nie ma w nich nic ciekawego, to cóż. Możesz jeszcze ustawić poziom logów na Debug, ale podejrzewam że zabije to serwer do końca (choć nie wiem czy da sie jeszcze bardziej). I sprawdź może netstatem ilość połączeń w czasie występowania problemu. Apache korzysta z modułu mpm_prefork czy jakiegoś innego?
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|