JMeter - 定数スループットタイマ


ターゲットスループット/Target throughput

1分間あたりのリスエスト数を指定します。例えば、リクエストが15ある場合に4秒ごとにリクエストを出したい場合、つまり1分間に15リクエスト出したい場合には、ターゲットスループットを15に設定ます。

Calculate Throughput based on

ターゲットスループットを適用する範囲を指定します。デフォルトでは、「this thread only」になってます。

「this thread only」

個々のスレッドがターゲットスループットで指定した値になるようにアクセスします。上記の例の場合、スレッドがいくつあろうと、それぞれのスレッドは1分間に15回アクセスすることを目指します。つまり、スレッド数を増やせばアクセス数は倍になります。※一般的にはこれを使うことが多いはずだと思います。

「all active threads」

すべてのスレッドがターゲットスループットで指定した値になるようにアクセスします。上記の例の場合、スレッドをいくつに増やしても全体のアクセス数がターゲットスループットになるようにアクセスします。スレッドを増やせば増やすほど、特定の1スレッドがアクセスする頻度は低下します。※これを書いている時点では有用性が思いつきません…


その他、「all active threads in current thread group」「all active threads(shared)」「all active threads in current thread group(shared)」があります。「all active threads in current thread group」は文字通りスレッドグループ単位での制御でしょう。確認はしていませんが。「(shared)」がついているものはよくわかりません。しかし有用性が低そうなので割愛します。

※計算するのが面倒だったり後で分かりにくくなったりするので、リクエストの数を分かりやすい数字、例えば10, 15, 20, 30などにするといいでしょう。



ターゲットスループットはあくまでも目標値です。これに対し、「Summary Report」などで結果を見た場合のThroughputが、結果にあたります。こちらは「Summary Report」の属するグループ内の全スレッドの集計になります(Throughputの値に応じて単位表示が秒もしくは分に切り替わります)。ターゲットスループットは目標を達成する為の待ち時間を計算するための設定であり、リクエストの中に、処理時間の長いものがあった場合にはこの目標を下回るThroughputになるでしょう。


例えば上記の例では、各リクエストのThroughputは「1.0/min」に近づき、合計のThroughputは「15.0/min」に近づきます。リクエストの件数が多いほど収束していきます。ただしこれは健全な状態の場合であり、例えばサーバーの負荷がかかりすぎていて、1リクエストあたりの処理時間が4秒以上かかる状態になっているのなら、Throughputはターゲットスループットを下回ります。


ちなみに日本語表記状態で使用している場合、「ターゲットスループット(サンプル数/ミリ秒)」と書いてありますが、これは誤訳です。英語表記に切替えると「Target throughput (in samples per minute)」となります。「minute」を「ミリ秒」と間違えたのでしょうか…。「ミ」しか合ってねぇ。

2011/09/29