228

私自身の好奇心のために、サーバーでいくつかの負荷テストを実行するために、次のコマンドを実行しました。

ab -kc 50 -t 200 http://localhost/index.php

これにより、50 のキープアライブ接続が 200 秒間開かれ、サーバーが index.php のリクエストでバタンと閉められます。

私の結果では、次のようになります。

Concurrency Level:      50
Time taken for tests:   200.007 seconds
Complete requests:      33106
Failed requests:        32951
   (Connect: 0, Receive: 0, Length: 32951, Exceptions: 0)
Write errors:           0
Keep-Alive requests:    0
Total transferred:      1948268960 bytes
HTML transferred:       1938001392 bytes
Requests per second:    165.52 [#/sec] (mean)
Time per request:       302.071 [ms] (mean)
Time per request:       6.041 [ms] (mean, across all concurrent requests)
Transfer rate:          9512.69 [Kbytes/sec] received

32951 の「失敗した」リクエストに注意してください。私はこれを理解することはできません。

テストの実行中、自宅のコンピューターから自分の Web サイトに完全にアクセスできましたが、ページの下部にあるページの読み込み時間は、通常の .02 ではなく .5 と報告されていました。ただし、リクエストが失敗したことは一度もありません。

では、なぜ AB は接続の半分が失敗したと報告しているのでしょうか? そして、「長さ:」はその文脈で何を意味するのでしょうか?

4

3 に答える 3

386

どうでも。「長さの失敗」は、約半分の時間で応答の長さが異なっていたことを示しているだけです。

コンテンツは動的なので、おそらくセッション ID などです。

于 2009-02-23T21:36:41.070 に答える
149

この問題を言い換えると、次のようになります。

Apache ベンチマーク ツール (ab) は、応答コンテンツの長さがテスト全体で同じであることを前提としています。最初の応答のコンテンツ長を格納します。それ以降の応答のいずれかでコンテンツの長さが異なる場合、「長さの失敗」が発生します。

次の apache バグ レポートは、次のことを確認しているようです: ASF バグ 42040

要約: 可変長のコンテンツを提供している場合は、この種の ab 要求の失敗をおそらく無視する必要があります。

編集:最近、abコマンドに新しい(少なくとも私にとっては)オプションがあることに気付きました:

-l   Accept variable document length (use this for dynamic pages)

ab Version 2.3 <$Revision: 1528965 $>では見えますが、ab Version 2.3 <$Revision: 655654 $>では見えないので、比較的最近追加されたのでしょう。

于 2011-10-11T19:10:22.367 に答える