Siege(スィージ)は、仮想ユーザを大量に作ってN/Wからのアクセスをシミュレートしてくれる負荷テストツールです。
パッケージ化されているので、yum(RHEL/CentOS系)やapt-get(Debian/Ubuntu系)コマンドで容易に導入できます。
HexaNASのテスト環境に負荷をかけてみたいと思います。
目次
サーバ環境
Platform:FreeBSD 11.0-RELEASE-p7
CPU:AMD Athlon 5370 Quad-Core 2.2GHz
MEM:DDR3 16GB
HDD:250GB ZFS MIRROR
Siegeの主なオプション
オプション | 意味 |
---|---|
-v, -verbose | リクエストの詳細情報を表示。 |
-q, -quiet | リクエストの詳細情報を非表示。 |
-c, -concurrent=NUM | 同時接続数。(フォルトは10)。 |
-i, -internet | --fileを指定した場合にファイル中のURLからランダムでリクエストを送信する。 |
-b, -benchmark | ベンチマークモードでリクエスト間隔を置かない(デフォルトは1秒間のリクエスト間隔を置く)。 |
-t, -time=NUMm | テストの時間を指定(S=秒、M=分、H=時間)。 |
-r, -reps=NUM | 1接続のリクエスト回数。 |
-f, -file=FILE | URLのリストファイルを指定。 |
-l, -log[=FILE] | ログファイルのパスを指定する(指定が無い場合には PREFIX/var/siege.log) |
-d, -delay=NUM | リクエスト間の間隔を指定(デフォルトは1秒) |
結果の見方
項目 | 意味 |
---|---|
Transactions | 有効リクエスト数 |
Availability | 成功率 |
Elapsed time | 全てのリクエスト送信までに要した秒数 |
Data transferred | データ転送量 |
Response time | 1リクエスト辺りの平均レスポンスタイム |
Transaction rate | 秒間リクエスト数 |
Throughput | 秒間処理データ量 |
Concurrency | 平均同時接続数 |
Successful transactions | 成功リクエスト数 |
Failed transactions | 失敗リクエスト数 |
Longest transaction | 1リクエスト辺りにかかった最大秒数 |
Shortest transaction | 1リクエスト辺りにかかった最小秒数 |
サンプル
urls.txt
http://192.168.0.1/images/header_logo.png
http://192.168.0.1/js/jquery.min.js
http://192.168.0.1/css/gui.css
http://192.168.0.1/css/login.css
http://192.168.0.1:8080/phpinfo.php
サーバ192.168.0.1に対し、同時接続数=1,000で60秒間絶え間なくリクエストを送出
$ siege --concurrent=1000 --time=60S --benchmark --internet --file=/tmp/urls.txt --log=/tmp/urls.log
項目 | 結果 |
---|---|
Transactions | 15681 hits |
Availability | 100.00 % |
Elapsed time | 59.12 secs |
Data transferred | 900.27 MB |
Response time | 0.94secs |
Transaction rate | 265.24 trans/sec |
Throughput | 15.23 MB/sec |
Concurrency | 249.87 |
Successful transactions | 15681 |
Failed transactions | 0 |
Longest transaction | 9.38 |
Shortest transaction | 0.00 |
サーバ192.168.0.1に対し、同時接続数=1,000で10要求/接続を送出
$ siege --concurrent=1000 --reps=10 --benchmark --internet --file=/tmp/urls.txt --log=/tmp/urls.log
項目 | 結果 |
---|---|
Transactions | 10000 hits |
Availability | 100.00 % |
Elapsed time | 20.51 secs |
Data transferred | 575.32 MB |
Response time | 1.69 secs |
Transaction rate | 487.57 trans/sec |
Throughput | 28.05 MB/sec |
Concurrency | 822.50 |
Successful transactions | 10000 |
Failed transactions | 0 |
Longest transaction | 13.29 |
Shortest transaction | 0.00 |
サーバ192.168.0.1に対し、同時接続数=1,000で50要求/接続を送出
$ siege --concurrent=1000 --reps=50 --benchmark --internet --file=/tmp/urls.txt --log=/tmp/urls.log
項目 | 結果 |
---|---|
Transactions | 50000 hits |
Availability | 100.00 % |
Elapsed time | 251.33 secs |
Data transferred | 2886.43 MB |
Response time | 4.75 secs |
Transactionrate | 198.94 trans/sec |
Throughput | 11.48 MB/sec |
Concurrency | 945.49 |
Successful transactions | 50000 |
Failed transactions | 0 |
Longest transaction | 28.46 |
Shortest transaction | 0.00 |
1セッションで50接続を要求するシーンはあまり無いでしょうから、1000ユーザは楽に捌けることが分かりました。
ちなみに、CPU・MEMともにMAXで20%前後の消費でした。