如何使用JMeter在同一循环中实现不同间隔Sampler的循环运行
JMeter同循环结构实现多频率请求+固定总时长配置方案
核心思路
不用拆分多线程组,靠「外层统一循环+内部分支并行+作用域精准绑定定时器」的结构,就能在同一个循环层级下实现两种不同执行频率的请求逻辑,同时靠线程组调度器卡死20分钟总运行时长。
具体配置步骤
1. 线程组基础配置
新建普通线程组(Thread Group),参数按如下设置:
- 线程数:单流程验证填1即可,压测场景按实际并发需求调整
- 循环次数:勾选永远
- 展开调度器(Scheduler)配置区,*持续时间(Duration)*填
1200(单位为秒,对应20分钟总运行时长),启动延迟填0即可
2. 统一循环结构搭建
在线程组下新建1个循环控制器(Loop Controller),循环次数设置为永远,这就是你需要的统一外层循环结构,所有业务逻辑都放在这个控制器内部:
- 在这个外层循环控制器内部,新建1个并行控制器(Parallel Controller),勾选
Generate parent sample选项,避免多余的采样结果干扰统计。若找不到并行控制器选项,打开JMeter插件管理器搜索Parallel Controller安装后重启即可。 - 并行控制器下新建2个平行分支,两个分支会独立并行运行、执行节奏互不阻塞:
- 分支1:新建子循环控制器(循环次数设为永远),用来放每5秒执行一次的独立采样器
- 分支2:新建子循环控制器(循环次数设为永远),用来存放其余按顺序执行的Sampler
3. 执行间隔配置
利用JMeter定时器「作用于当前节点及所有子节点」的规则,精准给不同分支绑定对应间隔,不要把定时器挂在外层公共节点上避免互相干扰:
- 分支1配置:把需要5秒执行一次的Sampler放到分支1的子循环控制器下,给这个Sampler单独挂载1个
Constant Timer,固定延迟值填5000(单位毫秒,对应5秒间隔) - 分支2配置:把Simple Controller放到分支2的子循环控制器下,将需要顺序执行的所有Sampler按执行顺序排列在Simple Controller内,给每个Sampler单独挂载1个
Constant Timer,固定延迟值填10000(单位毫秒,对应10秒相邻操作间隔)
避坑提示:不要把10秒定时器挂在Simple Controller根节点,否则会在整组Sampler执行前统一等待10秒,达不到每两个相邻操作间隔10秒的效果;也不要用Constant Throughput Timer做固定间隔控制,该定时器是按分钟维度计算吞吐量,短周期执行场景误差极大,固定间隔场景直接用Constant Timer精度最高。
效果校验
配置完成后试运行1分钟即可验证逻辑:
- 5秒间隔的采样器固定每5秒触发1次,不会被其余请求阻塞
- Simple Controller内的Sampler按从上到下的顺序逐个执行,每执行完1个等待10秒再执行下一个,跑完最后一个自动回到第一个循环
- 运行时长满20分钟后,线程组会自动终止所有请求,无需手动停止
内容的提问来源于stack exchange,提问作者Joosep Parts
相关产品推荐
相关产品推荐

