実稼働Linuxサーバーの1つでは、CPU使用率が100 %
を超えており、場合によっては250%
です。
どのプロセスがより多くのCPU使用率を使用しているか、どこでCPU使用率ログを見つけることができますか?
OS:RHEL 5.5
CPU使用率は、単一のCPUを基準にして測定されます。各CPUの最大値は100%であるため、4 CPUシステムの最大CPU使用率は400%になります。
top
コマンドを使用してみてください
man top
詳細については
sar
ユーティリティは、システムがオンになっている場合、システムに関するいくつかの統計を収集します。それらにアクセスする最も簡単な方法は、コマンドラインでsar
と入力することです。
はるかに優れたオプションは、Cacti、Munin、Zabbixなどの監視システムをインストールすることです。 (Nagiosはグラフを作成できますが、これは得意ではありません。)ServerFaultには、どの監視システムが最適かについて、すでに多くの質問があります。それらの1つをインストールすると、それなしでどのように生活したかを思い出すのに苦労します。
通常、これらは、どのプロセスが常にすべてのCPUを使用していたかを示しません。そのためには、その時点でのtop
またはhtop
が最善の策です。 10%のCPUを使用する25のApacheプロセスは、それぞれtop
で、250%のCPUを使用する単一のMySQLプロセスとは異なって表示されることに注意してください。
注目すべきもう1つの重要な指標は、「負荷平均」です。これは、プロセッサに接続するのを現在待機しているプロセスの数を示しています。これは、システムの使用がどれだけ遅いかを示す非常に良い指標です。
CPU使用率に関する別の注意点として、仮想マシンはVMのニーズに応じてCPU容量を動的に変更できます。 VM内からトップで9999%のCPUを使用しているように見える単一のプロセスを見ました。これに関してVMWareから提供されたアドバイスは、「VM内から測定されたメトリックを信頼しない」です。
もう1つのオプションは、ps
コマンドを使用して、CPU使用率で並べ替えることです。
ps aux --sort=+cpu
プロセス使用率のログはありません。このためにatop
のようなものをインストールすることをお勧めします。以前はGNU "システムアカウンティング"パッケージもありましたが、IIRCはあまり適していません。
私は 回答済み これと同様の質問があります。自分のニーズに合わせてそのスクリプトを拡張することをお勧めします。基本的に、コマンドps -eo pcpu,pid,user,args | sort -k 1 -r | head -n 5
は意味のある出力を提供します。それを自動化し、後で分析するために出力をログに記録することもできます。
使用率の測定に何を使用するかはわかりませんが、次のものを使用できます。
cat /proc/loadavg
他の人はトップに言及しました。
必要に応じて、cronでバッチモードでtop -b -n1 | head
を実行し、出力をどこかに保存して、上位のプロセスを追跡できます。