
Ich führe eine Laravel-Anwendung auf einem Ubuntu 14.04 Digital Ocean VPS aus und verwende New Relic zur Überwachung des Servers.
Ich habe eine E-Mail-Benachrichtigung erhalten, dass meine CPU-Auslastung über 80 % liegt. Ich habe mich bei New Relic angemeldet und jetzt wird seit 18 Stunden eine CPU-Auslastung von 99 % angezeigt. Aber wenn ich mich bei meiner Shell anmelde und „top“ ausführe, beträgt die CPU-Auslastung der Prozesse nicht einmal 10 %.
Was könnte falsch sein? Welche anderen Befehle könnte ich ausführen, um die tatsächliche Nutzung zu überprüfen und herauszufinden, warum sie so häufig genutzt wird? (Vielleicht eine Endlosschleife in der Anwendung?)
Dies ist mein htop-Ergebnis:
Und das ist htop nach Umschalt+K
Ich wäre für jeden Link und jede Hilfe sehr dankbar.
Antwort1
Ich bin mir nicht sicher, was los ist, aber ich vermute, dass die Spalte %CPU des einzelnen Prozesses nicht das aussagt, was Sie denken. Aus der Manpage von top:
k: %CPU -- CPU usage
The task’s share of the elapsed CPU time since the last screen update,
expressed as a percentage of total CPU time.
Nehmen wir an, Sie aktualisieren alle 4 Sekunden. Die gesamte CPU-Zeit, die in diesen 2 Sekunden verbraucht wird, beträgt 6 %über diese 4 Sekunden. Aber nehmen wir an, in einer dieser Sekunden hat es 24 % der CPU-Zeit verbraucht. Ich sage nicht, dass das passiert, aber es könnte sein.
Damit bin ich zufrieden top
. Ich kann die CPU-Auslastung aufgeschlüsselt nach CPU und weiter nach user
, sys
, nice
, idle
, wait
(bei I/O), Bedienung von Hardware- und Software-Interrupts (hi, si) sehen. Das können Sie wahrscheinlich htop
auch einbauen. Solange Sie 1 CPU haben, die mindestens 20 % im Leerlauf ist, gibt es eigentlich wenig Grund zur Sorge, es sei denn, Ihr Lüfter stört Sie. Aber wenn Sie sich Sorgen machen, liegt das vielleicht daran, dass %wait und %hi/%si sehr hoch sind. In diesem Fall hat kein einzelner Prozess eine hohe CPU-Auslastung, sondern der Kernel ist aus irgendeinem Grund sehr, sehr beschäftigt.
Antwort2
Ich hatte ein ähnliches Problem und habe den TOP-Befehl im Hintergrund ausgeführt und ihn in eine txt-Datei umgeleitet
oben > top.txt &
Vielen Dank, können Sie sehen, welche Prozesse Ihre CPU verschwenden
Antwort3
Es gibt einige Optionen. Ich bevorzuge das Programm htop
, das normalerweise nicht standardmäßig installiert ist, aber für fast alle Distributionen verfügbar ist. Es liefert Ihnen dieselben Informationen wie, top
aber mit einem VIEL umfangreicheren Funktionsumfang. Es ist großartig, um den Problemprozess interaktiv zu finden, aber nicht so gut für Skripting. Wenn Sie etwas in ein Überwachungsskript einbauen möchten, ps -eo pid,pcpu,comm
ist der Befehl Ihr Freund. Er druckt alle aktuellen Prozesse zusammen mit ihrer PID und CPU-Auslastung in einem ziemlich einfach zu analysierenden Format aus.
Antwort4
Was könnte falsch sein?
Erstens verwenden Sie Laravel, das viel Speicher benötigt, und Sie haben nur weniger als ein halbes Gigabyte. Sie führen es auf einem Betriebssystem aus, das nicht mehr unterstützt wird – was schlecht ist. Und Sie haben uns nichts über den Rest des Stacks erzählt (Webserver, PHP SAPI, PHP-Version).