WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

サーバ負荷のピークタイムを調査する

      2012/11/27

sarのインストールと設定

どの時間帯にサーバへの負荷がピークに達するのかを調査すれば、現在のサーバリソースを把握することができ、ハードウェアの増強などの判断材料にもすることができます。

sar(System Admin Reporter)というツールを利用すれば、時系列ごとのシステムの稼働情報のリポートを得ることができます。
sarはsysstatというパッケージに含まれているので、yumでインストールします。

# yum -y install sysstat

sysstatパッケージにおいて、実際にシステムの情報を収集するのはsadcというコマンドの役割です。
sadcコマンドをcronに登録して定期的に実行することによって10分毎など決められた間隔で集計を行い、各時間帯の負荷を測定できるようになります。
このように、パッケージ経由でインストールした場合は、そのようなsadcコマンドのcron設定などを自動的に行われているはずです。

# cat /etc/cron.d/sysstat
# run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A

当方の環境では、上記のように/etc/cron.d/ディレクトリ直下にsysstatという設定ファイルが作成されていました。

sarコマンドによるシステム稼働状況の参照

sarコマンドを実行すると、cronに登録されたsadcコマンドが定期収集したシステムの稼働情報のレポートをまとめて参照できます。

引数をつけずにsarコマンドを実行

# sar|less
Linux 2.6.18-238.12.1.el5xen (hoge.domain.tld)     2011年07月22日

00時00分02秒       CPU     %user     %nice   %system   %iowait    %steal     %idle
00時10分03秒       all      2.69      0.00      0.89      4.24      0.03     92.14
00時20分02秒       all      1.80      0.00      0.81      3.44      0.03     93.91
00時30分02秒       all      1.63      0.00      0.76      4.26      0.03     93.33
00時40分03秒       all      2.72      0.00      1.00      4.49      0.03     91.76
00時50分02秒       all      1.42      0.00      0.62      3.58      0.03     94.36
01時00分02秒       all      1.91      0.00      0.80      3.02      0.03     94.24
01時10分02秒       all      2.02      0.00      0.89      3.41      0.03     93.65
~(略)~
11時30分02秒       all      1.48      0.00      0.64      2.97      0.03     94.87
11時40分02秒       all      1.96      0.00      0.84      4.23      0.03     92.93
11時50分04秒       all      1.90      0.00      0.88      5.00      0.03     92.19
12時00分03秒       all      1.84      0.00      0.48      3.51      0.03     94.15
12時10分02秒       all      1.96      0.00      0.72      3.67      0.03     93.63
平均値:        all      1.85      0.00      0.76      3.46      0.03     93.91

引数をつけずにsarコマンドを実行した場合は、本日の記録を確認できます。
上記の例では本日の12時12分に実行しているので、12時10分までの記録が出力されています。

日付を指定

sadcコマンドで収集したデータは、/var/log/sadcというディレクトリ直下に保存されます。
ファイル名はsaDDという形式になっていて、”DD”の部分には日付が入り、最大で1ヶ月分のデータが保存されます。

sarコマンドに-fオプションで/var/log/sadc/saDDのようにファイル名を指定すると、指定した日付のレポートを得ることができます。
例えば、今月の15日のレポートを得る場合は以下のように実行します。

# sar -f /var/log/sa/sa15|less
Linux 2.6.18-238.12.1.el5xen (hoge.domain.tld)     2011年07月15日

00時00分02秒       CPU     %user     %nice   %system   %iowait    %steal     %idle
00時10分02秒       all      1.59      0.00      0.61      2.24      0.02     95.54
00時20分02秒       all      1.90      0.00      0.63      1.36      0.03     96.08
00時30分02秒       all      3.16      0.00      1.13      4.01      0.04     91.66
00時40分02秒       all      1.77      0.00      0.73      2.27      0.03     95.20
00時50分02秒       all      3.53      0.00      1.22      1.72      0.04     93.49
01時00分03秒       all      1.54      0.00      0.60      1.79      0.02     96.04
01時10分02秒       all      2.53      0.00      0.89      2.65      0.04     93.89
~(略)~
22時50分02秒       all      1.51      0.00      0.75      2.16      0.03     95.56
23時00分02秒       all      1.59      0.00      0.55      1.72      0.02     96.12
23時10分01秒       all      0.54      0.00      0.18      0.94      0.01     98.33
23時20分02秒       all      1.33      0.00      0.61      2.15      0.02     95.88
23時30分02秒       all      1.10      0.00      0.44      1.39      0.02     97.07
23時40分01秒       all      1.58      0.00      0.58      1.76      0.02     96.06
23時50分02秒       all      1.61      0.00      0.57      1.92      0.02     95.88
平均値:        all      1.77      0.00      0.67      2.11      0.02     95.42

リソースの種類を指定

sarコマンドでは、デフォルトではCPUの利用率が出力されますが、オプションを指定することによって、メモリやI/Oなど他のサーバリソースの状況を確認することもできます。

例えば、今月の15日のメモリとスワップの使用状況を確認するには、-rオプションを付加します。

# sar -r -f /var/log/sa/sa15|less

前述したように、様々なサーバリソースを指定できるのですが、オプションのリソースの種類の対応表を以下に作ってみました。

オプション 種類
-u CPU
-r メモリ・スワップ
-b ディスクI/O
-q ロードアベレージ

上表以外にもいろいろありますが、調べ次第追記していきます。

時間帯を指定

-sと-eオプションで時間帯を指定して確認することもできます。
例えば、15日の21時から23時の間の状況を確認するには以下のように実行します。

# sar -f /var/log/sa/sa15 -s 21:00:00 -e 23:00:00|less
Linux 2.6.18-238.12.1.el5xen (hoge.domain.tld)     2011年07月15日

21時00分01秒       CPU     %user     %nice   %system   %iowait    %steal     %idle
21時10分01秒       all      1.42      0.00      0.48      1.89      0.03     96.18
21時20分02秒       all      2.02      0.00      0.69      2.57      0.03     94.68
21時30分02秒       all      1.71      0.00      0.68      2.71      0.05     94.86
21時40分02秒       all      2.16      0.00      0.81      2.19      0.02     94.82
21時50分02秒       all      1.02      0.00      0.51      1.86      0.02     96.59
22時00分02秒       all      1.59      0.00      0.60      1.66      0.03     96.12
22時10分02秒       all      1.89      0.00      0.77      2.57      0.02     94.76
22時20分02秒       all      1.47      0.00      0.50      1.68      0.03     96.33
22時30分03秒       all      1.36      0.00      0.59      1.93      0.02     96.10
22時40分02秒       all      1.23      0.00      0.40      1.78      0.03     96.56
22時50分02秒       all      1.51      0.00      0.75      2.16      0.03     95.56
平均値:        all      1.58      0.00      0.62      2.09      0.03     95.69

 - Linux