Jmeter:使用 While Controller 进行失败的请求重试,ThreadGroup 循环计数不起作用

Jmeter : using While Controller for failed request retries, ThreadGroup loop count not working

我添加了一个 While 控制器并尝试多次发送此请求,以防它第一次不起作用或只是尝试实现重试逻辑。

线程组配置为:

  1. 线程(用户)- 1
  2. 循环 - 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

  1. 添加 JSR223 Sampler 成为线程组中的第一个采样器
  2. 将以下代码放入"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