Es gibt verschiedene Möglichkeiten, dies zu tun. Beachten Sie, dass es durchaus möglich ist, dass viele Prozesse in einem außer Kontrolle geratenen Szenario dies verursachen und nicht nur einen.
Die erste Möglichkeit besteht darin, pidstat so einzurichten, dass es im Hintergrund ausgeführt wird und Daten erzeugt.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Auf diese Weise erhalten Sie alle zehn Minuten einen detaillierten Überblick über den Betrieb des Systems. Ich würde vorschlagen, dass dies Ihre erste Anlaufstelle ist, da sie die wertvollsten / zuverlässigsten Daten liefert, mit denen Sie arbeiten können.
Dies ist vor allem dann problematisch, wenn die Box in eine außer Kontrolle geratene CPU-Schleife gerät und eine enorme Last erzeugt. Sie können nicht garantieren, dass Ihr tatsächlicher Prozess unter Last rechtzeitig ausgeführt wird (wenn überhaupt), sodass Sie die Ausgabe möglicherweise verpassen !
Die zweite Möglichkeit besteht darin, die Prozessabrechnung zu aktivieren. Möglicherweise eher eine langfristige Option.
accton on
Dies aktiviert die Prozessabrechnung (falls nicht bereits hinzugefügt). Wenn es zuvor nicht ausgeführt wurde, wird es einige Zeit dauern, bis es ausgeführt wird.
Nach einer Laufzeit von beispielsweise 24 Stunden 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 angeordnet:
- Anzahl der Anrufe
- Prozentsatz der Anrufe
- Menge an Echtzeit, die für alle Prozesse dieses Typs aufgewendet wurde.
- 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 erzeugen.
Dies unterteilt die Daten in die Gesamtmenge der CPU-Zeit (die oberste Zeile) und in die Art und Weise, wie diese CPU-Zeit aufgeteilt wurde. Die Prozessabrechnung wird nur dann ordnungsgemäß ausgeführt, wenn Prozesse gestartet werden. Daher ist es wahrscheinlich am besten, das System neu zu starten, nachdem es aktiviert wurde, um sicherzustellen, dass alle Dienste berücksichtigt werden.
Dies gibt Ihnen auf keinen Fall eine genaue Vorstellung davon, welcher Prozess möglicherweise die Ursache für dieses Problem ist, sondern vermittelt Ihnen ein gutes Gefühl. Da es sich um einen 24-Stunden-Schnappschuss handeln könnte, kann es zu verzerrten Ergebnissen kommen. Es sollte auch immer protokollieren, da es ein Kernel-Feature ist und im Gegensatz zu pidstat auch bei hoher Last immer eine Ausgabe erzeugt.
Die letzte verfügbare Option verwendet auch die Prozessabrechnung, sodass Sie sie wie oben beschrieben aktivieren können. Verwenden Sie dann jedoch das Programm "lastcomm", um Statistiken zu Prozessen zu erstellen, die zum Zeitpunkt des Problems ausgeführt wurden, sowie 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.