ab - リファレンスマニュアル、オプション、コマンド例


名前

ab - Apache HTTP サーバーベンチマークツール

概要

ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -E client-certificate file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -l ] [ -m HTTP-method ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path

まとめ

ab は、Apache Hypertext Transfer Protocol (HTTP) サーバーのベンチマークを行うためのツールです。これは、現在の Apache インストールがどのように実行されるかの印象を与えるように設計されています。これは特に、Apache インストールが処理できる 1 秒あたりのリクエスト数を示します。

オプション

-A auth-username:password

BASIC 認証資格情報をサーバーに提供します。ユーザー名とパスワードは 1 つの : で区切られ、base64 でエンコードされてワイヤ上で送信されます。文字列は、サーバーがそれを必要とするかどうかに関係なく送信されます (つまり、必要な 401 認証を送信しました)。

-b windowsize

TCP 送受信バッファのサイズ (バイト単位)。

-B local-address

発信接続を確立するときにバインドするアドレス。

-c concurrency

一度に実行する複数のリクエストの数。デフォルトは一度に 1 つのリクエストです。

-C cookie-name=value

リクエストに Cookie: 行を追加します。引数は通常、名前=値のペアの形式になります。このフィールドは繰り返し可能です。

-d

「XX [ms] 以内に配信された割合の表」を表示しません。 (レガシーサポート)。

-e csv-file

パーセンテージ (1% から 100%) ごとに、リクエストのそのパーセンテージを処理するのにかかった時間 (ミリ秒単位) を含むカンマ区切り値 (CSV) ファイルを作成します。通常、これは「gnuplot」ファイルよりも便利です。結果はすでに「ビン化」されているためです。

-E client-certificate-file

SSL Web サイトに接続する場合は、提供された PEM 形式のクライアント証明書を使用してサーバーで認証します。ファイルには、クライアント証明書、中間証明書、秘密キーが含まれることが想定されています。 2.4.36 以降で利用可能です。

-f protocol

SSL/TLS プロトコル (SSL2、SSL3、TLS1、TLS1.1、TLS1.2、または ALL) を指定します。 TLS1.1 および TLS1.2 のサポートは 2.4.4 以降で利用可能です。

-g gnuplot-file

すべての測定値を「gnuplot」または TSV (タブ区切り値) ファイルとして書き出します。このファイルは、Gnuplot、IDL、Mathematica、Igor、さらには Excel などのパッケージに簡単にインポートできます。ラベルはファイルの最初の行にあります。

-h

使用状況情報を表示します。

-H custom-header

リクエストに追加のヘッダーを追加します。通常、引数は有効なヘッダー行の形式で、コロンで区切られたフィールドと値のペア (つまり、"Accept-Encoding: zip/zop;8bit") が含まれます。 )。

-i

GET の代わりに HEAD リクエストを実行します。

-k

HTTP KeepAlive 機能を有効にすると、つまり 1 つの HTTP セッション内で複数のリクエストが実行されます。デフォルトはキープアライブなしです。

-l

応答の長さが一定でない場合は、エラーを報告しません。これは動的ページに役立ちます。 2.4.7 以降で利用可能です。

-m HTTP-method

リクエストのカスタム HTTP メソッド。 2.4.10 以降で利用可能です。

-n requests

ベンチマーク セッションで実行するリクエストの数。デフォルトでは、単一のリクエストのみを実行します。これにより、通常は代表的ではないベンチマーク結果が得られます。

-p POST-file

POSTするデータを含むファイル。 -T も忘れずに設定してください。

-P proxy-auth-username:password

途中で BASIC 認証資格情報をプロキシに提供します。ユーザー名とパスワードは 1 つの : で区切られ、base64 でエンコードされてワイヤ上で送信されます。文字列は、プロキシがそれを必要とするかどうかに関係なく送信されます (つまり、必要な 407 プロキシ認証を送信しました)。

-q

150 を超えるリクエストを処理する場合、ab は 10% または 100 リクエストごとに進行状況カウントを stderr に出力します。 -q フラグは、これらのメッセージを抑制します。

-r

ソケット受信エラー時に終了しないでください。

-s timeout

ソケットがタイムアウトになるまで待機する最大秒数。デフォルトは 30 秒です。 2.4.4以降で利用可能です。

-S

中央値と標準偏差の値を表示しません。平均と中央値が標準偏差の 1 倍または 2 倍を超えて離れている場合は、警告/エラー メッセージも表示しません。デフォルトは最小/平均/最大値です。 (レガシーサポート)。

-t timelimit

ベンチマークに費やす最大秒数。これは内部的に -n 50000 を意味します。これを使用して、一定の合計時間内でサーバーのベンチマークを実行します。デフォルトでは時間制限はありません。

-T content-type

POST/PUT データに使用するコンテンツ タイプ ヘッダー。 application/x-www-form-urlencoded。デフォルトはテキスト/プレーンです。

-u PUT-file

PUTするデータを含むファイル。 -T も忘れずに設定してください。

-v verbosity

詳細レベルを設定します - 4 以上ではヘッダーの情報が出力され、3 以上では応答コード (404、200 など)、2 が出力されます。上記は警告と情報を出力します。

-V

バージョン番号を表示して終了します。

-w

結果を HTML テーブルに出力します。デフォルトのテーブルは 2 列幅で、背景は白です。

-x <table>-attributes

テーブルの属性として使用する文字列。属性はテーブルのここに挿入されます。

-X proxy[:port]

リクエストにはプロキシ サーバーを使用します。

-y <tr>-attributes

の属性として使用する文字列。

-z <td>-attributes

の属性として使用する文字列。

-Z ciphersuite

SSL/TLS 暗号スイートを指定します (openssl 暗号を参照)

出力

次のリストでは、ab によって返される値について説明します。

Server Software

最初の成功した応答のサーバー HTTP ヘッダーで返される値 (存在する場合)。これには、最初から 10 進数値 32 の文字 (最も注目すべきもの: スペースまたは CR/LF) が検出されるまでのヘッダー内のすべての文字が含まれます。

Server Hostname

コマンドラインで指定されたDNSまたはIPアドレス

Server Port

ab が接続しているポート。コマンドラインでポートが指定されていない場合、デフォルトで http の場合は 80、https の場合は 443 になります。

SSL/TLS Protocol

クライアントとサーバー間でネゴシエートされるプロトコル パラメータ。これは、SSL が使用されている場合にのみ出力されます。

Document Path

コマンドライン文字列から解析されたリクエスト URI。

Document Length

これは、最初に正常に返されたドキュメントのバイト単位のサイズです。テスト中にドキュメントの長さが変更された場合、応答はエラーとみなされます。

Concurrency Level

テスト中に使用される同時クライアントの数

Time taken for tests

これは、最初のソケット接続が作成された瞬間から最後の応答を受信するまでにかかる時間です。

Complete requests

受信した成功した応答の数

Failed requests

失敗とみなされたリクエストの数。数値が 0 より大きい場合は、接続、読み取り、不正なコンテンツの長さ、または例外が原因で失敗したリクエストの数を示す別の行が出力されます。

Write errors

書き込み中に失敗したエラー(パイプ破損)の数。

Non-2xx responses

200 系列の応答コードに含まれない応答の数。すべての応答が 200 の場合、このフィールドは出力されません。

Keep-Alive requests

Keep-Alive リクエストが発生した接続の数

Total body sent

テストの一部としてデータを送信するように構成されている場合、これはテスト中に送信された合計バイト数です。テストに送信する本文が含まれていない場合、このフィールドは省略されます。

Total transferred

サーバーから受信した合計バイト数。この数値は本質的に、ネットワーク上で送信されたバイト数です。

HTML transferred

サーバーから受信したドキュメントの合計バイト数。この数値には、HTTP ヘッダーで受信したバイト数は含まれません。

Requests per second

これは 1 秒あたりのリクエスト数です。この値は、リクエストの数をかかった合計時間で割った結果です。

Time per request

リクエストごとに費やされる平均時間。最初の値は同時実行 * 所要時間 * 1000/完了の式で計算され、2 番目の値は所要時間 * 1000/完了の式で計算されます。

Transfer rate

合計読み取り/1024/所要時間 という式で計算される転送率

バグ

固定長の静的に宣言されたさまざまなバッファーがあります。コマンド ライン引数、サーバーからの応答ヘッダー、およびその他の外部入力の遅延解析と組み合わせると、これが厄介になる可能性があります。

HTTP/1.x は完全には実装されていません。一部の「予期される」形式の応答のみを受け入れます。 strstr(3) のかなり頻繁な使用がプロファイルの一番上に表示されており、パフォーマンスの問題を示している可能性があります。つまり、 サーバーのパフォーマンスではなく絶対のパフォーマンスを測定します。