Amazon EC2 を使った負荷テストツール "ec2-bench" を作りました
Posted on
- #aws
Amazon EC2 を使った負荷テストツールを作ったので紹介します。
Apache Bench で負荷テストを行うとき、実行マシンの性能や回線によっては期待通りの負荷を掛けられません。なので、複数台のマシンから負荷を掛けるわけですが、マシンを準備したり負荷ツールをうまく制御するのは実に面倒です。
というわけで、コマンド 1 つで手軽に負荷テストを行えるツール "ec2-bench" を作りました。コードは GitHub で公開しています。
その名の通り Amazon EC2 を利用しており、コマンド 1 つで複数台のインスタンスを立ち上げ、決められたパラメータで自動的に ab コマンドを実行します。わざわざ Management Console からインスタンスを立ち上げたり、ssh でログインしてセットアップする必要はありません。
また ab コマンドの実行が終わったら自動的にシャットダウンするため無駄なコストも発生しません。
ec2-bench の仕組み
AWS CLI で EC2 インスタンスの起動やタグ付けを行っています。素の Amazon Linux には ab コマンドがインストールされていないので、CloudInit を使って httpd のインストール、ab コマンドの実行、サーバのシャットダウンを行っています。
インスタンスタイプは conf ファイルで設定できますが、CPU をバーストさせられる T2 インスタンスがおすすめです。 t2.micro だと 1 時間あたり 0.02 ドルなので、仮に 100 台立ち上げても 2 ドルしかかかりません。 100 台立ち上げれば同時 10 万アクセスは再現できると思います。
MIT License で公開していますので商用利用や改変もご自由に。要望は Pull Requests でどうぞ。