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

JMeter脚本求助:5用户20秒生成20请求却产生约40请求

解决JMeter请求量超标的问题

问题根源

你遇到的请求量翻倍(40个而非预期20个),核心原因是Constant Throughput Timer的作用范围或配置逻辑错误,叠加事务控制器的统计方式导致重复计数:

  • 默认情况下,Constant Throughput Timer会让每个线程都达到设置的吞吐量(60请求/分钟),5个线程的总吞吐量会变成300请求/分钟,20秒对应100请求;你实际得到40个,大概率是Timer被应用到了两个事务控制器上,每个控制器都按60请求/分钟执行;
  • 若事务控制器勾选了Generate Parent Sample,会把控制器本身也算作一个请求,导致统计时重复计数。

修复步骤

1. 调整Constant Throughput Timer的配置

  • 将Timer放在线程组最外层,确保它控制整个线程组的总吞吐量,而非单个线程或事务控制器;
  • 在Timer的Calculate Throughput based on选项中,选择 "All active threads in current thread group",这样设置的60请求/分钟就是整个线程组的总吞吐量,20秒正好对应20个请求;
  • 确认Timer的作用范围仅覆盖线程组内的所有请求,不要单独绑定到某个事务控制器。

2. 修正事务控制器的统计逻辑

  • 对于内部、外部用户的两个事务控制器,取消勾选"Generate Parent Sample",避免将控制器本身统计为请求,导致请求数翻倍;
  • 可以在事务控制器名称中明确标注(如"内部用户流程"、"外部用户流程"),方便后续区分统计数据。

3. 实现内部/外部用户的随机分配

  • 在线程组中添加Random Variable元件,设置变量名(如userType),值范围设为0-1;
  • 在两个事务控制器上分别添加If Controller:
    • 内部用户控制器的If条件:${__javaScript(${userType} == 0,)}
    • 外部用户控制器的If条件:${__javaScript(${userType} == 1,)}
      这样每个线程启动时会随机选择执行内部或外部用户的流程,实现用户数的随机分配。

4. 验证请求数

  • 运行脚本前,在查看结果树中开启“仅日志错误”,减少冗余日志;
  • 运行后查看聚合报告,确认总请求数是否为20左右;
  • 若仍有偏差,检查是否存在其他定时器(如Constant Timer)干扰请求间隔,或微调Constant Throughput Timer的吞吐量值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:23:15