JMeter中Timers与BZM Parallel Controller配合使用问题求助
JMeter BZM Parallel Controller 与 Timer 配合问题解决方案
针对你遇到的5个问题,对应解决方法如下:
问题1、2:Timer作为HTTP Sampler子元件/同层级被忽略
BZM Parallel Controller的并行执行机制会跳过标准Timer(如Constant Timer、Gaussian Timer等),因为标准Timer基于主线程调度逻辑,无法作用于并行启动的子采样器线程。解决办法:
- 在Parallel Controller内部,给需要延迟的HTTP Sampler添加JSR223 Timer(同层级兄弟元件),在Timer中写入延迟代码:
JSR223 Timer会在采样器执行前,在其专属线程中运行,能被Parallel Controller正确识别。Thread.sleep(10000); // 10秒延迟
问题3:Timer放在Parallel Controller同层级之前,时长计入控制器响应时间
若需在Parallel Controller执行前延迟,但不想让延迟时间被统计到它的响应时长中:
- 用JSR223 Sampler替代Timer,写入延迟代码后,给该Sampler添加JSR223 PostProcessor,设置忽略采样结果:
延迟动作不会被计入任何采样器的响应时长,也不影响Parallel Controller的统计结果。prev.setIgnore(true); // 忽略该采样器的统计数据
问题4:JSR223 PostProcessor的Thread.sleep在调试时不被忽略
调试模式(Validate Thread Group)下,jmeter.validate属性会被设为true,可通过判断该属性跳过sleep逻辑:
- 修改JSR223 PostProcessor的代码:
调试时条件不满足,不会执行sleep,大幅缩短调试耗时。if (!props.get("jmeter.validate").toBoolean()) { Thread.sleep(10000); }
问题5:Flow Control Action在调试时不被忽略
利用jmeter.validate属性,改用JSR223 Sampler实现等待逻辑并跳过调试执行:
- 添加JSR223 Sampler,写入代码:
替代原Flow Control Action,调试时不执行等待,正常运行时功能一致。if (!props.get("jmeter.validate").toBoolean()) { Thread.sleep(10000); // 模拟Flow Control的等待时长 } prev.setIgnore(true); // 忽略采样结果,不影响统计
内容的提问来源于stack exchange,提问作者Pill30
相关产品推荐
相关产品推荐

