解決策 1:
これを行うには、いくつかの方法があります。暴走シナリオでは、1 つだけではなく、多数のプロセスが原因である可能性が十分にあることに注意してください。
最初の方法は、pidstat をセットアップしてバックグラウンドで実行し、データを生成することです。
pidstat -u 600 >/var/log/pidstats.log & disown $!
これにより、システムの実行状況を 10 分間隔で非常に詳細に把握できます。最も価値があり信頼できるデータが得られるので、これを最初の寄港地にすることをお勧めします。
これには問題があります。主に、ボックスが暴走した cpu ループに入り、巨大な負荷が発生する場合です。実際のプロセスが負荷中にタイムリーに実行されることが保証されていないため (実行されたとしても)、実際に出力を見逃す可能性があります。 !
これを確認する 2 つ目の方法は、プロセス アカウンティングを有効にすることです。おそらく長期的な選択肢です。
accton on
これにより、プロセス アカウンティングが有効になります (まだ追加されていない場合)。以前に実行されていなかった場合は、実行に時間がかかります。
たとえば 24 時間実行された後、そのようなコマンドを実行できます (このような出力が生成されます)。
# 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
列は次のように並べられています:
<オール>探しているのは、ユーザー/システム CPU 時間を最も多く生成するプロセス タイプです。
これにより、データが CPU 時間の合計 (一番上の行) として分類され、次にその CPU 時間がどのように分割されたかが示されます。プロセス アカウンティングは、プロセスが生成されたときにのみ適切にアカウンティングされるため、すべてのサービスがアカウンティングされていることを確認するために、システムを有効にした後にシステムを再起動するのがおそらく最善です。
これは、この問題の原因がどのプロセスであるかを実際に明確に示すものではありませんが、良い感触を与えるかもしれません. 24 時間のスナップショットである可能性があるため、結果が歪む可能性があるため、その点に注意してください。また、カーネル機能であるため、常にログに記録する必要があり、pidstat とは異なり、負荷が高い場合でも常に出力が生成されます。
利用可能な最後のオプションもプロセス アカウンティングを使用するため、上記のように有効にできますが、プログラム「lastcomm」を使用して、問題が発生した頃に実行されたプロセスの統計と、各プロセスの CPU 統計を生成します。
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
これにより、問題の原因についてのヒントも得られる可能性があります。
解決策 2:
Atop は、プロセス レベルへのドリルダウンを調べるのに特に便利なデーモンであり、デフォルトでこのデータを 28 日間アーカイブします。優れたリアルタイム監視インターフェースを提供するだけでなく、これらのログ ファイルを開いてステップスルーするように指定できます。
この記事では機能の概要を説明しています。詳細については、マンページを参照してください。
本当に素晴らしいソフトウェアです。
解決策 3:
psmon や monit などのプログラムが役に立つかもしれません。これらは、システムで実行されているプロセスを監視でき、しきい値 (CPU 使用率、メモリ使用率など) を超えた場合に、何が起こっているかについての電子メール レポートを送信するように設定できます。
不正なプロセスを自動的に再起動することもできます。