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

基于吞吐量控制线程数:JMeter Ultimate Thread Group与If Controller方案咨询

实现方案解析

针对你的需求,有几种可行的实现方式,以下是具体说明:

方案1:拆分独立线程组(最直观易维护)

直接创建两个独立的Ultimate Thread Group:

  • 第一个线程组:设置2个用户,循环次数设为100,将目标采样器放入其中
  • 第二个线程组:设置5个用户,循环次数设为300,放入同一个采样器

这种方式无需额外控制器,逻辑清晰,后续调整线程数或请求量时直接修改对应线程组即可,适合需求明确的场景。

方案2:利用阶段变量+循环控制器(复用采样器结构)

如果希望复用同一个采样器结构,可通过Ultimate Thread Group的阶段属性结合循环控制器实现:

  1. 在Ultimate Thread Group的第一个阶段(2用户)中添加JSR223 PreProcessor,写入代码设置线程级循环次数变量:
    vars.put("loop_count", "100");
    
  2. 在第二个阶段(5用户)中添加另一个JSR223 PreProcessor,设置对应变量:
    vars.put("loop_count", "300");
    
  3. 将采样器放入Loop Controller中,把控制器的「循环次数」设置为 ${loop_count}

每个阶段的线程启动时会自动加载对应的循环次数,采样器将按指定请求量执行。

方案3:If Controller结合线程编号判断(适合简单固定场景)

你提到的If Controller方案也可行,但仅适合线程数固定的简单场景:

  • 创建第一个If Controller,条件设为:
    ${__javaScript(${__threadNum} < 2,)}
    
    内部放入Loop Controller(循环100次)+目标采样器
  • 创建第二个If Controller,条件设为:
    ${__javaScript(${__threadNum} >= 2,)}
    
    内部放入Loop Controller(循环300次)+目标采样器

注意:这种方式依赖线程编号顺序,若后续调整线程数,需手动修改If Controller的条件,灵活性较差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:35:20