Pocket

ApacheBench

  • add this entry to hatena bookmark

公開日: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 の各値を見ます。

読者登録はいかがでしょうか? RSS配信中です。

Pocket

2 thoughts on “ApacheBench

  1. お世話になります。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/
      これで駄目だったら、分からないです。すいません・・・。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。