負荷テストツールsiegeを試す


負荷テストツールといえばab(apache bench)が有名です。
abは単一のURLに対して大量のリクエストを投げて、レスポンスを計測するというもので、リクエストパラメータやパスをランダムにすることができません。
(そういうパッチもあるみたいですが)


ランダムないくつかのパスやパラメータに対してリクエストを投げる負荷テストツールを探していて、siegeというのがあると知ったので試してみました。

Siege Home Page

インストール

とりあえずmac osxなのでbrew search siege。
見つかったのでそのままインストール。

brew install siege

準備


ランダムにリクエストする場合は、URLをテキストに書いておきます

urls.txt

http://localhost:8000/book/1/
http://localhost:8000/book/2/
http://localhost:8000/book/3/
http://localhost:8000/book/4/
http://localhost:8000/book/5/

テスト実行

concurentが同時接続数
repsが接続ごとのリクエスト数
internetを指定するとランダムにリクエストするようです

$ siege --concurrent=2 --reps=20 --internet --file=urls.txt --log=result.log

結果は標準出力に表示されます。

** SIEGE 2.72
** Preparing 2 concurrent users for battle.
The server is now under siege..      done.

Transactions:		          40 hits
Availability:		      100.00 %
Elapsed time:		       11.31 secs
Data transferred:	        2.79 MB
Response time:		        0.02 secs
Transaction rate:	        3.54 trans/sec
Throughput:		        0.25 MB/sec
Concurrency:		        0.06
Successful transactions:          40
Failed transactions:	           0
Longest transaction:	        0.02
Shortest transaction:	        0.01
    • logを指定していればファイルに以下の形式でログが表示されます
      Date & Time,  Trans,  Elap Time,  Data Trans,  Resp Time,  Trans Rate,  Throughput,  Concurrent,    OKAY,   Failed
2013-01-30 22:35:52,     40,      11.31,           2,       0.02,        3.54,        0.18,        0.06,      40,       0

[おまけ]cookieを渡す

こんな感じで--headerパラメータとして渡せばいいみたいです。

--header=Cookie: xxxx=xxxx; yyyy=yyyy;

参考: Wiki: Siege