
非常に高い負荷(75!)がシステムにクラッシュしたため、CentOS 6.3システムをリモートで再起動する必要がありました。 WordPress ブログ (mySQL + PHP) を提供する Web/メールサーバーです。
原因を分析して把握できるログはありますか?
昨日のイベントに関してシステムから受け取った電子メールは次のとおりです。
This is an automated message notifying you that the 5 minute load average on your system is 75.91.
This has exceeded the 10 threshold.
One Minute - 83.24
Five Minutes - 75.91
Fifteen Minutes - 39.35
top - 22:25:30 up 122 days, 7:28, 0 users, load average: 99.14, 80.70, 42.31
Tasks: 298 total, 1 running, 297 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.2%us, 0.5%sy, 0.0%ni, 98.1%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1020176k total, 956828k used, 63348k free, 2788k buffers
Swap: 4194296k total, 1391900k used, 2802396k free, 25164k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19352 448 444 S 0.0 0.0 0:08.27 /sbin/init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kthreadd]
3 root RT 0 0 0 0 S 0.0 0.0 0:09.43 [migration/0]
4 root 20 0 0 0 0 S 0.0 0.0 1884:48 [ksoftirqd/0]
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 [migration/0]
6 root RT 0 0 0 0 S 0.0 0.0 0:06.06 [watchdog/0]
7 root RT 0 0 0 0 S 0.0 0.0 0:07.81 [migration/1]
8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 [migration/1]
9 root 20 0 0 0 0 S 0.0 0.0 7:25.62 [ksoftirqd/1]
10 root RT 0 0 0 0 S 0.0 0.0 0:04.58 [watchdog/1]
11 root 20 0 0 0 0 S 0.0 0.0 4:48.95 [events/0]
12 root 20 0 0 0 0 S 0.0 0.0 9:13.85 [events/1]
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [cgroup]
14 root 20 0 0 0 0 S 0.0 0.0 0:08.21 [khelper]
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [netns]
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [async/mgr]
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [pm]
18 root 20 0 0 0 0 S 0.0 0.0 0:21.72 [sync_supers]
19 root 20 0 0 0 0 S 0.0 0.0 0:20.65 [bdi-default]
20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kintegrityd/0]
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kintegrityd/1]
22 root 20 0 0 0 0 S 0.0 0.0 5:26.09 [kblockd/0]
23 root 20 0 0 0 0 S 0.0 0.0 0:22.90 [kblockd/1]
これが役に立つかどうかわかりません。
すべてがCPUを0%使用しているようです。
ここに別のメールがあります。
This is an automated message notifying you that the 5 minute load average on your system is 70.53.
This has exceeded the 10 threshold.
One Minute - 94.79
Five Minutes - 70.53
Fifteen Minutes - 32.68
top - 22:23:34 up 122 days, 7:26, 0 users, load average: 96.88, 74.74, 35.91
Tasks: 283 total, 2 running, 281 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.2%us, 0.5%sy, 0.0%ni, 98.1%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1020176k total, 970440k used, 49736k free, 3196k buffers
Swap: 4194296k total, 1249404k used, 2944892k free, 29836k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6715 apache 20 0 217m 7804 3252 D 1.9 0.8 0:00.28 /usr/sbin/httpd -k start -DSSL
6770 apache 20 0 218m 8772 3368 D 1.9 0.9 0:00.28 /usr/sbin/httpd -k start -DSSL
6799 apache 20 0 301m 8088 3184 D 1.9 0.8 0:00.14 /usr/sbin/httpd -k start -DSSL
7265 root 20 0 15160 1220 808 R 1.9 0.1 0:00.02 /usr/bin/top -c -b -n 1
7266 root 20 0 15160 1220 808 R 1.9 0.1 0:00.02 /usr/bin/top -c -b -n 1
1 root 20 0 19352 448 444 S 0.0 0.0 0:08.27 /sbin/init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [kthreadd]
3 root RT 0 0 0 0 S 0.0 0.0 0:09.43 [migration/0]
4 root 20 0 0 0 0 S 0.0 0.0 1884:48 [ksoftirqd/0]
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 [migration/0]
6 root RT 0 0 0 0 S 0.0 0.0 0:06.06 [watchdog/0]
7 root RT 0 0 0 0 S 0.0 0.0 0:07.81 [migration/1]
8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 [migration/1]
9 root 20 0 0 0 0 S 0.0 0.0 7:22.58 [ksoftirqd/1]
10 root RT 0 0 0 0 S 0.0 0.0 0:04.58 [watchdog/1]
11 root 20 0 0 0 0 S 0.0 0.0 4:48.95 [events/0]
12 root 20 0 0 0 0 S 0.0 0.0 9:13.85 [events/1]
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [cgroup]
14 root 20 0 0 0 0 S 0.0 0.0 0:08.21 [khelper]
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [netns]
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [async/mgr]
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [pm]
18 root 20 0 0 0 0 S 0.0 0.0 0:21.72 [sync_supers]
はい、私はApacheを使用しています。 75は過去5分間の負荷平均です。
答え1
使用されているスワップの量を見ると、スワップが原因である可能性があることがわかります。 vmstatの出力は問題シナリオでこれをよりよく示しています。
vmstat 1 30
しかし、topやvmstatは事後問題の診断には適していません。
私の一般的なアドバイスは、このパッケージをインストールすることですsysstat
。これにより、システム指標を定期的に保存してからその情報を検索できますsar
。 Sysstatはさまざまな詳細で構成できますが、デフォルト設定ではCPU使用率、システム負荷、ページング、および交換の予備的な概要を提供します。
yum install sysstat
sar
sar -q
sar -B
sar -W
しかし、これがうまくいかない場合は、さらに詳しく調べることをお勧めします。プロセスキュー(負荷平均)に加えて、一般的なパフォーマンス指標を使用してすぐに確認できない作業が進行中である可能性があります。 1つの可能性は、CPUがあまりにも多くの割り込み要求を処理し、システムに残っている使用可能な処理時間中にプロセスがキューに入れられることです。
もしそうなら、/proc/interruptsでいくつかの手がかりを見つけることができます。
cat /proc/interrupts
ネットワークアダプタやローカルタイマーが異常に多数の割り込みを表示しているのでしょうか?
これは、慣れ親しんで次のperf
問題が発生するのを待つことに起因する可能性があります。問題が発生したらすぐにロギングを開始するか、平均負荷が高いときにトリガーされるスクリプトを使用してプロセスを自動化します。
perf record -a
perf report
Perfはシステム操作の非常に詳細なビューを提供しますが、大量のデータを収集してかなりのオーバーヘッドを引き起こすため、継続的に実行するのは非現実的です。
CentOS 6.3の場合、ローカルタイマーに関連するカーネルソースコードのバグを修正するCentOS 6.4にアップグレードした後、奇妙に高い負荷平均が消えることがあります。ただし、ハードウェアベンダーから提供された特定のドライバによって問題が発生する可能性があります。
答え2
ロギングによる一部のシステム監視がないと、事後に高いシステム負荷の原因を特定することは困難です。
パフォーマンスの低下の一般的な原因は、RAMの枯渇によるシステムスラッシングです。
ほとんどのUnixシステムでは、スラッシングは高い負荷を発生させませんが、Linuxはこの指標でI / Oを待つプロセスを考慮しているので、ここでもそうです。
答え3
どのプロセスに問題があるかを確認するには、次の手順を実行します。
実行top -H
(-H
表示スレッドの有効化)
キーボードショートカットはバージョンによって異なります。
以前のバージョン(3.3以前?)の場合:
Shift+を押してoソートオプションを呼び出します。
次に、wプロセスの状態でソートします。
その後、Enterホームページに戻ります。
次にShift+をR使用してソートを逆にします。
最新のトップ(3.3?以上)を使用:
fフィールドオプションを読み込むには押します。
矢印キーを使ってに行き、S = Process Status
を押しますs。ホームページに戻る
にはタップします。 +を押すとソートが逆になります。q
ShiftR
次に、その列S
のD
プロセスを見つけますR
(今すぐ上にある必要があります)。これはシステム負荷に影響を与えるプロセスです。
プロセスが表示されたら、D
「邪魔されずにスリープ」を意味します。通常、これはプロセスがI / O(ディスク、ネットワークなど)を待っているときに発生します。
プロセスにマークが表示された場合は、R
通常の計算を実行していることを意味します。
これらのプロセスが実行する操作の詳細については、次の手順を実行してください。
古いトップと一緒に:
f次に、yそのフィールドを有効にするにはタップしますWCHAN
。
新しいトップと一緒に:
fフィールドオプションを読み込むには押します。
矢印キーを使って に移動し、WCHAN = Sleeping in Function
を押してd有効にします。
その後、qホームページに戻ります。
システムに必要なカーネルオプションがあり、wchanファイルがシステムに存在する場合(どこか、名前が何なのか忘れてしまいました)、このWCHAN
フィールドは現在のプロセスで実行されているカーネル機能を表示する必要があります(フィールドにすべての項目に対してaまたは-
aのみが表示されている場合はサポート?
されません)。
ここでGoogleを検索しても大丈夫でしょう。
wchanのサポートがなければ、いつでもstrace
プロセスを見て、彼らがやっていることを確認できますが、これは難しい方法です。