如何在JMeter脚本中控制指定API运行30分钟后自动停止
在JMeter中实现部分API定时停止的负载测试方案
方法一:拆分线程组(最直观易维护)
- 把需要运行30分钟的4个API单独放进一个线程组,剩下的API放在另一个线程组里。
- 配置限时线程组的调度器:
- 勾选「调度器」选项
- 「持续时间(秒)」填1800(对应30分钟)
- 「启动延迟(秒)」设为0,保证和其他线程组同时启动
- 配置全程运行的线程组调度器:
- 同样勾选「调度器」
- 「持续时间(秒)」填7200(对应2小时)
- 「启动延迟(秒)」设为0
- 注意:测试计划里的「独立运行每个线程组」别勾选,这样两个线程组会同时启动。
方法二:用Runtime控制器(不拆分线程组的场景)
- 把那4个限时API放进一个简单控制器里,命名比如「限时API集合」
- 在这个控制器下面加一个Runtime Controller,设置「运行时间(秒)」为1800
- 这个控制器会自动在30分钟后停止执行内部的所有请求,剩下的API正常跟着线程组跑满2小时
- 如果要更精准控制(避免30分钟后还发新请求),可以给限时API加个JSR223定时器,写段Groovy代码:
// 计算30分钟后时间戳(毫秒) def stopTime = ctx.getThread().getStartTime() + 1800 * 1000 if (System.currentTimeMillis() > stopTime) { ctx.getThread().stop() // 到点就停止当前线程 }
总结
优先用拆分线程组的方法,配置简单,后续维护也方便;如果业务逻辑要求必须在同一个线程组里执行,再考虑用Runtime控制器结合定时器的方式。
内容的提问来源于stack exchange,提问作者SWAPNIL KULKARNI
相关产品推荐
相关产品推荐

