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

JMeter实现150请求/分钟持续20分钟负载测试的问题咨询

用JMeter实现精准150请求/分钟、持续20分钟的负载测试

完全可以用JMeter实现该需求,无需更换Locust。先分析你之前三种方法的问题,再给出正确方案:

你之前方法的问题

  • 方法1:设置3000线程+1200秒Ramp-up的思路错误。这种方式是让JMeter逐步启动3000个线程,每个线程执行一次请求,线程是重量级资源,启动数千个必然触发OutOfMemoryError。而且这种方式无法保证恒定速率,线程启动后会立即发请求,速率会大幅波动。
  • 方法2:并发线程组是控制并发数而非请求速率。150并发意味着同时有150个线程在运行,若每个请求耗时1秒,每分钟请求数会达到9000,远超过150的要求,样本数自然会超3000。
  • 方法3:Precision Timer可以用来控制请求间隔,但需要结合线程数和请求耗时,配置不当会导致速率不达标。

正确实现方案:Constant Throughput Timer(恒定吞吐量定时器)

这是JMeter专门用于控制请求速率的组件,步骤如下:

  1. 线程组配置:
    • 线程数设为50(足够支撑150req/min的速率,避免线程不足拖慢速率)
    • 循环次数设为永远
    • Ramp-up时间设为10秒(快速启动所有线程)
  2. 添加Constant Throughput Timer:
    • 将Target throughput (in samples per minute)设为150
    • Calculate throughput based on选择All active threads (shared),让JMeter控制所有线程的总请求速率稳定在150/分钟
  3. 添加Duration Timer(持续时间定时器):
    • 设置持续时间为1200秒(即20分钟),到时间后自动终止测试

Precision Timer的正确用法(备选)

若想用Precision Timer实现,需计算请求间隔:150req/min = 每4秒1个请求(60÷150=4)。配置如下:

  • 在Precision Timer中设置Delay为4000毫秒
  • 线程组循环次数设为永远,搭配Duration Timer控制20分钟时长
  • 注意:这种方式依赖线程数,若单个请求耗时超过4秒,会导致速率无法达标,因此Constant Throughput Timer是更可靠的选择

OutOfMemoryError的解决

若仍遇内存问题:

  • 修改JMeter启动脚本(jmeter.bat或jmeter.sh)中的JVM参数,例如将-Xms1g -Xmx2g调整为-Xms2g -Xmx4g,增大堆内存
  • 测试期间关闭不必要的监听器(如「查看结果树」),减少内存消耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:55:34