デフォルトのabコマンドでは、指定できるURLは固定ですが複数のURLを送る方法を探したら、以下の方が作成していたのでありがたく使わせていただきました。
使い方
以下のようにパラメータを入れたテキストを準備します。
name=foo&age=10 name=bar&age=20 name=hoge&age=30
abコマンドのオプションで-R
オプションが追加されるので、先ほどのパラメータテキストファイルを指定します。
ab -R ./params.txt -c 5 -n 20 http://localhost:8080/index.php?
サーバのログを見るとテキストファイルの内容でパラメータを変えながらリクエスト送ることができています。
index.php?name=foo&age=10 index.php?name=bar&age=20 index.php?name=foo&age=10 index.php?name=bar&age=20 index.php?name=hoge&age=30 index.php?name=bar&age=20
-c
オプション使っているのでランダムに見えますが、内部的にはファイルの内容を順次処理しているようです。
取得からビルドまで
ソースからビルドする必要があるので少々面倒です。
まず、以下のURLからapache2.2.xのソースをダウンロードしてきます。
https://httpd.apache.org/download.cgi#apache22
ここでは 2.2.32
をダウンロードしてきました。
以下のように展開し、
# ダウンロードしたファイルを解凍 tar xf httpd-2.2.32.tar.gz # abのディレクトリに移動 cd ~/httpd-2.2.32/support # 元のファイルを退避 mv ab.c{,.original} # -Rオプション付きのab.cをダウンロード wget http://chrismiles.info/dev/testing/ab/ab.c
ビルドをします。
cd ../ pwd #->~/httpd-2.2.32 ./configure make
以下のバージョンになっていればOKです。 -R
オプションが使えるようになっています。
$ ~/httpd-2.2.32/support/ab -V This is ApacheBench, Version 2.0.40-dev-CM <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ $ ~/httpd-2.2.32/support/ab -h <省略> -R reqfile File containing lines to append to each request URL
後は適当にコピーするなどして使います。