Jmeter:使用 While Controller 进行失败的请求重试,ThreadGroup 循环计数不起作用
Jmeter : using While Controller for failed request retries, ThreadGroup loop count not working
我添加了一个 While 控制器并尝试多次发送此请求,以防它第一次不起作用或只是尝试实现重试逻辑。
线程组配置为:
- 线程(用户)- 1
- 循环 - 10
问题:根据线程组配置,它应该 运行(而控制器 * 10)但它只有 运行s 1 次。
在我的 Bean 后处理器中:
vars.remove("response_code");
vars.put("response_code",prev.getResponseCode());
在 WhileController 中:
${__jexl3(${response_code} != 200 && ${retries} < 3,)}
如有任何帮助,我们将不胜感激!
在您的线程组的第二次迭代中,您的 ${response_code}
变量变为 200
因此它不会进入 While 循环。
解决方案是将 ${response_code}
和 ${retries}
变量都重置为 0
- 添加 JSR223 Sampler 成为线程组中的第一个采样器
将以下代码放入"Script"区域:
SampleResult.setIgnore()
vars.put('response_code', '0')
vars.put('retries', '0')
还要注意 starting from JMeter 3.1 you shouldn't be using Beanshell so consider migrating from the Beanshell PostProcessor to the JSR223 PostProcessor. More information: Apache Groovy - Why and How You Should Use It
我添加了一个 While 控制器并尝试多次发送此请求,以防它第一次不起作用或只是尝试实现重试逻辑。
线程组配置为:
- 线程(用户)- 1
- 循环 - 10
问题:根据线程组配置,它应该 运行(而控制器 * 10)但它只有 运行s 1 次。
在我的 Bean 后处理器中:
vars.remove("response_code");
vars.put("response_code",prev.getResponseCode());
在 WhileController 中:
${__jexl3(${response_code} != 200 && ${retries} < 3,)}
如有任何帮助,我们将不胜感激!
在您的线程组的第二次迭代中,您的 ${response_code}
变量变为 200
因此它不会进入 While 循环。
解决方案是将 ${response_code}
和 ${retries}
变量都重置为 0
- 添加 JSR223 Sampler 成为线程组中的第一个采样器
将以下代码放入"Script"区域:
SampleResult.setIgnore() vars.put('response_code', '0') vars.put('retries', '0')
还要注意 starting from JMeter 3.1 you shouldn't be using Beanshell so consider migrating from the Beanshell PostProcessor to the JSR223 PostProcessor. More information: Apache Groovy - Why and How You Should Use It