負荷テストツールSiegeのインストールと使い方・オプション・結果の見方

SiegeはWEBサーバに負荷をかけるツールです。同様のツールとしてApache Bench, httperf, Tsung, JMeterなどありますが、私は主にJMeterとSiegeを利用しています。

siegeのインストールと使い方・オプション・結果の見方をまとめました。

それぞれ、重い負荷やシナリオ込みの負荷をかける場合はJMeter、そこそこの負荷やWEB APIへの負荷はSiegeと使い分けています。

インストール

依存ライブラリをインストール
$ sudo yum -y install gcc make openssl-devel

ダウンロード
$ curl -LO http://www.joedog.org/pub/siege/siege-2.74.tar.gz

インストール
$ tar zxvf siege-2.78.tar.gz
$ cd siege-2.78
$ ./configure
$ make && sudo make install && echo DONE 

設定ファイルをコピー
$ cp doc/siegerc ~/.siegerc 

設定ファイル

デフォルトで実行ユーザの~/.siegercを参照します。

使い方

siegeコマンドで実行します。

$ siege -c 10 -r 10 http://example.com/done.
Transactions:                    100 hits
Availability:                 100.00 %
Elapsed time:                   4.17 secs
Data transferred:               1.86 MB
Response time:                  0.13 secs
Transaction rate:              71.94 trans/sec
Throughput:                     0.45 MB/sec
Concurrency:                    9.56
Successful transactions:         100
Failed transactions:               0
Longest transaction:            0.40
Shortest transaction:           0.09

POSTリクエストは以下参照。

siegeでPOSTリクエストを送信 - OTメモ帳

実行結果の見方

項目説明
Transactions有効リクエスト数
AvailabilitySuccessful transactions / (Successful transactions + Failed transactions)
Elapsed time全てのリクエスト送信までに経過した秒数
Data transferredデータ転送量
Response time1リクエスト辺りの平均レスポンスタイム
Transaction rate秒間リクエスト数
Throughput秒間処理データ量
Concurrency平均同時接続数
Successful transactions成功リクエスト数
Failed transactions失敗リクエスト数
Longest transaction1リクエスト辺りにかかった最大秒数
Shortest transaction1リクエスト辺りにかかった最小秒数

オプション

ショートオプションロングオプション説明
-V--versionバージョン情報を表示。
-h--helpヘルプを表示。
-C--config現在の設定値を表示。
-v--verboseリクエストの詳細情報を表示。
-q--quietリクエストの詳細情報を表示しない。
-g--getGETをHEADで送信して詳細情報を表示。
-c--concurrent=NUM同時接続数。
-i--internetインターネットモード。
--fileを指定した場合に
ファイル中のURLからランダムでリクエストを送信する。
-b--benchmarkベンチマークモード。
ディレイを無効にする。
-t--time=NUMmリクエストを送信する総時間。
suffixとしてS(秒), M(分), H(時)が指定可能。
ex) --time 60S
-r--reps=NUM1接続のリクエスト回数。
-f--file=FILEリクエストファイルを指定。
-R--rc=FILE設定ファイルを指定。
-l--log[=FILE]ログファイルを指定。
-m--mark="text"ログファイルにマーキングを付与。
-d--delay=NUMリクエスト間の遅延秒数。
-H--header="text"HTTPヘッダ。
複数指定可能。
ex) --header A --header B
-A--user-agent="text"User-Agent。
-T--content-type="text"Content-Type。