サーバが重い時の負荷の正体を突き止める

  • このエントリーをはてなブックマークに追加

WEB+DB PRESS Vol.65|gihyo.jp … 技術評論社.

WEB+DB PRESS の特集1「WEBエンジニアが知るべきインフラの基礎知識」が非常にまとまってて良かった。

闇雲にtopコマンドとかネットで調べながら調査してたので今後のためにもメモ。

ロードアベレージ(忙しさの度合い)

uptimeコマンドを使って見る。

[root@suusuke ~]# uptime 
 22:27:30 up 202 days, 18:48,  1 user,  load average: 0.07, 0.15, 0.08

0.07という数字は処理を実行したいが、何かしらの処理で実行できなくて待たされている状態のプロセス数

何かしらの要因とは?

  • 他のプロセスにCPUが使われていて、空くのを待っている状態(CPU使用率)
  • ディスクに読み書き要求を発行してその結果を待っている状態(I/O待ち率)

CPU使用率とI/O待ち状態

sarコマンドを使って見る。

インストール

[root@suusuke ~]# sudo yum install sysstat
[root@suusuke ~]# sudo service sysstat start

CPU使用率のレポート(-u)を3秒ごとに10回表示して終了する。

[root@suusuke ~]# sar -u 3 10
Linux 2.6.18-194.3.1.el5.028stab069.6  	2011年10月24日

22時26分12秒       CPU     %user     %nice   %system   %iowait    %steal     %idle
22時26分15秒       all      0.00      0.00      0.00      0.00      0.00    100.00
22時26分18秒       all      0.17      0.00      0.00      0.00      0.00     99.83
22時26分21秒       all      0.00      0.00      0.00      0.00      0.00    100.00
22時26分24秒       all      0.00      0.00      0.00      0.00      0.00    100.00
22時26分27秒       all      0.00      0.00      0.00      0.00      0.00    100.00
22時26分30秒       all      0.00      0.00      0.00      0.00      0.00    100.00
22時26分33秒       all      0.00      0.00      0.00      0.00      0.00    100.00
22時26分36秒       all      0.00      0.00      0.00      0.00      0.00    100.00
22時26分39秒       all      9.00      0.00      0.33      0.50      0.00     90.17
22時26分42秒       all      0.00      0.00      0.00      0.00      0.00    100.00
平均値:        all      0.92      0.00      0.03      0.05      0.00     99.00
%user
ユーザ空間でCPUが使われた時間の割合
%nice
優先度を変更されたプロセスにより、ユーザ空間でCPUが使われた時間の割合
%system
カーネル空間でCPUが使われた時間の割合
%iowait
CPUがディスクI/Oの結果を待っていた時間の割合
%steal
仮想サーバがCPUを使って待たされていた時間の割合
%idle
ディスクI/O街以外で、CPUが何もしないで待っていた時間の割合

%systemも%userも低く、%iowaitが高い場合

物理搭載メモリ量を超えてスワップが大量に発生している可能性がある。
sar -Wでスワップインとスワップアウトの状況
freeでシステム全体のメモリ使用状況
topでメモリ使用率順でソート後メモリを消費しているプロセスを特定する

%systemが高く、%iowaitも高い場合

「I/O待ち状態」となっている。
psでSTATの項目がDのものを探し特定する。
Dは割り込み不可能な待機状態を意味する。

%userが高い場合

「CPU使用率」が高い。
topでCPU使用率の高い順にソートして特定する。
また、psでプロセスの情報を見る。

[root@suusuke ~]# top

top - 22:33:23 up 202 days, 18:54,  1 user,  load average: 0.20, 0.11, 0.07
Tasks:  26 total,   1 running,  25 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.0%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2097152k total,   272144k used,  1825008k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND    

負荷のまとめチャート

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

ads

コメントを残す

*