java - Jmeter:使用 While Controller 进行失败的请求重试,ThreadGroup 循环计数不起作用
问题描述
我添加了一个 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,)}
任何帮助,将不胜感激!
解决方案
在您的线程组的第二次迭代中,您的${response_code}
变量变为200
因此它不会进入 While 循环。
${response_code}
解决方案是将和${retries}
变量都重置为0
- 将JSR223 Sampler添加为线程组中的第一个 Sampler
将以下代码放入“脚本”区域:
SampleResult.setIgnore() vars.put('response_code', '0') vars.put('retries', '0')
另请注意,从 JMeter 3.1 开始,您不应该使用 Beanshell,因此请考虑从 Beanshell PostProcessor 迁移到JSR223 PostProcessor。更多信息:Apache Groovy - 为什么以及如何使用它
推荐阅读
- c++ - QQuickView 新删除类型不匹配
- ios - 何时使用容器视图控制器?与ios中的普通视图相比,它在内存管理方面有什么优势吗
- rundeck - 如何在 Rundeck Web UI 上终止作业时优雅地停止作业执行?
- javascript - 使用 util.inspect 检查深度对象相等性的优缺点
- .net - 获取每个部门的总数
- sql-server - SQL Server 复制之谜
- ios - 无法解释 Arkit 测量 IOS 应用程序中的点云行为
- search - Marklogic 查询管理器搜索以返回特定元素而不是整个文档
- r - 如何在 r ggplot 中为 dotplot 选择正确的参数
- maven - 为 Liferay 手动创建可部署的 JAR