如何实现JMeter中sampler按指定顺序执行
JMeter Sampler执行乱序问题解决方案
问题根因定位
默认同线程组内的Sampler本就会按从上到下的顺序执行,出现乱序基本是以下几个原因导致:
- 定时器作用域配置错误:你配置的
Synchronizing Timer、Uniform Random Timer如果直接放在线程组根目录下,默认会作用于同级/下级所有Sampler,会打乱Sampler的执行触发时机,这是最常见的诱因。 - 两个Sampler被放到了不同的逻辑控制器/线程组下,控制器的执行逻辑或线程组并行配置导致顺序混乱。
- 正则提取器作用域配置错误,提取值被其他线程/采样器覆盖,让你误以为是执行顺序乱了。
修复步骤
修正定时器作用域
把你配置的所有定时器移动到对应要生效的Sampler的子节点下,不要放在线程组根目录共享:- 如果定时器要给第一个Sampler用,就拖到第一个Sampler下面作为它的子元件
- 如果要给第二个Sampler用,就拖到第二个Sampler下面
- 如果两个Sampler都要用同配置的定时器,就每个Sampler下各放一个单独配置
确认执行规则配置
- 两个Sampler要放在同一个线程组内,按你要的执行顺序从上到下排布,不要拆分到不同线程组
- 如果用了逻辑控制器(如If控制器、Loop控制器),确认控制器的执行逻辑不会跳过/提前触发第二个Sampler
- 若存在多个线程组,打开测试计划根节点,勾选
Run Thread Groups consecutively (i.e. run groups one at a time)
结果验证
在两个Sampler中间添加Debug Sampler,搭配View Results Tree查看执行顺序,也可以在每个Sampler的名称里加上${__threadNum}和时间戳${__time(yyyy-MM-dd HH:mm:ss.SSS,)},直接在结果树里核对每个线程的Sampler执行顺序即可。
特殊场景补充
如果你要实现的是所有线程的第一个Sampler全部执行完再统一执行第二个Sampler,不是单个线程内的顺序要求,直接把两个Sampler拆分到两个独立的线程组,勾选测试计划的Run Thread Groups consecutively即可。
内容的提问来源于stack exchange,提问作者James P.
相关产品推荐
相关产品推荐

