Lösung 1:
Es gibt mehrere Möglichkeiten, wie Sie dies tun können. Beachten Sie, dass dies durchaus durch viele Prozesse in einem außer Kontrolle geratenen Szenario verursacht werden kann, nicht nur durch einen.
Die erste Möglichkeit besteht darin, pidstat so einzurichten, dass es im Hintergrund läuft und Daten produziert.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Dadurch erhalten Sie in 10-Minuten-Intervallen einen recht detaillierten Überblick über den Betrieb des Systems. Ich würde vorschlagen, dass dies Ihre erste Anlaufstelle ist, da es die wertvollsten/zuverlässigsten Daten liefert, mit denen Sie arbeiten können.
Es gibt ein Problem damit, vor allem, wenn die Box in eine außer Kontrolle geratene CPU-Schleife gerät und eine große Last erzeugt - Sie können nicht garantieren, dass Ihr tatsächlicher Prozess während des Ladens rechtzeitig ausgeführt wird (wenn überhaupt), sodass Sie die Ausgabe tatsächlich verpassen könnten !
Die zweite Möglichkeit, danach zu suchen, besteht darin, die Prozessabrechnung zu aktivieren. Möglicherweise eher eine langfristige Option.
accton on
Dadurch wird die Prozessabrechnung aktiviert (falls noch nicht hinzugefügt). Wenn es vorher nicht ausgeführt wurde, wird es einige Zeit dauern, bis es ausgeführt wird.
Nachdem er beispielsweise 24 Stunden lang ausgeführt wurde, können Sie einen solchen Befehl ausführen (der eine Ausgabe wie diese erzeugt)
# sa --percentages --separate-times
108 100.00% 7.84re 100.00% 0.00u 100.00% 0.00s 100.00% 0avio 19803k
2 1.85% 0.00re 0.05% 0.00u 75.00% 0.00s 0.00% 0avio 29328k troff
2 1.85% 0.37re 4.73% 0.00u 25.00% 0.00s 44.44% 0avio 29632k man
7 6.48% 0.00re 0.01% 0.00u 0.00% 0.00s 44.44% 0avio 28400k ps
4 3.70% 0.00re 0.02% 0.00u 0.00% 0.00s 11.11% 0avio 9753k ***other*
26 24.07% 0.08re 1.01% 0.00u 0.00% 0.00s 0.00% 0avio 1130k sa
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28544k ksmtuned*
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28096k awk
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 29623k man*
7 6.48% 7.00re 89.26% 0.00u 0.00% 0.00s
Die Spalten sind wie folgt geordnet:
- Anzahl der Anrufe
- Prozentsatz der Anrufe
- Menge an Echtzeit, die für alle Prozesse dieses Typs aufgewendet wird.
- Prozentsatz.
- Benutzer-CPU-Zeit
- Prozentsatz
- System-CPU-Zeit.
- Durchschnittliche IO-Aufrufe.
- Prozentsatz
- Befehlsname
Was Sie suchen, sind die Prozesstypen, die die meiste Benutzer-/System-CPU-Zeit generieren.
Dadurch werden die Daten in die Gesamtmenge der CPU-Zeit (obere Reihe) und dann in die Aufteilung dieser CPU-Zeit unterteilt. Verarbeiten Sie Accounts nur ordnungsgemäß, wenn sie eingeschaltet sind, wenn Prozesse spawnen, daher ist es wahrscheinlich am besten, das System neu zu starten, nachdem Sie es aktiviert haben, um sicherzustellen, dass alle Dienste berücksichtigt werden.
Dies gibt Ihnen keineswegs eine genaue Vorstellung davon, welcher Prozess die Ursache für dieses Problem sein könnte, gibt Ihnen jedoch ein gutes Gefühl. Da es sich um einen 24-Stunden-Schnappschuss handeln könnte, besteht die Möglichkeit verzerrter Ergebnisse, also denken Sie daran. Es sollte auch immer protokollieren, da es sich um eine Kernel-Funktion handelt und im Gegensatz zu Pidstat auch bei hoher Belastung immer eine Ausgabe erzeugt.
Die letzte verfügbare Option verwendet auch die Prozessabrechnung, sodass Sie sie wie oben einschalten können, aber dann das Programm "lastcomm" verwenden, um einige Statistiken von Prozessen zu erstellen, die zum Zeitpunkt des Problems ausgeführt wurden, zusammen mit CPU-Statistiken für jeden Prozess.
lastcomm | grep "May 8 22:[01234]"
kworker/1:0 F root __ 0.00 secs Tue May 8 22:20
sleep root __ 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa X root pts/0 0.00 secs Tue May 8 22:49
ksmtuned F root __ 0.00 secs Tue May 8 22:49
awk root __ 0.00 secs Tue May 8 22:49
Dies könnte Ihnen auch einige Hinweise geben, was das Problem verursachen könnte.
Lösung 2:
Atop ist ein besonders praktischer Daemon für die Betrachtung von Drilldowns auf die Prozessebene und archiviert diese Daten standardmäßig für 28 Tage. Abgesehen davon, dass Sie eine fantastische Echtzeit-Überwachungsschnittstelle präsentieren, können Sie diese Protokolldateien angeben, um sie zu öffnen und durch sie zu gehen.
Der Artikel gibt eine Vorstellung von den Fähigkeiten, und Sie können mehr auf der Manpage finden.
Es ist wirklich ein wunderbares Stück Software.
Lösung 3:
Programme wie psmon und monit könnten für Sie hilfreich sein. Diese können die auf Ihrem System laufenden Prozesse überwachen und wenn ein Schwellenwert (CPU-Auslastung, Speicherauslastung ...) überschritten wird, können Sie festlegen, dass sie Ihnen einen E-Mail-Bericht über die Vorgänge senden.
Es ist auch möglich, die fehlerhaften Prozesse automatisch neu zu starten.