CPU > 80% - どのようにデバッグしますか?

CPU > 80% - どのようにデバッグしますか?

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

CPU使用率が80%を超えたというEメール通知を受け取りました。 New Relicにログインしましたが、18時間のCPU使用率は99%で表示されます。ただし、シェルにログインして「top」を実行すると、プロセスの総CPU使用率は10%にもなりません。

何が間違っている可能性がありますか?実際の使用量を確認するために他のどのコマンドを実行することができますか? (アプリケーションに無限ループがある可能性があります。)

私のhtopの結果は次のとおりです。

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

Shift+K 以降の htop です。

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

すべてのリンクや助けをいただきありがとうございます。

答え1

何が起こっているのかはよくわかりませんが、個々のプロセスの%CPU列は、それが何を意味すると思うかを教えていないようです。上部のマンページから:

  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ごとに分類され、さらに、、、、、usersysI / Oで)ハードウェアniceおよびソフトウェア割り込みサービス(hi si idlewaitに分類されることがわかります。htopおそらくこれも入れてみることができると思います。 20%以上のアイドル状態のCPUが1つあれば、ファンが邪魔しない限り心配する必要はありません。ただし、気になる場合は%waitと%hi / %siが非常に高い場合があります。この場合、単一プロセスのCPU使用率が高くなく、むしろ何らかの理由でカーネルが非常に忙しくなります。

答え2

同様の問題がありました。バックグラウンドでTOPコマンドを実行し、txtファイルにリダイレクトしました。

トップ>トップ。txt&

ありがとうございます。どのプロセスがCPUを無駄にしているかを確認できます。

答え3

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

答え4

何が間違っている可能性がありますか?

まず、あなたは多くのメモリを必要とするLaravelを使用しており、半分のメモリを持っていません。サポートされていないオペレーティングシステムで実行しています。これは良くありません。残りのスタック(Webサーバー、PHP SAPI、PHPバージョン)についてはまだ教えていません。

関連情報