Webサーバのパフォーマンスを測る : sar

Webサーバに限らずだけど、サーバのパフォーマンス測定をするときには、CPU利用率やLoadAverageなどの値を測定しておくとベター。そういうデータがあれば、httpdのセッション数の時間推移とCPU利用率の推移を突き合わてやることで、そのマシンの性能一杯を使っているのか、余裕で動いているのかの判断がしやすくなるわけだ。

Linuxであれば"sar"というコマンドを使えば、比較的簡単にCPU利用率やLoadAverageのデータを取得できるので、それを使うのがいいと思うし、自分でもそれを使ってデータ取りしていることがほとんど。

"sar"は、sysstatというパッケージに含まれているので、Debianだったら

aptitude install sysstat

CentOSでも

yum install sysstat

でインストールは完了。


使い方は簡単で

sar 10

とコマンドラインから実行すると、

# sar 10
Linux 2.6.32-5-amd64 (nexus01.downtown.jp)      10/09/10        _x86_64_        (2 CPU)
23:26:30        CPU     %user     %nice   %system   %iowait    %steal     %idle
23:26:40        all      5.05     94.10      0.85      0.00      0.00      0.00
23:26:50        all      0.10     99.65      0.25      0.00      0.00      0.00
^C

こんなふうに、10秒おきのCPU利用率のデータを表示してくれる。
でも実際には、あとから他のデータと組み合わせて使いたいわけだから、測定したいデータをファイルに出力したほうが良いので、

sar -o test.file 10 120 2>&1 > /dev/null &

という形で実行してやれば、"test.file"というファイルに10秒おき×120回で20分間のデータが取得できる。(最後に、"2>&1 > /dev/null &"をつけておくと、標準出力に結果が表示されないようになるし、バックグラウンドでデータを採ってくれる。)
取得間隔や回数は測定したい内容によって任意に変わるので、この辺は何回か試してみて、どのぐらいが値が良いのかを探って置くのが良いでしょうね。

結果を表示させたければ

sar -f test.file

と実行すれば、CPU利用率を表示してくれるので、あとはそれをログの集計結果と付き合わせることで、パフォーマンスを定量的に分析できる、と。
CPU利用率やLoadAverage以外にも、NICの通信量などのデータとしても取得しているので、適切なオプションを付けて実行すれば、それらのデータも見れるし、sysstatをインストールしておくと自動的に日々の動作状況も記録してくれるので、定常的な状態確認にも使えて便利。

なので、個人的にはインストールしておくことをお薦めしたいユーティリティだったりする。

トラックバック(1)

数年前に書いたエントリーをちょっとアップデートしておこう、ということで。 サーバの稼働状況を把握するためのツールとしては、mrtg とか、 munin と... 続きを読む

コメントする