今回から何回かに分けて、Webサーバ用の負荷テストツールを紹介していきたいと思います。今回は有名どころのabです。
Apache標準搭載の ab(Apache Bench)とはapacheをインストールすると標準で利用できる性能測定ツールで、コマンドラインから利用します。
はじめに(ご注意ください!)
今回紹介するテストツールは、DOS攻撃にも利用出来てしまいます。テストを行う時は、サーバのURLが正しいか注意し、他人のサーバに間違ってもアクセスしないようにくれぐれもご注意願います。
実行方法
実行は大変簡単です。以下をコマンドラインで実行します。
$ ab -n 100 -c 10 http://localhost/
利用したオプションパラメータは以下の通りです。
-n: リクエスト回数
-c:同時に発行するリクエスト数
上記例の場合、合計で100リクエストを、同時発行数が10リクエストでアクセスを行います。 正確にはちょっと違いますが、上記は10クライアントが同時アクセスしてきた場合をイメージすると良いでしょう。
オプションパラメータについて
他にも、abにはオプションパラメータが存在します。結果をHTMLで表示することも可能です。 代表的なオプションを以下にリストします。
オプション | 説明 |
---|---|
-n リクエスト回数 | 総リクエスト数 |
-c リクエスト数 | 同時発行のリクエスト数 |
-w | 結果をHTML出力 |
-p ファイル名 | サーバに送信するファイルがある場合に指定 |
-T コンテンツタイプ | HTMLコンテンツヘッダを指定 |
-C ‘Cookie名称=値’ | Cookieを指定 |
-A ユーザ名:パスワード | Basic認証を行う場合に指定 |
-P ユーザ名:パスワード | プロキシ接続の場合で、パスワード設定がある場合に指定 |
-X プロキシサーバ名:ポート番号 | プロキシ接続のポート番号 |
実行結果
コマンドラインで実行すると、次のようにコンソールに出力されます。
$ ab -n 100 -c 10 http://localhost/
Server Software: Apache/2.4.6
Server Hostname: localhost
Server Port: 80
Document Path: /
Document Length: 44076 bytes
Concurrency Level: 10
Time taken for tests: 10.247 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 4453200 bytes
HTML transferred: 4407600 bytes
Requests per second: 9.76 [#/sec] (mean)
Time per request: 1024.692 [ms] (mean)
Time per request: 102.469 [ms] (mean, across all concurrent requests)
Transfer rate: 424.40 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 43 65 16.7 65 180
Processing: 309 931 383.8 829 3127
Waiting: 149 654 218.3 623 1197
Total: 367 996 384.8 880 3193
Percentage of the requests served within a certain time (ms)
50% 880
66% 1149
75% 1206
80% 1215
90% 1441
95% 1483
98% 2152
99% 3193
100% 3193 (longest request)
注目するべき項目リスト
次の項目は、パフォーマンスに大きく影響がある注目すべき値です。
name | 説明 |
---|---|
Complete requests | 総リクエスト数 |
Failed requests | 失敗したリクエスト数 |
Requests per second | 1秒あたりのリクエスト数 |
Time per request | 1リクエストの平均処理時間 |
Transfer rate | 1秒あたりのバイト数 |
Connection Times (ms) | 最小値(min)、平均値(mean[+/-sd])、中央値(median)、最大値(max)を、接続時間(Connect)、処理時間(Processing)、待ち時間(Waiting)で表記 |
Percentage of the requests served within a certain time (ms) | 時間内に処理されたリクエストの割合。「50% 880」は0.880秒以内でリクエスト処理された件数が全体の50%という意味。 |
まとめ
これほど簡単にサーバ負荷を確認出来るツールはあまりありません。コマンドを暗記しているユーザも多いでしょう。
簡易なだけに機能は限定的ですが、初期構築時やサイトが調子悪いときなど、診断的に確認をするのにちょうど良いと思います。
また、パフォーマンスに影響がありそうな改修を行った際に、すぐに確認する癖を付けておけば、それだけでも品質確保に役立つと思います。
参考
- apache(http://httpd.apache.org/)
- apache ab documentation (http://httpd.apache.org/docs/2.4/programs/ab.html)
