web-dev-qa-db-ja.com

abの結果を解釈する方法は?

サーバーの負荷テストにabを使用しています。同時実行数を1から増やすと、1秒あたりのリクエスト数が増えます。上がる。また、リクエストあたりの時間(平均)は増加し、リクエストあたりの時間(すべての同時スレッドの平均)は減少します。ただし、同時実行数が特定の数を超えると、1秒あたりのリクエスト数が増えます。一定のままで、リクエストあたりの時間(平均)は同時実行数に比例して増加しますが、リクエストあたりの時間(すべての同時スレッドの平均)は一定のままです。

この結果をどのように解釈しますか?各リクエストのレイテンシは実際に増加していますか? 1秒あたりのリクエスト数が一定であるのはなぜですか?サーバーがリクエストをキューに入れ、一定の速度で次々に処理していることを意味しますか? abは、経過時間の合計、同時スレッドの数、および要求の合計数を調べて、要求ごとの時間を単純に計算していますか?

2
cseric

サーバーが1秒あたりの最大リクエスト数と1リクエストあたりの時間(実際には互いに逆)に達したようです。

数が最大で1秒あたり100リクエストであるとしましょう。

同時実行が200リクエストの場合、それは(たとえば)4秒後に200リクエストが行われることを意味します。サーバーは毎秒100の要求にのみ応答し、すべての応答の後に、クライアントは新しい要求を行います(実行中の合計を200に戻すため)。つまり、サーバーは基本的に、実際に処理できる100個のリクエストよりも100個のリクエストのバックログを取得するため、各リクエストが応答を取得するのに2秒(およそ/平均)かかります。

同時実行性を400に増やすと、サーバーが処理できる1秒あたりの要求数は変更されませんが、バックログのサイズ(300)が変更され、指定された各要求に必要な時間(4秒)が変更されます。 。それでも毎秒100の応答があります。それらは4秒前のリクエスト用です。

上昇し続けると、ある時点で、サーバーがバックログを維持できなくなるポイントに到達します。その時点で、おそらくいくつかの失敗したリクエストが表示されるようになります。あなたが持っているツールはそれを打つことができないかもしれません。

2
Slartibartfast