この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
Web開発では負荷テストというとjmeter や ab を思い浮かべますが、今回はマシン単体に直接負荷をかけるツール「stress」を使用します。
■ このツールの便利なところ3点
- インストール手順が簡単。
- ネットワークには余計な負荷をかけない。
- 使い方が簡単でリソースの使用量を直接指定できる。
■ 入手からインストールまでの流れは次のとおりです。
入手方法:下記ページにてダウンロードしました。
http://weather.ou.edu/~apw/projects/stress/
今回調査したかったマシンのOSは CentOS6 でしたのでリンク先の下記 rpmファイルをインストールすることにしました。
http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/stress-1.0.2-1.el6.rf.i686.rpm
インストール:
# rpm -ivh stress-1.0.2-1.el6.rf.i686.rpm
警告: stress-1.0.2-1.el6.rf.i686.rpm: ヘッダ V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
準備中... ########################################### [100%]
1:stress ########################################### [100%]
ちなみに Debian系といった apt が使用できるOSでは apt-get install stress でインストールできるそうです。
使い方について:
引数を渡さずに実行すると使用方法が表示されます。
# stress
`stress' imposes certain types of compute stress on your system
Usage: stress [OPTION [ARG]] ...
-?, --help show this help statement
--version show version statement
-v, --verbose be verbose ← 詳細なメッセージを出力
-q, --quiet be quiet
-n, --dry-run show what would have been done
-t, --timeout N timeout after N seconds ← 負荷をかける時間を指定
--backoff N wait factor of N microseconds before work starts
-c, --cpu N spawn N workers spinning on sqrt() ← CPU負荷をかけるワーカーの数を指定
-i, --io N spawn N workers spinning on sync() ← IO負荷のワーカー数
-m, --vm N spawn N workers spinning on malloc()/free() ← メモリ負荷のワーカー数
--vm-bytes B malloc B bytes per vm worker (default is 256MB)← 使用するメモリ量を指定
--vm-stride B touch a byte every B bytes (default is 4096)
--vm-hang N sleep N secs before free (default is none, 0 is inf)
--vm-keep redirty memory instead of freeing and reallocating
-d, --hdd N spawn N workers spinning on write()/unlink()
--hdd-bytes B write B bytes per hdd worker (default is 1GB)
--hdd-noclean do not unlink files created by hdd workers
Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size)
好みの引数を渡して実行してください。別のプロンプトで接続し top や vmstat などを表示していると負荷状態の変化が見れて面白いです。
例:メモリ負荷をどんどん上げていく。
stress –cpu 2 –io 2 –vm 2 –vm-bytes 512M –timeout 60s
stress –cpu 2 –io 2 –vm 2 –vm-bytes 1024M –timeout 600s
stress –cpu 2 –io 2 –vm 2 –vm-bytes 2048M –timeout 1200s
stress –cpu 2 –io 2 –vm 2 –vm-bytes 4096M –timeout 1200s
stress –cpu 2 –io 2 –vm 2 –vm-bytes 3072M –timeout 1200s
負荷の上げ過ぎで stress が起動しなくなったのでさげた。
タイムアウト設定した時間より前に停止させるには Ctrl + C を押します。
必要なライブラリ:
# ldd /usr/bin/stress
linux-gate.so.1 => (0x00d0c000)
libm.so.6 => /lib/libm.so.6 (0x0048c000)
libc.so.6 => /lib/libc.so.6 (0x00e3a000)
/lib/ld-linux.so.2 (0x008d9000)
インストールがうまくいかない場合などご参照ください。