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

如何在JMeter中固定TPS,不受线程数量影响?

如何在JMeter中维持固定总TPS(不受线程数影响)

要实现所有API总请求次数之和固定、TPS维持在200的目标,核心是利用JMeter的吞吐量控制组件,以下是具体实现步骤:

核心方案:使用Constant Throughput Timer

这个定时器可以强制控制所有线程的总请求吞吐量,不受线程数量变化影响。

  • 给目标线程组添加定时器:右键线程组 → 添加 → 定时器 → Constant Throughput Timer
  • 配置关键参数:
    • Throughput:填入12000(注意:默认单位是请求/分钟,200TPS需换算为200*60=12000)
    • Calculate throughput based on:选择All active threads (shared),此选项会让定时器控制所有活跃线程的总吞吐量,而非单个线程的吞吐量,确保总TPS稳定在目标值
  • 线程组配套配置:
    • 循环次数设为永远,避免线程提前终止
    • 设置测试持续时间(如3600秒),控制压测时长

多API的请求分配(可选)

如果需要给5个API分配固定的TPS比例(比如各占20%,单API40TPS),可配合以下组件:

  • 给每个API请求单独添加Constant Throughput Timer,设置对应吞吐量(如40TPS=2400请求/分钟),同时将每个定时器的Calculate throughput based on设为Current thread,实现单API的TPS独立控制,总和维持200
  • 或者使用Weighted Random Controller:将5个API放入该控制器,设置每个API的权重(权重相同则请求比例均等),再给整个线程组加总吞吐量定时器,实现总TPS固定、API按权重分配请求量

进阶方案:Precise Throughput Timer

如果需要更精准的TPS控制(避免短时间内请求突增),可以用Precise Throughput Timer:

  • 添加方式:右键线程组 → 添加 → 定时器 → Precise Throughput Timer
  • 配置:设置目标吞吐量为200(单位为请求/秒),选择Total for all threads模式,它会更均匀地分配请求时间间隔,确保TPS稳定

注意事项

  • 线程数要充足:线程数至少满足 线程数 = 目标TPS * 平均响应时间(秒),比如平均响应时间0.5秒,200TPS至少需要100个线程,否则线程不足会导致无法达到目标TPS
  • 关闭延迟线程创建:线程组的Delay thread creation until needed建议关闭,确保所有线程提前初始化,避免影响吞吐量控制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:44:55