2016-08-02 38 views
0

Gatlingの世界ではなく、経験豊富なLoadrunnerユーザー。 サンプルシミュレーションを作成して、10人のユーザーがそれぞれ10分間実行する2つのシナリオを実行しました。以下は私のsetUp機能にあるものです。しかし、私がシミュレーションを実行するたびに、それは136秒間だけ実行されます。 holdForは有効にならないようです。ギャトリングスロットルホールドfor not working

setUp(
    scn.inject(rampUsers(10) over (10 seconds)), 
    scen.inject(rampUsers(10) over (10 seconds)) 
) 
.protocols(httpProtocol) 
.throttle(
    reachRps(2) in (10 seconds), 
    holdFor(10 minutes) 
) 

私はGatling 2.2.2バンドルを使用しています。

出力:Simulation computerdatabase.BasicSimulation completed in 136 seconds

+0

それは、これらの10人の+ 10のユーザによってトリガすべての要求の1回の繰り返しを実行するのにかかるおおよその時間です。 – CyberNinja

答えて

4

スロットルを効果的に送信されますどのように多くの要求を上限として働いて、ボトルネックとして働いています。あなたのシナリオ+インジェクションプロファイルが最初から好きなだけ多くのリクエストを生成することができない場合、生成されたものは単純にスロットルを通過します。スロットルは、希望のRPSに合わせて負荷を増やすことはできません。

シナリオに必要な2人のRPSを生成し、シミュレーションの途中でさらに多くのものを追加できるように、十分なユーザーをスロットに入れるために十分なユーザーを注入する必要がありますあなたが探していることをやりなさい。

私はこれがあなたの負荷プロファイル歩近づいあなたが探しているものをを与えるかもしれないと信じて、例えばこのような何かを、あなたの注入プロファイルを変更してみてください(及び必要に応じてconstantUsersPerSec値を調整する):

scn.inject(constantUsersPerSec(1) during(10 minutes))), 
scen.inject(constantUsersPerSec(1) during (10 minutes))) 

上記の例では、シナリオに10分かけて、合計で600人のユーザーを注入する 10であり、時間をかけてユーザーを注入することのポイントを説明するためだけの非常に迅速かつ汚い方法であったが、可能性としてそれを持っているでしょうユーザーは10秒ごとに正確にあなたが望むものでなければなりません。基本的な算術誤差および/または誤解になります。

あなたが必要な場合は、より明示的に注射の手順を連鎖により、ランプを制御することができますが、それも当然、このような例のために、ある程度まで上昇し、ダウンになります。それ以上の別のアプローチについては

scn.inject(
    rampUsers(10) over (1 minute), 
    constantUsersPerSecond(1) during (10 minutes) 
) 

を明示的に時間をかけてランプを制御し、あなたもこのような構成で遊ぶことができます:136秒、明確にするために

scn.inject(
    splitUsers(600) into(rampUsers(10) over(10 seconds)) separatedBy(10 seconds) 
) 
+0

ありがとうございます。私はスロットリングの使い方を誤解していました。あなたのコードでは、約600人のユーザーが合計2人のシナリオで10分間、1秒間に1人のユーザーを投入すると思います。これは私が望むものではありません。私の目的は、テストに20人のユーザーを10秒以上かけてロードし、その後20分間10分間実行してからランプを下げることです。 – CyberNinja

+0

最初にコメントを返信しましたが、時間がかかりすぎました。代わりに上記の答えを更新しました。 –

+0

この回答は概念を理解するのに役立ちました。 – CyberNinja