Skip to content
Tags

Webサーバの負荷・ロードテストツール(1)「 ab(Apache Bench)」

by : 2015/08/11

今回から何回かに分けて、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%という意味。

まとめ

これほど簡単にサーバ負荷を確認出来るツールはあまりありません。コマンドを暗記しているユーザも多いでしょう。

簡易なだけに機能は限定的ですが、初期構築時やサイトが調子悪いときなど、診断的に確認をするのにちょうど良いと思います。

また、パフォーマンスに影響がありそうな改修を行った際に、すぐに確認する癖を付けておけば、それだけでも品質確保に役立つと思います。

参考

From → テスト

現在コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。