web-dev-qa-db-ja.com

CPUの負荷は高いが、上位のプロセスはすべて約0%

異常な高負荷とcpu utilを備えたサーバーがありますが、その理由はわかりません。 topを実行すると、すべてのprocが非常に低いCPUのように見えます。

http://cl.ly/2d1g0K3q261r0R0K3e35

これを引き起こしているものを探すより良い方法はありますか?

11
Ben

このバグ はあなたのケースだと思います。出力からわかるように、十分なメモリ(キャッシュされた14 GB程度に注意)があり、I/Oの問題はありませんが、xen関連のプロセスが実行されています。これはバグだと思います。

4
grs

負荷は、システムが1分、5分、15分の負荷を測定したものです。

最も一般的な誤解は、負荷平均が純粋にシステムのCPU使用率に関連しているというものです。
ただし、負荷には、I/Oを待機しているCPUなどの追加の測定が組み込まれていますが、これは問題だと思います。

画像に基づいて、私はあなたがメモリを使い果たし、データをディスクにスワップし始めたと推測しています。

単純なfree -mは、RAMおよびスワップの使用量を示します。
興味深い列は、-/+ buffers/cache以外の無料の列です。
ゼロに近い場合は、RAMが不足しており、それに応じて動作するはずです。

7
Mark

負荷平均がかなり高い(68、すごい)ことに注目してください。 CPUを少し消費する多くのプロセスがあり、合計するとすべてのCPU時間を消費する可能性はありますか?おそらく、これらのプロセスは非常に速く開始および終了するだけなので、topはそれらの存在をキャプチャできません。

4
Raymond Tau

試す

iotop

ほとんどの場合、IOはそれでした。

3
MarcoHager

Nfs上のロックされたファイル、または別のプロセスがアクセスする必要のあるファイルをロックするその他のもの

アクティブなスレッドが多すぎると、設定されたサービスを見逃す可能性もあります

2
John

使ってみてください:

top -o cpu

-oフラグは、CPU使用率の高い順にプロセスをtopに順序付けさせます。

2
Bandit

CPU使用率はスレッドから発生しているようです。 topはこれを考慮していないようです。私は最近これをmysqlサーバーで見ました。実行中のINSERTステートメントがありますが、mysqldのいくつかのスレッドがテーブルインデックスを更新していたため、SELECTで新しい行を取得できませんでした。 topは1つのコアで100%のユーザー負荷を示していますが、mysqldを含むすべてのプロセスは0.0%のCPUでした。数時間後、同じSELECTが予期した結果セットを提供しました。

こちらもご覧ください

スレッドごとのCPU統計の取得

'htop'プロセスとスレッドのCPU使用率?

0
StefanKaerst