公開日:2012/06/06、更新日:2013/03/23
ApacheBench(略称ab)は、apache HTTP Serverに付属しているWebサーバのパフォーマンス測定ツールです。Webサーバ上の単一ファイルへのアクセスを行い、秒間でどのくらいのリクエストを処理する事が出来るか等を測定します。
Webサーバのパフォーマンスを向上させるために、Webサーバ設定ファイルの調整を行う際に一緒にベンチマークを行う事が多いと思います。
また、アプリケーションサーバやWebアプリケーション自体のパフォーマンスチューニングを視野に入れた測定も可能になると思います。その際は、アクセスするファイルを、jspやphp等の動的ファイルにしたり、Webアプリケーションの構成を考慮したファイルにする等の考慮を入れてください。
以下に、ApacheBenchの使い方と、良く使うオプション、レポート表示で注目する値を記載しています。
ApacheBenchの使い方
apacheをインストールすると、apacheのbinディレクトリに「ab」実行ファイルがあります。このファイルがApacheBenchの実行ファイルです。
簡単な使い方は以下です。
./ab -n 100 -c 10 http://<ターゲットホスト>/
これは、同時接続数を「10」で、計「100」リクエストを発行する、という事です。
実行結果は以下です。
# ./ab -n 100 -c 10 http://(測定対象サイト)/ This is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking (測定対象サイト) (be patient).....done Server Software: Apache Server Hostname: (測定対象サイト) Server Port: 80 Document Path: / Document Length: 10103 bytes Concurrency Level: 10 Time taken for tests: 0.538 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1046500 bytes HTML transferred: 1010300 bytes Requests per second: 185.72 [#/sec] (mean) Time per request: 53.846 [ms] (mean) Time per request: 5.385 [ms] (mean, across all concurrent requests) Transfer rate: 1897.96 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 0.4 1 2 Processing: 9 52 35.9 49 196 Waiting: 8 50 35.7 47 194 Total: 10 52 35.9 49 198 Percentage of the requests served within a certain time (ms) 50% 49 66% 57 75% 61 80% 67 90% 94 95% 134 98% 180 99% 198 100% 198 (longest request) #
この実行結果の「Requests per second」に注目すると、「秒間で約186リクエストを処理できる」というレポートになっている事が読み取れます。
ApacheBenchで純粋にWebサーバのみのパフォーマンスを計測したい場合は、ネットワーク環境に依存しないように、計測対象のWebサーバとネットワーク的に近い位置から(可能であればローカルLANの同一セグメントから)測定すると良いと思います。
よく使うオプション
以下がよく使うオプションです。
-n requests | 評価するリクエスト数 |
-c concurrency | 同時接続数 |
-t timelimit | 試験を実行する秒数(レスポンスを待つ時間) |
-w | 結果を HTML table タグで表示する |
-i | GET の代わりに HEAD を使う |
-k | HTTP KeepAlive を用いる |
-e filename | 実行の進捗結果をCSVで保存する |
その他、ファイルのPOSTを行ったり、cookieを渡したり、BASIC認証に対応したり等の、いくつかの便利なオプションがあります。
レポート表示で注目する値
何を測定するかによりますが、表示される実行結果の中でも、私が特に注目して見るべき項目は以下になります。
Failed requests | 失敗したリクエスト数。この数値は、負荷試験にて処理できなかったリクエスト数が表示される |
Requests per second | 1秒間あたりで処理されたリクエスト数 |
Transfer rate | 1秒間あたりで転送された容量 |
Connection Times | ※Connect,Processing,Waiting,Total の各値を見ます。 |
お世話になります。windows7でコマンド窓にて実行し、
====================================================================
C:\Users\Jspark\Documents\MyWork\負荷テスト\apaceh_ab>ab -n 100 -c 10 http://160.xxx.xxx.xxx/
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 160.xxx.xxx.xxx (be patient)…bind: 要求したプロトコルと互換性がな
いアドレスを使用しました。 (730047)
C:\Users\Jspark\Documents\MyWork\負荷テスト\apaceh_ab>
=================================================================
のような結果が出てました。
どうすれば接続できるでしょうか。ご教授お願いします。
※ URLはマスク処理しました。
私の環境はLinuxですので、ググってみたところ、次のURLが見つかりました。
http://www.apachelounge.com/viewtopic.php?p=20603
これによると環境依存の問題かもしれませんね。
お使いのWindows7端末は、2つのネットワークセグメントに接続している、もしくは、VPNで繋げている、などではないでしょうか?
それであれば、abコマンドのオプション「-B」(Address to bind to when making outgoing connections)を使うと良いかもしれません。
例:ab -n 100 -c 10 -B http://160.xxx.xxx.xxx/
これで駄目だったら、分からないです。すいません・・・。