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

Apache JMeter Constant Throughput Timer无法提升至150请求/秒问题求助

问题分析与解决方案

首先,咱们得先搞清楚为什么Constant Throughput Timer没起作用——大概率是线程数不足、循环次数不够或者定时器的作用范围/配置细节没到位,结合你的场景一步步排查:

1. 先确认线程组基础配置是否达标

你当前用10个线程,每个线程跑15个API请求。咱们算笔账:如果当前每秒只能发55个请求,说明每个线程完成一轮15个请求的时间大概是 (10*15)/55 ≈ 2.7秒。要达到150请求/秒的目标,理论上需要的线程数至少是 (150 * 2.7)/15 ≈ 27个(实际还要看服务器响应时间的变化)。

所以第一步:增加线程数,先尝试调到30左右,看看吞吐量有没有明显提升。

2. 检查Constant Throughput Timer的核心配置

你设置的9000请求/分钟(对应150/秒)数值是对的,但要确保这几个关键选项没选错:

  • Calculate Throughput based on:一定要选 Current thread group,这样定时器是控制整个线程组的总吞吐量,而不是每个线程单独的吞吐量(如果选Per thread,10个线程会把总吞吐量拉到90000/分钟,远超目标但线程不够的话反而没用)。
  • 定时器放置位置:把它放在线程组的根节点下,确保能覆盖所有15个API请求(如果放在循环控制器里面,可能只会控制循环内的部分请求,导致吞吐量计算不准)。

3. 确保循环次数足够支撑持续测试

如果你的线程组绑定CSV文件、只循环一次的话,总请求数只有10*15=150个,测试几秒钟就结束了,定时器根本没机会把吞吐量调到目标值。

解决方法:

  • 把线程组的循环次数改成永远,或者设置一个足够大的数值(比如100次),让测试持续运行几分钟,这样定时器才有时间调整线程延迟,逐步逼近目标吞吐量。
  • 如果CSV文件里只有10条用户数据,记得勾选线程组的Recycle on EOF(文件读完后循环复用数据),保证线程能持续运行。

4. 移除不必要的延迟(思考时间)

如果你的请求里加了思考时间(比如Constant Timer、Random Timer),会增加每个线程的迭代时间,直接拉低吞吐量。如果是压测服务器最大容量,应该把所有思考时间设置为0,让JMeter尽可能快地发送请求。

5. 排查系统瓶颈(JMeter或服务器)

如果上面的配置都改了还是达不到150/秒,就要排查是不是硬件瓶颈:

  • JMeter所在机器:打开任务管理器看CPU、内存使用率,如果CPU已经跑满100%,说明JMeter本身性能不够,需要用分布式测试(多台机器一起跑JMeter),或者优化JMeter配置(比如修改jmeter.properties里的httpclient4.maxconnections等参数,增大连接池大小)。
  • 服务器端:检查服务器的CPU、内存、磁盘IO、网络带宽,如果某一项已经到瓶颈,得先优化服务器(比如扩容、优化API性能),不然再怎么调JMeter也没用。

最后验证步骤

改完配置后,先跑测试5-10分钟,看聚合报告里的Throughput指标是不是稳定在150左右。如果还是不行,再检查定时器的作用范围和线程组的循环配置,确保没有遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:17:40