現在多くのWebストレステストツールは有料ですが、Apacheには無料のストレステストツールであるabツール(コマンド)が付属しています。具体的には、Apache のルート ディレクトリの bin ディレクトリに ab.exe ファイルがあります。これを使用して、独自のプログラムのパフォーマンスを大まかにテストします。
具体的な使い方は以下の通りネットより抜粋。間違いがある場合は修正してください。
フォーマット
ab [オプション] [http://]ホスト名[:ポート]/パス
パラメータ
-n リクエスト 実行するリクエストの数
//テストセッションで実行されたリクエストの数。デフォルトでは、リクエストは 1 つだけ実行されます
-c concurrency 実行する複数のリクエストの数
//一度に生成されるリクエストの数。デフォルトは一度に 1 つです。
-t timelimit 応答を待つ最大秒数
//テストが行われる最大秒数。その内部の暗黙的な値は -n 50000 です。サーバーのテストを一定の合計時間に制限できます。デフォルトでは、時間制限はありません。
-p postfile POSTするデータを含むファイル
//POST する必要があるデータを含むファイル。
-T content-type POST用のコンテンツタイプヘッダー
//POST データで使用されるコンテンツ タイプのヘッダー情報。
-v 冗長性 印刷するトラブルシューティング情報の量
// 表示される情報の詳細度を設定します。4 以上の場合はヘッダー情報が表示され、3 以上の場合は応答コード (404、200 など) が表示され、2 以上の場合は警告やその他の情報が表示されます。 -V バージョン番号を表示して終了します。
-w 結果を HTML テーブルに出力します
//結果をHTMLテーブル形式で出力します。デフォルトでは、背景が白の 2 列幅の表です。
-i GET の代わりに HEAD を使用します
//GET ではなく HEAD リクエストを実行します。
-x 属性 テーブル属性として挿入する文字列
//
-y 属性 tr 属性として挿入する文字列
//
-z 属性 td または th 属性として挿入する文字列
//
-C 属性 Cookie を追加します (例: Apache=1234)。
//-C cookie-name=value リクエストに Cookie: 行を追加します。 その典型的な形式は、名前=値のパラメータのペアです。このパラメータは繰り返し可能です。
-A 属性 基本 WWW 認証を追加する属性
-P 属性 基本プロキシ認証を追加する属性
//-P proxy-auth-username:password BASIC 認証の信頼をリレー プロキシに提供します。ユーザー名とパスワードは : で区切られ、base64 エンコードで送信されます。この文字列は、サーバーが要求するかどうか (つまり、401 認証要件コードが送信されるかどうか) に関係なく送信されます。
-X proxy:port 使用するプロキシサーバーとポート番号
-V バージョン番号を出力して終了します
-k HTTP キープアライブ機能を使用します
-d 提供されたテーブルのパーセンタイルを表示しません。
-S 信頼度の推定値と警告を表示しません。
-g filename 収集したデータをgnuplot形式のファイルに出力します
-e filename 提供されるパーセンテージを含む CSV ファイルを出力します
-h 使用法情報 (このメッセージ) を表示します
//-attributes 属性の文字列を設定します。欠陥のあるプログラムには、静的に宣言されたさまざまな固定長バッファがあります。さらに、コマンド ライン引数、サーバー応答ヘッダー、その他の外部入力の解析は簡単ではないため、望ましくない結果を招く可能性があります。これは HTTP/1.x の完全な実装ではなく、特定の「予期される」応答形式のみを受け入れます。 strstr(3) を頻繁に使用すると、パフォーマンスの問題が発生する可能性があります。つまり、サーバーのパフォーマンスではなく ab をテストしている可能性があります。
多くのパラメーターがありますが、通常は -c パラメーターと -n パラメーターのみを使用します。例:
cmd を開き、次のコードを入力します。
cd C:Apache2.2bin
ab -n 1000 -c 100 [url]http://zf.guqin.com/index/index[/url]
これは、100 個のリクエストを同時に処理し、index.php ファイルを 1000 回実行することを意味します。出力される内容は次のとおりです。
これは ApacheBench バージョン 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
著作権 (c) 1996 Adam Twiss、Zeus Technology Ltd、[url]http://www.zeustech.net/[/url]
著作権 (c) 1998-2002 Apache Software Foundation、[url]http://www.apache.org/[/url]
127.0.0.1 のベンチマーク (しばらくお待ちください)
リクエストを100件達成しました
リクエストを200件達成しました
リクエストを300件達成しました
リクエストを400件達成しました
リクエストを500件達成しました
リクエストを600件達成しました
リクエストを700件達成しました
リクエストを800件達成しました
900件のリクエストを完了しました
リクエスト1000件達成
サーバーソフトウェア: Apache/2.2.8
//プラットフォーム Apache バージョン 2.2.8
サーバーホスト名: zf.guqin.com
//サーバーのホスト名
サーバーポート: 80
//サーバーポート
ドキュメントパス: /index.php
//テストページドキュメント
ドキュメントの長さ: 1018 バイト
//ドキュメントサイズ
同時実行レベル: 1000
//同時実行数
テストにかかった時間: 8.188731 秒
//テスト全体の期間
リクエストを完了する: 1000
//完了したリクエストの数
失敗したリクエスト: 0
//失敗したリクエストの数
書き込みエラー: 0
合計転送量: 1361581 バイト
//シーン全体のネットワーク通信量
転送されたHTML: 1055666バイト
//シーン全体のHTMLコンテンツ送信量
1 秒あたりのリクエスト: 122.12 [#/秒] (平均)
//誰もが最も懸念する指標の 1 つは、LR の 1 秒あたりのトランザクション数に相当します。以下の括弧内の平均は、これが平均値であることを示しています
。
リクエストあたりの時間: 8188.731 [ms] (平均)
//誰もが最も懸念する 2 番目の指標は、LR の平均トランザクション応答時間に相当します。括弧内の平均は、これが平均値であることを示します
。
リクエストあたりの時間: 8.189 [ms] (すべての同時リクエストの平均)
//各リクエストの実際の実行時間の平均
転送速度: 162.30 [キロバイト/秒] 受信
//ネットワーク上の 1 秒あたりの平均トラフィックは、過剰なネットワーク トラフィックが応答時間の延長につながる問題があるかどうかを除外するのに役立ちます
接続時間 (ミリ秒)
最小平均[+/-SD] 中央値最大
接続: 4 646 1078.7 89 3291
処理: 165 992 493.1 938 4712
待機中: 118 934 480.6 882 4554
合計: 813 1638 1338.9 1093 7785
//ネットワークに費やされた時間の分解、各データの具体的なアルゴリズムはまだあまり明確ではありません
特定の時間 (ミリ秒) 内に処理されたリクエストの割合
50% 1093
66% 1247
75% 1373
80% 1493
90% 4061
95% 4398
98% 5608
99% 7368
100% 7785 (最長リクエスト)
//シナリオ全体のすべてのリクエストの応答ステータス。このシナリオでは、各リクエストの応答時間は 50% のユーザーの応答時間は 1093 ミリ秒未満、60% のユーザーの応答時間は 1247 ミリ秒未満、最大応答時間は 7785 ミリ秒未満です。ミリ秒
同時リクエストの場合、CPU は実際にはリクエストを同時に処理するのではなく、各リクエストで取得したタイム スライスに従ってリクエストを 1 つずつローテーションするため、基本的に、リクエストごとの最初の時間は、リクエストごとの 2 番目の時間とほぼ等しくなります。時間に同時リクエストの数を掛けた値。