java - 如果 Controller 在jMeter线程组中

标签 java jmeter stack-overflow jmeter-plugins jmeter-3.2

我正在使用 jp@gc 的终极线程组,并且在线程组内部我有一个 if Controller ,确保只有每个其他线程/用户继续

(${__threadNum}%2==0) 

关闭线程似乎存在一些问题,因为在负载保持设定的时间后,我收到的错误数量与进入 Controller 的线程数量一样多。我不确定它们是关于什么的,而且它们似乎与 if Controller 的内容无关,因为即使在停用内部所有内容后我仍然得到它们。

我在 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

编辑:现在我放弃这个,只使用普通线程组,因为它不会给出任何错误。

最佳答案

JMeter 3.1 it is recommended to use JSR223 Test Elements and __groovy function对于 JMeter 中任何形式的脚本编写,我建议从 JavaScript 切换到 Groovy 并使用 __groovy() function在 If Controller 的“条件”区域中,例如:

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

参见Apache Groovy - Why and How You Should Use It文章了解有关 JMeter 测试、基准测试、最佳实践等上下文中的 Groovy 脚本编写的更多信息。

关于java - 如果 Controller 在jMeter线程组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607774/

相关文章:

java - 将 rdfxml 转换为海龟三元组

java - ArrayList - 如何修改对象的成员?

ssl - 通过 Apache JMeter 连接到自签名 SSL 网站

c++ - 当一个类在构造函数中动态分配自己时,为什么会发生堆栈溢出而不是 std::bad_alloc?

C#、异步套接字服务器/客户端、StackOverflowException

c# - 关闭表单时的 StackOverflow

java - 结果集到 Excel 文件

java - 从 String java 中删除未知数量的字符

java - Jmeter - 根据响应代码或变量在监听器中分组结果

javascript - Jmeter : jp@gc - WebDriver Sampler