CPU > 80% - どうすればデバッグできますか?

CPU > 80% - どうすればデバッグできますか?

私は Ubuntu 14.04 Digital Ocean VPS で Laravel アプリケーションを実行しており、New Relic を使用してサーバーを監視しています。

CPU 使用率が 80% を超えたというメール アラートを受け取りました。New Relic にログインしたところ、CPU 使用率が 18 時間にわたって 99% と表示されています。しかし、シェルにログインして「top」を実行すると、プロセスの CPU 使用率は合計で 10% にも達しません。

何が問題なのでしょうか? 実際の使用状況を確認するために実行できる他のコマンドはどれですか? また、何がそれほど多く使用されているのでしょうか? (おそらく、アプリケーションで無限ループが発生しているのでしょうか?)

これが私のhtopの結果です:

ここに画像の説明を入力してください

そしてこれはShift+Kの後のhtopです

ここに画像の説明を入力してください

リンクやサポートがあれば、ぜひ教えてください。

答え1

何が起こっているのかは分かりませんが、個々のプロセスの %CPU 列が、あなたが思っているような情報を提供していないのではないかと思います。top のマニュアルページから引用します。

  k: %CPU  --  CPU usage
  The task’s share of the elapsed CPU time since the last screen update,
  expressed as a percentage of total CPU time. 

4秒ごとに更新しているとします。この2秒間に消費されるCPU時間の合計は6%です。その4秒間でしかし、そのうちの 1 秒間に、CPU 時間が 24% も消費されたとします。これが実際に起こっていると言っているわけではありませんが、その可能性はあります。

ここに満足していますtop。CPU 使用率が CPU 別に分類され、さらに、、、、 (I/O)、ハードウェアおよびソフトウェア割り込み (hi、si) の処理別に分類されているのがわかります。これuserもおそらく取得できるでしょう。少なくとも 20% アイドル状態の CPU が 1 つある限り、ファンが煩わしくない限り、実際に心配することはほとんどありません。しかし、心配な場合は、%wait と %hi/%si が非常に高いことが原因である可能性があります。その場合、個々のプロセスで CPU 使用率が高くなっているわけではなく、カーネルが何らかの理由で非常にビジー状態になっています。sysniceidlewaithtop

答え2

私も同様の問題を抱えており、バックグラウンドでTOPコマンドを実行し、txtファイルにリダイレクトしました

トップ > top.txt &

どのプロセスがCPUを浪費しているかがわかります

答え3

いくつかのオプションがあります。私の好みは、htop通常はデフォルトでインストールされませんが、ほぼすべてのディストリビューションで利用できるプログラムです。 と同じ情報を提供しますtopが、はるかに豊富な機能セットを備えています。 対話的に問題のあるプロセスを見つけるのに最適ですが、スクリプトには適していません。 監視スクリプトに何かを組み込みたい場合は、 コマンドがps -eo pid,pcpu,comm役立ちます。 このコマンドは、現在のすべてのプロセスとその PID および CPU 使用率を、解析しやすい形式で出力します。

答え4

何が問題なのでしょうか?

まず、大量のメモリを必要とする Laravel を使用していますが、メモリは 0.5 GB 未満しかありません。サポート対象外のオペレーティング システムで実行しています。これはよくありません。また、スタックの残りの部分 (Web サーバー、PHP SAPI、PHP バージョン) については何も説明されていません。

関連情報