2014年8月19日火曜日

jmeter、スレッド数とランプアップとループ回数

たまには技術系

jmeterのスレッド数とランプアップ(Ramp-Up)とループ回数。

スレッド数は想定ユーザー数。
ランプアップは全てのスレッド数を起動する時間。
ループ回数は起動したスレッドの処理を繰り返す回数。

当初の認識では
ランプアップ経過後に、また同じランプアップ時間をかけてループ回数分、
スレッドが起動すると思っていた。。。

だけど、正しくは
スレッドを起動するのは一回のみ。
スレッドはスレッド数で指定した値以上増える事はない。
ランプアップ時間をかけてスレッドを起動したら後はそのスレッドを使い回す。
起動したスレッドを使い回す回数をループ回数で指定する。
スレッドは起動した後はランプアップに関係なく、ループ回数分リクエストを繰り返す。

たとえば、
1リクエストの処理時間が5秒くらいの処理の場合に
スレッド数が1
ランプアップが60秒、
ループ回数が2
とした場合は
当初の認識ではスレッドが一つ、起動して60秒後にループ回数が2なので
もう一度起動すると思っていたが
そうではなくてスレッドが起動して、1リクエストが終わるとすぐに2リクエスト目(ループ回数分)に入る。
そのため上記の場合はランプアップは60秒だけど10秒程度で処理が終わる。

上記の例のスレッド数を2に増やして
スレッド数が2
ランプアップが60秒
ループ回数が2
とした場合は
だいたい1スレッドが30秒毎に起動する。

最初にスレッド1が起動して、30秒後にスレッド2が起動する。
スレッド1は起動して1リクエスト目(約5秒)が終わるとすぐに2リクエスト目に入る
2リクエスト目の終了までは約10秒。
その後、30秒経過してスレッド2が起動して2ループ分(約10秒)で終わる。

経過を表すと
0秒後  スレッド1起動、スレッド1の1回目のリクエスト開始
5秒後  スレッド1の1回目のリクエスト終了、ループ回数2回のため
     スレッド1の2回目のリクエスト開始
10秒後 スレッド1の2回目のリクエストが終了し、スレッド1が終了。
ここから11〜30秒までは待ち時間となる。
30秒後 スレッド2起動、スレッド2の1回目のリクエスト開始
35秒後 スレッド2の1回目のリクエスト終了、ループ回数2回のため
     スレッド2の2回目のリクエスト発行
40秒後 スレッド2の2回目のリクエストが終了し、スレッド2が終わってテスト終了
という流れになる。
※ランプアップ時間の経過を待たずに終了する。

スレッド数や処理処理に対してあまりランプアップ時間を長く取りすぎると
上記の様に空白の時間が出来てしまう場合がある。
空白の時間を作りたくなければスレッド数やリクエスト時間など考慮して
ランプアップ時間を短く調整するか、ループ回数を増やしたり、
ループ回数を無限ループ(リクエストが終了したらすぐに次のリクエストを開始する。)
にすると空白の時間は出来ない。

以上、久しぶりの技術ネタでした。

0 件のコメント:

コメントを投稿