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

如何使用Weighted Switch Controller实现带权重的同步并行请求执行?

正确的JMeter测试计划结构与实现方案

核心结构层级

测试计划
- 线程组
  - 登录请求(或登录逻辑控制器)
  - 同步定时器(Synchronization Timer)
  - 加权开关控制器(Weighted Switch Controller)
    - [权重值]:组1事务控制器(可选,用于统计)
      - 并行控制器(Parallel Controller)
        - 组1请求1
        - 组1请求2
    - [权重值]:组2事务控制器(可选,用于统计)
      - 并行控制器(Parallel Controller)
        - 组2请求1
        - 组2请求2
    - [权重值]:组3事务控制器(可选,用于统计)
      - 并行控制器(Parallel Controller)
        - 组3请求1
        - 组3请求2

关键组件配置说明

1. 同步定时器

  • 作用:确保所有登录后的用户统一等待,直到指定数量的线程全部到达后再执行后续操作
  • 配置:
    • 勾选「同组内的所有线程」
    • 「要等待的线程数」设为线程组总用户数(若需分批同步可设为单批数量)
    • 可设置合理超时时间,避免无限等待

2. 加权开关控制器

  • 作用:按权重分配用户到3组并行请求
  • 配置:
    • 直接给子节点(事务控制器/并行控制器)的名称添加权重前缀,格式为[权重数值]:节点名称,例如40:组1事务、35:组2事务、25:组3事务
    • JMeter会按权重比例分配流量(总权重无需强制为100,按比例计算即可,如3:2:1对应50%、33%、17%的分配比例)

3. 并行控制器

  • 作用:执行组内的并行请求
  • 配置:
    • 默认使用当前线程组的线程数,即每个用户独立并行执行本组内的请求
    • 若需限制并行数量,可在控制器设置中调整「使用的线程数」

原方案问题分析

  • 同步定时器位置错误:若放在加权开关控制器内部,仅会触发选中组的用户同步,而非所有用户统一等待
  • 权重分配逻辑失效:若并行控制器嵌套在未加权重前缀的事务控制器内,加权开关会将事务控制器视为无权重的子节点,导致权重规则不生效

实现步骤

  1. 创建线程组,设置总用户数、Ramp-Up时间等基础参数
  2. 添加登录请求,确保用户完成身份验证
  3. 添加同步定时器,配置全局等待规则
  4. 添加加权开关控制器,为3组请求的父节点(事务/并行控制器)设置带权重的名称
  5. 在每个权重节点下添加并行控制器,再放入对应组的请求
  6. (可选)给每组添加事务控制器,用于统计该组请求的响应时间、成功率等指标

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:52:29