サーバ負荷調査メモ
CPU
CPUがマルチコア場合はvmstatではなくmpstatを使うほうがよい。
mpstat -P ALL 1 1000 04:27:30 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 04:27:31 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1023.00 04:27:31 PM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1023.00
topでサブコマンドcを使ってCPU処理時間順にする
もしくは、psコマンドのCPU列を確認して負荷のプロセスを特定
プロセスを特定したらsarで更に追う
sar -x プロセスID 3 3 05:31:06 PM PID minflt/s majflt/s %user %system nswap/s CPU 05:31:09 PM 4431 0.33 0.00 0.00 0.33 0.00 0 05:31:12 PM 4431 0.00 0.00 0.00 0.00 0.00 0 05:31:15 PM 4431 0.00 0.00 0.33 0.00 0.00 0 Average: 4431 0.11 0.00 0.11 0.11 0.00
プロセス全体がCPUを使用しているのか特定スレッドがCPUを消費してるのかを調査するにはps に-Lをつける。
ps -eo user,%cpu,%mem,pid,lwp,vsz,rss,sz,comm -L
sar -W 1 1000 Linux 2.6.18-308.1.1.el5 (localhost.localdomain) 04/12/2012 05:39:22 PM pswpin/s pswpout/s 05:39:23 PM 0.00 0.00 05:39:24 PM 0.00 0.00 05:39:25 PM 0.00 0.00
vmstatのRSS(Resident set size)は物理メモリの占有率
slabの状況を見るには
cat /proc/meminfoのSLab:
slabstat
I/O
iostat -x 3 1000 avg-cpu: %user %nice %system %iowait %steal %idle 0.12 0.90 0.82 1.74 0.00 96.42 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 1.52 2.70 5.20 1.16 130.61 30.94 25.38 0.06 9.44 3.24 2.06 sda1 0.23 0.00 0.02 0.00 0.49 0.00 26.55 0.00 3.49 2.70 0.01 sda2 1.29 2.70 5.18 1.16 130.07 30.93 25.38 0.06 9.46 3.25 2.06 dm-0 0.00 0.00 6.41 3.87 129.83 30.93 15.65 0.18 17.08 2.00 2.06 dm-1 0.00 0.00 0.02 0.00 0.19 0.00 8.00 0.00 8.47 0.52 0.00
util(デバイスのビジー率)の項目を見る。この数値が定常的に100%に近ければ、そのハードウェアデバイスが処理しきれなくなっている可能性がある。
avgqu-sz:I/O待ち行列数
avgqu-wa = await - svctm:I/Oの処理待ち時間
await:I/Oの要求から処理完了までの時間
I/O待ち行列数、待ち時間ともに上昇傾向でutilが100%に近ければデバイスの処理能力超えている。
ネットワーク
パケットエラー
netstat -s
IP,TCPでパケットロスト、エラー、バッファあふれがないか。