apachebench-for-multi-url で複数 URL のベンチマーク
Apache 付属のベンチマークツール、Apache Bench(ab コマンド)は簡単に導入できて気軽に使えるのでお気に入りなんですが、残念ながら複数の URL を指定したベンチマークに対応していません。
何とかする方法はないか調べてみたところ、独自のオプションを追加して複数 URL に対応した「apachebench-for-multi-url」というものを見つけたので使ってみました。
apachebench-for-multi-url - ApacheBench for Multi URL
http://code.google.com/p/apachebench-for-multi-url/
インストール
ビルドに必要なライブラリなどもあるため、まずは yum から通常の ab コマンドをインストールしました。
# yum install httpd-tools
デフォルトでは以下のバージョンの ab コマンドがインストールされます。
# ab -V This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
ab コマンドのソースコードは Apache 本体に付属しているため、Apache のソースコードを取得します。
# cd /usr/local/src/ # wget http://ftp.riken.jp/net/apache//httpd/httpd-2.2.24.tar.gz # tar xzf httpd-2.2.24.tar.gz # cd httpd-2.2.24
support ディレクトリの下に ab.c があるので、このファイルを apachebench-for-multi-url のもので上書きしてから make します。
# wget -O support/ab.c http://apachebench-for-multi-url.googlecode.com/files/ab.c # ./configure # make
これで support ディレクトリの下に ab コマンドが作成されています。
バージョンを確認してみます。
# cd support/ # ./ab -V This is ApacheBench, Version 2.4.1 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/
オプションを確認すると -L オプションが追加されていました。
# ./ab /usr/local/src/httpd-2.2.24/support/.libs/lt-ab: wrong number of arguments Usage: /usr/local/src/httpd-2.2.24/support/.libs/lt-ab [options] [http://]hostname[:port]/path Options are: ・ ・ ・ -L Use URL list file name, eg. url.txt
生成されたファイルで /usr/bin/ab を上書きすればインストールは完了です。
# cp ab /usr/bin/
使ってみる
使い方は簡単で、以下のように一行に一つ URL が記述された形式のテキストファイルを用意します。
# cat url.txt
http://dev01/images/anmitsu.jpg
http://dev01/images/yokan.jpg
http://dev01/images/shiratama.jpg
http://dev01/images/kintsuba.jpg
http://dev01/images/monaka.jpg
http://dev01/images/oshiruko.jpg
http://dev01/images/chimaki.jpg
あとは通常の ab コマンドと同じで、URL を指定する箇所のみ「-L」オプションを指定して作成した URL リストを渡すようにします。
# ab -c 1 -n 100 -L url.txt
Web サーバ側のアクセスログを確認すると URL リストに指定した URL がアクセスされている事が確認できます。
試してみた感じでは、ランダムではなくリストに記述した順序で繰り返しアクセスしているように見えました。
一旦導入してしまえば ab の使いやすさそのままに、オプションを指定するだけで複数 URL にアクセスできるようになるので、なかなか使い勝手は良さそうです。