ďťż
 
 
   Apache2: 100% CPU bez wyraźnej przyczyny
 
 

Tematy

 
    
 

 

 

 

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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis