まず、プロセスリストを保存するのを忘れました。サーバーを再起動する必要があるため、多くの情報を提供できませんでした。
小さなVPSがあります。トップとコントロールパネルのグラフのCPU使用率は両方とも100%で、一日中高かった(今朝Webサーバーが要求に応答しないことがわかりました)。 VPSを再起動した後、CPUは4%未満に戻ります(ただしWebサーバーを使用するため、実際の負荷はありません)。
なぜですか?このようなことが再び発生した場合、どのように調査する必要がありますか?
答え1
カーネルプロセス、ドライバ、または割り込みでCPUを消費する可能性があります。
これは答えではなく、問題を解決する方法です。この方法のいくつかの詳細はLinuxにのみ適用されます。sysstat
akaパッケージをインストールsar
し、sar-collection crontabを変更または追加します(RedHatシステムで/etc/cron.d/sysstat
):
* * * * * root /usr/lib64/sa/sa1 -L -F -S XALL 10 6
月に3 GB以上を蓄積できるように準備してください/var/lib/sa
。あなたのバージョンが両方サポートしていない場合は、-L
次の-F
cronエントリを追加してください。
57 23 * * * root rm -f /var/log/sa/sa`date --date=tomorrow +\%d`
1日後、sar -f /var/log/sa/saXX -C
XXを昨日の日付に先行するゼロで始まる整数(つまり、01、02、... 10、11 ... 31)として使用します。 CPU が高い期間を見つけたら、その期間の sar レポートを確認できます。
- 邪魔する(
-I ALL
) - ネットワーク使用量(
-n DEV
) - ディスク I/O(
-b
)
CPUが10時15分から10時18分の間にジャンプするのを見るとしましょう。次のように現在の日付(05)にsarを実行します。
sar -f /var/log/sa/sa05 -s 10:14:00 -e 10:19:00 -I ALL -n DEV -b | less
各側面に1分ずつ追加して視聴中だけでなく、前/中/後を視聴できます。
それでも何も表示されず、他のsarパラメータを見ましたが、まだ何も見えません。 cronに以下を追加してみてください。
* * * * * { date; /bin/ps -A --sort tty,comm,pid -ww -o pgrp:8,tty:7,pid,c,pmem:5,rss:8,sz:8,size:8=TSIZE,vsz:8,nlwp,lstart,args ;} >>/var/log/procscan
このファイルは非常に大きくなる可能性があるため、翌日ファイルを回転させるか、cronjobを無効にする必要があります。しかし、この出力で犯人を見つけることができます。
このcronjobのいくつかの問題を解決するために、ラッパースクリプトとサポートファイルセットを作成してgithubにアップロードしました。あなたはそれらを見つけることができますここ(githubのプロジェクトリンク)