私のサーバー負荷が高い理由を見つける方法はありますか?

私のサーバー負荷が高い理由を見つける方法はありますか?

非常に高い負荷(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にアップグレードした後、奇妙に高い負荷平均が消えることがあります。ただし、ハードウェアベンダーから提供された特定のドライバによって問題が発生する可能性があります。

おすすめ記事