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

如何在JMeter中为请求组之间添加延迟?

解决JMeter请求组之间添加延迟的方案

这是个很典型的压测场景,我来给你几个靠谱的解决方案,亲测有效:

方案1:循环控制器 + 测试动作采样器(最直观)

这个方法逻辑清晰,容易维护,推荐优先使用:

  1. 配置线程组:

    • 设置线程数为1(如果需要多线程并发可调整,但你的需求是单组发送,1线程足够)
    • 勾选「调度器」,设置「持续时间」为1800秒(也就是30分钟)
    • 循环次数选择「永久」,让线程组在30分钟内持续循环
  2. 添加循环控制器到线程组下:

    • 设置循环次数为100,用来重复执行你的单个请求100次(不用复制100个请求,省事儿)
    • 把你的目标请求放到这个循环控制器里面
  3. 在循环控制器的同级添加测试动作采样器:

    • 打开采样器的配置界面,在「Action」下拉菜单选择「Pause」
    • 设置「Duration (ms)」为60000(即1分钟)

这样执行逻辑就是:

执行100次请求 → 暂停1分钟 → 重复上述流程,直到30分钟结束

方案2:事务控制器 + 固定定时器(利用作用域控制)

如果更喜欢用定时器组件,可以用这个方法,注意控制定时器的作用域:

  1. 同样先配置线程组(和方案1一致:1线程、30分钟持续时间、永久循环)

  2. 添加事务控制器到线程组下:

    • 把你的100次请求(或者包了100次循环的请求)放到事务控制器内
    • 可以勾选「Generate Parent Sample」,方便查看整个组的聚合结果
  3. 在事务控制器的同级添加固定定时器:

    • 设置「线程延迟(毫秒)」为60000
    • 关键:确保定时器和事务控制器处于同一级别,且在事务控制器的下方

这里要注意JMeter定时器的特性:定时器是前置执行的,所以这个定时器会在下一次循环执行事务控制器之前触发等待。也就是说第一次执行100个请求后,下一次循环开始前会先等1分钟,再执行下一组,完全符合你的需求。

方案3:JSR223后置处理器(灵活定制)

如果需要更灵活的逻辑(比如只有当请求组全部成功才等待),可以用脚本实现:

  1. 配置线程组和循环控制器(同方案1)

  2. 在事务控制器(或100次循环的最后一个请求)的子节点添加JSR223后置处理器:

    • 在脚本框中输入:
      // 等待1分钟,单位毫秒
      Thread.sleep(60000)
      
    • 推荐用Groovy语言,性能比BeanShell好

这个方法的好处是可以结合条件判断,比如只有当事务控制器的结果是成功时才执行等待:

if (prev.isSuccessful()) {
    Thread.sleep(60000)
}

额外提示

  • 如果你需要精准控制总时长,记得在调度器里设置「持续时间」,而不是靠循环次数计算,这样更可靠
  • 测试动作采样器不会生成额外的无效采样结果,不会影响你的压测数据统计
  • 如果是多线程场景,记得每个线程都会独立执行这个流程,可根据需求调整线程数

内容的提问来源于stack exchange,提问作者Roman T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:17:45