JMeter中如何按顺序逐个用户运行多线程组?
JMeter实现用户级跨线程组串行执行方案
你的需求(先执行用户1的线程组1→用户1的线程组2→用户2的线程组1→用户2的线程组2……)默认JMeter无法直接实现,但借助Inter Thread Communication插件可以达成,具体配置步骤如下:
标记线程组1的用户执行完成
在线程组1的最后添加「Inter Thread Communication PostProcessor」,配置:- 操作类型:
Put Value - 变量名:
user_${__threadNum}_done - 值:任意内容(比如
1)
这个组件会在当前用户的线程组1执行完毕后,写入一个全局变量标记完成状态。
- 操作类型:
线程组2的用户等待对应信号
在线程组2的最前面添加「Inter Thread Communication PreProcessor」,配置:- 操作类型:
Wait for Value - 变量名:
user_${__threadNum}_done - 超时时间:设足够长(比如
30000毫秒)
这样线程组2的第N个用户会一直等待,直到线程组1的第N个用户完成并写入对应变量,才会开始执行自身的采样器。
- 操作类型:
控制线程组1的用户逐个启动
默认的加速期5秒会让10个用户在5秒内陆续启动,可能导致用户1还没跑完线程组1,用户2已经开始。需要调整:- 线程组1的「加速期」设为
0 - 在线程组1最前面添加「Constant Timer」,设置「线程延迟」为
3000(3秒),并勾选「仅适用于当前线程」
这样线程组1的用户会一个接一个启动,每个间隔3秒,保证前一个用户的线程组1完成后,下一个用户才开始。
- 线程组1的「加速期」设为
额外注意事项
- 两个线程组的线程数必须一致(都是10),这样
${__threadNum}才能精准匹配同一个用户的两个线程 - 测试计划不要勾选「独立运行每个线程组」,保持默认的线程组顺序执行逻辑
- 线程组2的「线程启动延迟」可以删除,因为已经通过等待信号实现同步
- 两个线程组的线程数必须一致(都是10),这样
内容的提问来源于stack exchange,提问作者Saisree
相关产品推荐
相关产品推荐

