You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter测试中如何实现指定Threadgroup延迟指定时间启动

解决方案

该需求可通过JMeter原生功能实现,无需额外安装插件,具体配置步骤如下:

第一步:调整测试计划基础配置

  • 取消测试计划根节点下的「Run Thread groups consecutively」勾选:该配置会强制所有线程组串行执行(前一个线程组完全运行结束后才会启动下一个),不符合第3个线程组仍在运行时启动第4个的要求。

第二步:实现前3个线程组的串行执行

取消全局串行配置后,需单独配置前3个线程组的启动依赖:

  1. 在第1个线程组的末尾添加JSR223 采样器,语言选择Groovy,写入以下代码:
// 标记第1个线程组已执行完成,props为JMeter全局属性,跨线程组生效
props.put("tg1_finished", "true")
  1. 在第2个线程组的最开头添加循环控制器,循环条件设置为:
    ${__jexl3("${__P(tg1_finished, false)}" != "true",)}
  2. 在上述循环控制器内部添加测试活动(Test Action)采样器,设置暂停时长为1秒,作用为轮询等待第1个线程组执行完成。
  3. 按照相同逻辑配置第2、第3个线程组的串行依赖:在第2个线程组末尾添加JSR223采样器标记完成,第3个线程组开头加相同的轮询等待逻辑。

第三步:配置第4个线程组30分钟延迟启动逻辑

  1. 在第3个线程组的最开头添加JSR223 采样器,写入以下代码记录第3个线程组的启动时间:
props.put("tg3_start_timestamp", System.currentTimeMillis().toString())
  1. 在第4个线程组的最开头添加循环控制器,循环条件设置为:
    ${__jexl3(System.currentTimeMillis() - ${__P(tg3_start_timestamp, 0)} < 1800000,)}
    注:1800000为30分钟对应的毫秒数,可按需调整
  2. 在上述循环控制器内部添加测试活动(Test Action)采样器,设置暂停时长为10秒(可按需调整轮询间隔,避免占用过多资源)。

配置完成后,前3个线程组会按顺序串行启动,第3个线程组启动时会记录全局时间戳,第4个线程组会轮询判断距离第3个启动的时间是否达到30分钟,达到后自动执行后续业务逻辑,此时第3个线程组仍可处于运行状态。

简化方案(仅适用于前3个线程组运行时长固定的场景)

如果可以明确预估前2个线程组的总运行时长为T秒,可直接跳过第二步的串行配置,按以下方式设置:

  • 保持「Run Thread groups consecutively」勾选
  • 确认第3个线程组的运行时长大于30分钟,保证30分钟后仍未结束
  • 给第4个线程组设置「Startup delay」参数为 T + 1800 秒,该参数意为测试计划启动后延迟对应时长再启动当前线程组。

内容的提问来源于stack exchange,提问作者JessieB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:12:09