この記事でyesコマンドを使って負荷をかける方法を紹介しました。今度は別の方法で負荷をかけてみます。意図的にサーバに負荷をかけてZABBIX等の監視のテストなどを行うことができます。
yesコマンドではCPUに対しての負荷をかけることしかできませんでした。今回紹介する方法は、CPU,HDD,メモリに対して負荷をかけることができる専用のプログラムです。
■コマンド名は【stress】
stressコマンドというものです。意図的にLinuxサーバに対して負荷をかけることができます。
■インストール手順
CentOS6であれば、yumコマンドですぐにインストールすることができます。epelリポジトリの設定が必要です。epelリポジトリ追加方法はcentosで外部リポジトリ epelを追加するを参考にしてください。
yum install stress
■使い方例
▼CPUに負荷をかける方法例
stress --cpu 2 --timeout 2m
上記のコマンドで、2つのstressプロセスが起動し、2分間sqrt()を実行し続けるというものです。これはCPU負荷のテストが出来ます。CPUの数を変更すると、その数だけプロセスが起動します。
▼メモリを利用しまくって圧迫する例
stress --vm 2 --vm-bytes 1G --timeout 2m
上記の例だと2プロセスstressプロセスが起動し、ひとつのプロセスあたり1GBのメモリを利用し、2分間続けるようになります。合計で2GBメモリを消費することになります。
▼組み合わせて使うことも可能
CPU、メモリに対して両方負荷をかける事もできます。CPU負荷も高く、メモリ利用率も高い状態を再現できます。
stress --cpu 4 --vm 4 --vm-bytes 2G --timeout 1m
■多彩なオプションがあります
利用できるオプションは以下のとおりです。yesコマンドでの負荷をかける行為が簡易的なものだとすると、こちらは結構本格的にいろいろな形で負荷をかけることができるようになっています。
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()
-i, --io N spawn N workers spinning on sync()
-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 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)
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).
実際に動いているサイトで負荷試験をやり過ぎると、サイトが重くなったりするので気をつけましょう。
参考にしてみてください。では。