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

JMeter线程组3线程循环1次时如何按AB顺序执行HTTP请求?

解决JMeter线程组AB顺序执行与Azure SignalR连接问题

先解决B复用ID的核心问题

你现在的问题本质是变量没做线程隔离——如果A生成的连接ID存在了全局变量里,所有线程都会拿最后那个值。换成线程局部变量就搞定:

  • A请求里存ID的时候,别用全局的__setProperty(),直接用vars.put("connectionId", "生成的ID"),每个线程会有自己独立的变量副本。
  • B请求里直接引用${connectionId},这样每个B只会用自己线程A生成的ID,不会串。

这时候每个线程都是独立跑A→B,虽然线程并行启动看起来像AAABBB,但逻辑上每个B对应自己的A,完全满足ID复用的需求,而且3个线程对应3个Azure SignalR连接,测试结束后都会保持打开,符合压力测试的要求。

如果必须严格按ABABAB的顺序执行

要是非得让线程1跑完A→B,再线程2跑A→B,再线程3,用这俩方法:

方法一:用同步定时器强制串行

  • 在A请求前面加个Synchronizing Timer,把「Number of Simultaneous Users to Group by」设成1。这样每次只允许1个线程进入执行流程。
  • 每个线程里的顺序是:同步定时器 → A → B。线程会排队依次执行,完美实现ABABAB的顺序,而且每个线程执行完不会立刻关连接,最终3个连接都保持打开。

方法二:给线程加启动延迟

  • 在线程组的「Thread Delay」里填${__threadNum}*1000,意思是线程1立刻启动,线程2延迟1秒,线程3延迟2秒。
  • 调整延迟时间(比如把1000改成2000),保证前一个线程的B跑完,下一个线程再启动A,就能接近ABABAB的顺序。

适配Azure SignalR的连接保持

  • 所有HTTP请求都要开「Keep-Alive」:在HTTP请求的「Advanced」标签里勾上Use keepalive,确保连接不会随请求结束就关。
  • 检查Azure SignalR的连接超时配置,别让测试过程中连接被提前踢掉。这样3个线程对应3个独立连接,测试结束后都能保持打开,满足压力测试的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:12:41