2017-09-20 5 views
0

Jmeter 3.0のテスト計画では、複数のスレッドグループがあります。今私は、 に割合の基準でユーザーを配布したいと思います。Jmeterの複数のスレッドグループの負荷分散

私は、ユーザー定義の変数で変数を宣言して、スレッドグループに

${__BeanShell(${__evalVar(threads)}*${__evalVar(WeightOfGroup1)}/100)} 

を次のステートメントを使用しかし、あなたはとても

2017/09/20 19:25:39 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``**ERROR - see log file*****ERROR - see log file**/100;'' Encountered "*" at line 1, column 1. 

2017/09/20 19:25:39 WARN - jmeter.functions.BeanShell: Error running BSH script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval In file: inline evaluation of: ``**ERROR - see log file*****ERROR - see log file**/100;'' Encountered "*" at line 1, column 1. 

答えて

1

をしながら、私は次の例外を取得していています変数はスレッドのローカルなので、スレッドグループがスレッドを開始した後で初期化されるため、スレッドグループ定義で変数を使用することはできません。 thisソリューションで説明したように、

  1. 使用特性:

    あなたは2つのオプションがあります。

    ${__javaScript(Math.max(1\,Math.round(props.get('threads')*props.get('WeightOfGroup1')/100)))}

    はあなたが定義され、両方のthreadsWeightOfGroup1性質を持っていることをここと仮定:あなたがやろうとしている計算には、このような例のために、あまりにも変更する必要があります。また、数値を整数に丸める必要があることにも注意してください。 0スレッドで終わることを避けるために、私は1と数式の計算の間で最大値をとります(少なくとも1つのスレッドを実行します)。これはもちろんオプションです。

  2. 実際には、スレッドグループが必要ないように見えます。代わりに、1つのスレッドグループを使用し、以前はスレッドグループであった各フラグメントに対してThroughput Controllerを割り当て、スループットコントローラのパラメータで配布目標を表すことができます。

    enter image description here

    私が使用する他の理由がある場合を除きので、このソリューションは、よりエレガントだと思う。その場合はあなただけ例えば、あなたは割合がする必要があるかを指定、パーセンテージを計算する必要はありません。複数のスレッドグループ、私はそれに行くだろう。

関連する問題