So finden Sie die Ursache für die wachsende Serverlast

12

Ich habe Ladeprobleme mit meinem Server und obwohl ich ein etwas erfahrener Linux-Administrator bin, habe ich jetzt keine Ideen mehr.

Das Problem ist eine langsam aber stetig zunehmende Belastung des Servers ohne erkennbaren Grund.

Der Server ist ein AMD Athlon 64 X2 Dual Core Prozessor 6000+ mit 6 GB RAM. Es läuft Debian Stable mit Linux gir 2.6.26-2-amd64 # 1 SMP Mi Aug 19 22:33:18 UTC 2009 x86_64 GNU / Linux.

Auf dem Server laufen grundsätzlich Lighttpd, mehrere FastCGI-PHP-Prozesse und eine MySQL-Datenbank. Typische Webserver-Aufgaben.

Die CPU ist nie wirklich voll ausgelastet und der Speicher wird hauptsächlich für Puffer und Cache verwendet, was in Ordnung ist. Ich habe versucht, die verschiedenen Dienste neu zu starten, um zu sehen, ob einer von ihnen die Last wieder verringern würde, aber ohne Glück.

Hier sind Grafiken, die Last, CPU und IOStat zeigen:

Die Frage ist also: Was kann eine langsam aber stetig wachsende Last verursachen? Und wie finde ich heraus, was dafür verantwortlich ist?

Update: Ich habe vergessen zu erwähnen, dass beim Neustart des Servers die Last auf 0,3 bis 0,6 sinken und in den nächsten Wochen langsam wieder ansteigen wird.

Andreas Göhr
quelle
1
Die von Ihnen geposteten Bilder sind nicht mehr vorhanden. Bitte laden Sie sie erneut hoch, wenn Sie noch Kopien haben.
Michael Hampton

Antworten:

6

Jeder Zombie-Prozess erhöht die Last um 1,0. Möglicherweise sehen Sie eine Ansammlung von Zombies.


quelle
Ja. Überprüfen Sie das Diagramm " Anzahl der Prozesse ".
Teddy
Wenn das richtig war, for N in {1..100} ; do sleep 60 & done ; exec sleep 500sollte das Tippen ausreichen, um eine hohe Last zu verursachen. Aber das tut es nicht. Dieser Befehl erzeugt 100 Zombies, aber die Last auf meinem Computer blieb unter 1.
Kasperd
5

Bei der Beantwortung einer anderen Frage habe ich einen hervorragenden Hinweis gefunden .

Die Suche nach Prozessen im Status 'D' zeigt vier PHP-Prozesse, die eine Weile zu hängen scheinen und den "Schritten" in der Lastkurve entsprechen:

#> ps aux | awk '$8 ~ /D/  { print $0 }'
wiki      6651  0.0  0.0      0     0 ?        D    Oct04   0:41 [php-cgi]
bugs      6731  0.0  0.0      0     0 ?        D    Oct27   0:14 [php-cgi]
manpages  7536  0.0  0.0      0     0 ?        D    Oct30   0:21 [php5-cgi]
wiki     23847  0.0  0.0      0     0 ?        D    Oct06   1:32 [php-cgi]

Das scheint also das Problem zu sein. Ich muss jetzt herausfinden, während diese Prozesse hängen und wie man es regelt. Vielen Dank an alle.

Andreas Göhr
quelle
Diese Antwort hat mein Problem gelöst. Die Last stieg von 0,5 auf 350 und stieg weiter an. Dies lag daran, dass Zombie-Prozesse versuchten, einen gelöschten Remote-Ordner zu lesen.
Philippe Delteil
2

Ich vermute, dass der Server IO ausgehungert ist. Vielleicht sollten Sie die iotop-Statistiken zu den Grafiken hinzufügen

Ich frage mich, ob Sie eine Aktivität pro Anwendung haben können, die auch ein Faktor für die Serverauslastung ist

http://rt.wiki.kernel.org/index.php/I/Otop_utility

anderes tool ist dstat

Mariuz
quelle
Ich habe auch Grafiken für IOStat hinzugefügt. Das Platten-E / A erhöht sich nicht wie die Last. Ist es das, was Sie anstrebten?
Andreas Gohr
Oh und dstat sieht nützlich aus. Ich muss ein bisschen mehr darüber lesen.
Andreas Gohr
2

Wenn es I / O wäre, würde er das iowait (pink) auf den CPU-Diagrammen sehen.

3molo
quelle
0

Diese Art von Problemen kam häufig von der Festplatte, die nicht schnell genug ist, um die für die MySQL-Datenbank und den HTTP-Server erforderlichen Daten bereitzustellen. Sie sollten sich den Befehl iostat ansehen


quelle
IO sieht für mich normal aus. Und es würde nicht erklären, warum die Last langsam zunimmt.
Andreas Gohr
-1

Im Allgemeinen ist es keine schlechte Sache, eine hohe Serverauslastung zu haben. es bedeutet, dass Sie nicht untätig sitzen und weniger tun, als Sie es sonst könnten. 80% -90% Auslastung Ihrer Gesamtkapazität (mit einigen "Burst" -Räumen) ist normalerweise gefragt. Ich würde empfehlen, die Ausgabe von mpstat und vmstat zu überprüfen. Insbesondere die ersten zwei Zahlen von vmstat können Ihnen aussagekräftigere Informationen darüber geben, wie "gesichert" Sie in Bezug auf Prozesse in der Ausführungswarteschlange sind. Die letzte Spalte ("wa") der vmstat-Ausgabe gibt an, ob und wie lange Sie auf den Abschluss der E / A warten. Die Größe der Ausführungswarteschlange und die E / A-Wartezeit hängen häufig zusammen. Schauen Sie sich auch sar (aus dem sysstat-Paket) an: Damit erhalten Sie einen detaillierten Überblick darüber, was sich über einen bestimmten Zeitraum abspielt. Die Messdaten, die es aufzeichnet, sind sehr gründlich.


quelle