如何让JMeter的View Results Tree在首个线程启动5分钟后开始记录输出?
实现JMeter View Results Tree延迟5分钟记录且仅对第一个线程生效的方法
要实现仅第一个线程延迟5分钟后再让View Results Tree记录其输出,核心是通过线程号判断,只对第一个线程执行延迟逻辑,以下是两种可行方案:
方案一:JSR223 Sampler + 线程判断
- 在测试计划最前端添加一个JSR223 Sampler
- 在Sampler的脚本编辑框中输入Groovy代码:
// JMeter线程索引从0开始,+1后转为从1计数的线程号 def threadNumber = ctx.getThreadNum() + 1 if (threadNumber == 1) { // 延迟5分钟,单位为毫秒 sleep(300000) }
- 该Sampler会让第一个线程等待5分钟后再执行后续请求,其他线程直接跳过延迟,View Results Tree对第一个线程的记录会从延迟结束后开始,其他线程正常实时记录。
方案二:If Controller + Test Action Sampler
- 添加一个If Controller,设置条件为:
${__threadNum} == 0(__threadNum函数返回线程索引,第一个线程索引为0) - 在If Controller下添加Test Action Sampler
- 在Test Action Sampler的「Duration (ms)」字段填入
300000(对应5分钟) - 将这个If Controller放在所有业务请求之前,只有第一个线程会进入控制器执行延迟,其他线程直接执行后续请求,达到仅第一个线程延迟记录的效果。
为什么之前的方法不适用?
- Constant Timer会对其作用域内的所有线程生效,每个线程都会延迟,不符合仅第一个线程延迟的需求;
- Flow Control Action若未添加线程判断,同样会让所有线程执行延迟逻辑,无法实现针对性控制。
内容的提问来源于stack exchange,提问作者Himasha Nahallage
相关产品推荐
相关产品推荐

