並行性を1に設定している場合、これら2つの間に違いはありません。複数のリクエストが同時に実行されると問題になります。
私が手に入れたものの例を見てみましょうlocalhost
:
ab -c 1 -n 1000 http://localhost/
あげる:
Time taken for tests: 3.912 seconds
Time per request: 3.912 [ms] (mean)
Time per request: 3.912 [ms] (mean, across all concurrent requests)
つまり、1000件のリクエストを1つずつ実行するには3.912秒が必要でした。したがって、単一のリクエストには平均3.912秒/ 1000 = 3.912ミリ秒が必要でした。
次に、並行性レベルを少し強化しましょう。
ab -c 10 -n 1000 http://localhost/
Time taken for tests: 0.730 seconds
Time per request: 7.303 [ms] (mean)
Time per request: 0.730 [ms] (mean, across all concurrent requests)
今回は、3.912秒ではなく、0.730秒でジョブが完了します。0.730秒で1000リクエストを実行したため、1つのリクエストには平均で0.730秒/ 1000 = 0.730ミリ秒かかります(最後の行)。しかし、10件のリクエストを同時に実行しているため、状況は少し異なります。したがって、実際には、ここでの数字は、1つの要求が完了するのにかかるリアルタイムを反映していません。0.730 ms * 10(同時リクエストの数)= 7.303 ms。これは、単一のリクエストが非並行に実行された場合(または、より正確に、現在の並行性レベルで分離された方法で実行された場合)に完了するのに平均でかかる時間です。
最後に表示される数値(0.730ミリ秒)は、-n 1001
現在の同時実行レベルを使用して1つの要求()を追加した場合に合計時間がどれだけ増加するかを示すために使用されます-c 10
(少なくとも理論的にはそうです)。
7.303ミリ秒では、1つの分離されたリクエストが実行される時間の概要がわかります。
例-c 1
と次の間に表示される変更-c 10
:
[-c 1 ]: Time per request: 3.912 [ms] (mean)
[-c 10]: Time per request: 7.303 [ms] (mean)
それは実行されている唯一の要求である場合、単一の要求がより速く実行されることを意味し-c 1
ます。-c 10
リソースを奪い合う複数のリクエストがある場合、1つのリクエストが完了するまでに時間がかかります。ただし、同時に10個のそのようなリクエストを実行しているという事実を考慮すると、この7.303ミリ秒では、1個ではなく10個のリクエストを処理します。
したがって、単一のリクエストの遅延の尺度として-7.303ミリ秒がより便利です。しかし、パフォーマンスの尺度として-0.730 msの方が意味があります。実際、0.730ミリ秒<3.912ミリ秒であるため、10の同時リクエストを許可すると、合計でより多くのリクエストを1秒間に処理できることがわかります。