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

JMeter中如何让一个线程组与另外3个串行线程组并行运行?

解决方案

方案一:单个线程组+Per Sampler模式吞吐量控制(推荐)

这种方案无需多线程组,既能实现API2、API3、API4的串行执行,又能让API1与该串行流程并行,同时精准控制每个API的吞吐量:

  1. 创建两个线程组:

    • 线程组1:执行API1
      • 添加HTTP请求采样器,配置API1的请求参数
      • 添加Constant Throughput Timer,设置:
        • 吞吐量:2600
        • 计算模式:All active threads in current thread group(该线程组仅含API1,直接控制整体速率即可)
    • 线程组2:串行执行API2、API3、API4
      • 按顺序添加HTTP请求采样器:API2、API3、API4(默认串行执行,满足提取器依赖需求)
      • 为每个采样器单独添加Constant Throughput Timer(作为采样器的子节点,确保作用域仅对应采样器),每个定时器设置:
        • API2的定时器:吞吐量15000,计算模式选Per Sampler
        • API3的定时器:吞吐量60,计算模式选Per Sampler
        • API4的定时器:吞吐量1,计算模式选Per Sampler
  2. 关键说明:

    • Per Sampler模式下,每个Constant Throughput Timer会独立控制对应采样器的请求速率,不会互相干扰,解决了你之前单个线程组多定时器失效的问题。
    • 两个线程组默认并行运行,刚好满足API1与另外三个API的串行流程并行的需求。

方案二:多线程组+串行控制(适合坚持单API单线程组的场景)

如果必须给每个API单独分配线程组,可通过以下方式实现API2、API3、API4的线程组串行,同时与API1的线程组并行:

  1. 创建四个线程组:

    • 线程组A(API1):配置Constant Throughput Timer为2600 req/min,保持默认并行设置
    • 线程组B(API2):配置Constant Throughput Timer为15000 req/min
    • 线程组C(API3):配置Constant Throughput Timer为60 req/min
    • 线程组D(API4):配置Constant Throughput Timer为1 req/min
  2. 控制线程组B、C、D的串行执行:

    • 关闭测试计划的Run Thread Groups Consecutively选项(让线程组默认并行)
    • 在线程组C的Thread Group设置中,添加启动延迟:${__groovy(ctx.getThreadGroupByName('线程组B').getEndTime() - ctx.getThreadGroupByName('线程组B').getStartTime(),)},即等线程组B执行完成后再启动线程组C
    • 在线程组D的Thread Group设置中,添加启动延迟:${__groovy(ctx.getThreadGroupByName('线程组C').getEndTime() - ctx.getThreadGroupByName('线程组C').getStartTime(),)},即等线程组C执行完成后再启动线程组D
  3. 效果:
    线程组A与线程组B同时启动,线程组B完成后启动线程组C,线程组C完成后启动线程组D,最终实现API1与API2→API3→API4的串行流程并行执行。

注意事项

  • 方案一中,务必将每个采样器的Constant Throughput Timer作为子节点添加,避免作用域覆盖其他采样器。
  • 方案二中的Groovy函数需JMeter 3.0及以上版本支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:35:08