Apache zawiesza się na „żądanie odczytu”, a PID zajmuje 100% procesora
Niedawno, częściowo pokrywając się z niektórymi aktualizacjami serwera (chociaż wprowadzono kilka zmian), Apache zaczął kończyć się tym, że niektóre jego procesy utknęły w stanie „żądania odczytu”. Każdy PID, który wejdzie w ten stan, zajmuje 100% procesora i ma bardzo mało, co jest z nim zgodne i kolejny zawieszony proces (zgodnie z lsof) - niektóre mają otwarte połączenia TCP/IP, inne oczekujące, niektóre tylko nasłuchują na www.
Schemat wygląda następująco:
- zrestartuj apache
- poczekaj chwilę (minuty)
- otrzyma proces "żądania odczytu" zombie, procesor zacznie działać
- przybywa więcej zombie, wszystko nie pokrywa się z niczym oczywistym
- Obciążenie procesora osiąga 15-40 w zależności od tego, kiedy ostatnio to zauważyłem.
- GOTO 1
Cały ten cykl trwa od 30 minut do 4 godzin, w zależności od mojej zdolności do wykonania kroku 1 w odpowiednim czasie.
status serwera daje mi:
R_.__.K._K.._._...._........W...................................................................................................................................................................................................................................Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current processSrv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 24363 0/1/7 R 0.46 447 844 0.0 0.00 0.26 ? ? ..reading..
[followed by a bunch of entirely normal requests]
Oczywiście na pasku stanu serwera brakuje kluczowych informacji, które pomogłyby mi w usuwaniu błędów.
Nie udało mi się wyśledzić tego do niczego konkretnego. Próbowałem lsof, netstat przeglądając dzienniki (chociaż jest mnóstwo dzienników do przejrzenia. Nic oczywistego nie wyszło). W ruchu sieciowym nie ma przeskoku, a serwer aktywnie obsługuje wiele losowych witryn internetowych, co utrudnia śledzenie połączeń przychodzących.
Początkowo rozpoczęło się to od starszej instalacji Lenny'ego, więc zacząłem częściową aktualizację pakietu do Squeeze. Jak dotąd żadne aktualizacje nie spowodowały, że to zniknęło (chociaż na szczęście dostaję dobre, świeże oprogramowanie!).
Poza początkiem
debuguj sam Apache
http://httpd.apache.org/dev/debugging.html, czy jest coś jeszcze, co można zrobić, aby spróbować znaleźć źródło problemu?
Detale:
Debian Lenny/Squeeze (głównie Lenny. Niektóre komponenty zostały zaktualizowane do Squeeze) z Linuksem 2.6.32-5-xen-amd64 na hoście Debian Squeeze Xen.
Pre-fork Apache2 MPM (2.2.16-6 + squeeze7)
Moduły: libapache2-mod-fastcgi, libapache2-mod-perl2, libapache2-mod-php5, libapache2-mod-python, libapache2-mod-scgi, libapache2-mod-wsgi, libapache2-modxslt, libapache2-svn
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od: