2017-10-06 9 views
0

私はJPする@ GCの究極は、スレッドグループとスレッドグループ内の私は、コントローラが確認した場合にのみ、他のすべてのスレッド/ユーザーががあるようですJMeterのスレッドグループ内のコントローラは

(${__threadNum}%2==0) 

を継続してい使用している場合いくつかの問題はスレッドを閉じることができます。なぜなら、負荷が設定された時間保持された後、スレッドがコントローラに入るのと同じくらい多くのエラーが発生するからです。私は彼らが何であるか分からず、内部のすべてを非アクティブにした後でもそれらを取得するので、彼らはifコントローラの内容については思われません。

私はWindows 10で、jMeter 3.2とUltimate Thread Group 2.1を使用しています。

エラーメッセージ:

java.lang.StackOverflowError: null 
at java.lang.invoke.MethodHandles.insertArguments(Unknown Source) ~[?:1.8.0_131] 
at jdk.internal.dynalink.DynamicLinker.createRelinkAndInvokeMethod(DynamicLinker.java:224) ~[nashorn.jar:?] 
at jdk.internal.dynalink.DynamicLinker.link(DynamicLinker.java:201) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.InvokeByName.<init>(InvokeByName.java:86) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.linker.InvokeByName.<init>(InvokeByName.java:73) ~[nashorn.jar:?] 
at jdk.nashorn.internal.objects.Global.<init>(Global.java:96) ~[nashorn.jar:?] 
at jdk.nashorn.internal.runtime.Context.newGlobal(Context.java:1111) ~[nashorn.jar:?] 
at jdk.nashorn.api.scripting.NashornScriptEngine$2.run(NashornScriptEngine.java:350) ~[nashorn.jar:?] 
at jdk.nashorn.api.scripting.NashornScriptEngine$2.run(NashornScriptEngine.java:346) ~[nashorn.jar:?] 
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_131] 
at jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal(NashornScriptEngine.java:346) ~[nashorn.jar:?] 
at jdk.nashorn.api.scripting.NashornScriptEngine.createGlobalMirror(NashornScriptEngine.java:340) ~[nashorn.jar:?] 
at jdk.nashorn.api.scripting.NashornScriptEngine.createBindings(NashornScriptEngine.java:170) ~[nashorn.jar:?] 
at org.apache.jmeter.control.IfController$NashornJsEngine.evaluate(IfController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.IfController.evaluateCondition(IfController.java:185) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.IfController.next(IfController.java:239) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:219) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.next(GenericController.java:173) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.nextIsNull(LoopController.java:151) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.next(GenericController.java:168) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:222) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.next(GenericController.java:173) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.nextIsNull(LoopController.java:151) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.GenericController.next(GenericController.java:168) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at org.apache.jmeter.control.LoopController.next(LoopController.java:123) ~[ApacheJMeter_core.jar:3.2 r1790748] 
at... etc etc 

編集:今、私はこれを放棄することだし、それはすべてのエラーを与えるものではありませんので、ちょうどバニラスレッドグループを使用してください。

答えて

0

などのJMeterテスト、ベンチマーク、ベストプラクティスの文脈でのGroovyスクリプトの詳細についてはApache Groovy - Why and How You Should Use Itの記事を参照してください新しい呼び出し。このロジックを持つ代わりに、スレッドの半分だけが作られ、その数が代わりに2倍になるようにして、同じ効果を得ました。これにより、すべてのタイプのスレッドグループが機能しました。

2

究極のプラグインとIf controller.youでJSR 223 Elementでこれをチェックして、If controllerのブール結果のみをチェックできる既知のissueがあります。例えばvars.putObject("myBoolean", isTrue);を保存し、条件として${myBoolean}をチェックしてください。

EDIT

より良い解決策コントローラ${even}、それの前には、任意の形式のためJMeter 3.1 it is recommended to use JSR223 Test Elements and __groovy functionので文字列

if (ctx.getThreadNum() % 2 == 0) { 
    vars.putObject("even", "true"); 
    log.info("even true"); 
} else { 
    vars.putObject("even", "false"); 
     log.info("even false"); 
} 
+0

ああ、わかります。返信いただきありがとうございます! – tjarles

+0

これは以前と同じ結果を与えています。他の何かが間違っている必要があります。 – tjarles

+0

絶対に。これは問題を引き起こすスレッドグループだけであり、すべてのサーバーとIPアドレスは削除されているため、動作しません。 https://expirebox.com/download/682e753f241cb4bf12df3e7e6253abd3.html – tjarles

2

として真/偽=でも定義するとJSR223要素を使用する場合は、チェックインすることができますJavaScriptからGroovyに切り替えることをお勧めします。Ifコントローラの「条件」エリアで__groovy() functionを使用することをお勧めします。

${__groovy(ctx.getThreadNum() %2 == 0,)} 

は、私は他のすべてのユーザー/スレッドを作る持つためであれば、コントローラーを除去することによって、私の問題を修正

+0

ああ、返信いただきありがとうございます!私は代わりにこれを試してみます。 – tjarles

+0

これは以前と同じ結果を示しています。他の何かが間違っている必要があります。 – tjarles

関連する問題