CPU使用率は100%ですが、topにはそれを使用するプロセスは表示されません。

CPU使用率は100%ですが、topにはそれを使用するプロセスは表示されません。

まず、プロセスリストを保存するのを忘れました。サーバーを再起動する必要があるため、多くの情報を提供できませんでした。

小さなVPSがあります。トップとコントロールパネルのグラフのCPU使用率は両方とも100%で、一日中高かった(今朝Webサーバーが要求に応答しないことがわかりました)。 VPSを再起動した後、CPUは4%未満に戻ります(ただしWebサーバーを使用するため、実際の負荷はありません)。

なぜですか?このようなことが再び発生した場合、どのように調査する必要がありますか?

ベストアンサー1

カーネルプロセス、ドライバ、または割り込みでCPUを消費する可能性があります。

これは答えではなく、問題を解決する方法です。この方法のいくつかの詳細はLinuxにのみ適用されます。sysstatakaパッケージをインストール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次の-Fcronエントリを追加してください。

 57 23 * * * root rm -f /var/log/sa/sa`date --date=tomorrow +\%d`

1日後、sar -f /var/log/sa/saXX -CXXを昨日の日付に先行するゼロで始まる整数(つまり、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のプロジェクトリンク)

おすすめ記事