akishin999の日記

調べた事などを書いて行きます。

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/

試した環境は CentOS 6.3 x86_64 です。

インストール

ビルドに必要なライブラリなどもあるため、まずは 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 にアクセスできるようになるので、なかなか使い勝手は良さそうです。