Jmeter:使用 While Controller 进行失败的请求重试,ThreadGroup 循环计数不起作用
Posted
技术标签:
【中文标题】Jmeter:使用 While Controller 进行失败的请求重试,ThreadGroup 循环计数不起作用【英文标题】:Jmeter : using While Controller for failed request retries, ThreadGroup loop count not working 【发布时间】:2020-05-14 08:29:44 【问题描述】:我添加了一个 While 控制器并尝试多次发送此请求,以防它第一次不起作用或只是尝试实现重试逻辑。
线程组配置为:
-
线程(用户) - 1
循环 - 10
问题:根据线程组配置,它应该运行(while controller * 10)但它只运行 1 次。
在我的 Bean 后处理器中:
vars.remove("response_code");
vars.put("response_code",prev.getResponseCode());
在 WhileController 中:
$__jexl3($response_code != 200 && $retries < 3,)
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:在线程组的第二次迭代中,$response_code
变量变为200
,因此它不会进入 While 循环。
解决方案是将$response_code
和$retries
变量都重置为0
-
添加JSR223 Sampler 成为线程组中的第一个采样器
将以下代码放入“脚本”区域:
SampleResult.setIgnore()
vars.put('response_code', '0')
vars.put('retries', '0')
还要注意 starting from JMeter 3.1 you shouldn't be using Beanshell,因此请考虑从 Beanshell 后处理器迁移到 JSR223 PostProcessor。更多信息:Apache Groovy - Why and How You Should Use It
【讨论】:
以上是关于Jmeter:使用 While Controller 进行失败的请求重试,ThreadGroup 循环计数不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Jmeter While Controller 使用${__jexl2(,)}
Jmeter While Controller 使用${__jexl2(,)}