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

JMeter压测问题求助:仅能发送10k请求,无法达成预期请求量

解决JMeter压测卡10k请求无法结束的问题

问题根源分析

你当前的线程数配置(4200线程)严重过高,完全超出达到目标QPS的实际需求:

  • 你的目标是4个请求各每秒14次,总QPS为56
  • 4200线程会耗尽JMeter客户端的CPU、内存、网络连接数,导致无法创建新线程或发送请求,最终卡在10k请求无法推进
  • 测试无法结束是因为大量线程处于阻塞状态(等待连接/响应),无法正常终止

解决方案

1. 改用QPS精准控制的配置(推荐)

放弃大线程数的方式,用JMeter的**常数吞吐量定时器(Constant Throughput Timer)**直接控制请求频率,完全匹配你的需求:

  • 添加线程组:设置线程数为120(留足够余量,无需过大),循环次数设为永远
  • 添加常数吞吐量定时器:
    • 选择Calculate throughput based on为All active threads (shared)
    • 设置Throughput为56(4个请求×14次/秒的总QPS)
  • 若需单独控制每个请求的14次/秒:给每个请求分别添加常数吞吐量定时器,选择Current thread,设置Throughput为14
  • 添加持续时间定时器(Duration Timer):设置持续时间为300秒,确保测试自动结束

2. 优化JMeter资源配置

  • 调整JVM堆内存:编辑jmeter.bat(Windows)或jmeter.sh(Linux),修改HEAP参数,例如:
    HEAP="-Xms2g -Xmx2g"
    
    根据你的机器内存调整,避免内存溢出
  • 关闭不必要的监听器:压测时禁用“查看结果树”“查看结果表格”等消耗内存的监听器,只保留“聚合报告”或后端监听器
  • 调整系统资源限制(Linux/macOS):执行ulimit -n 65535临时提升文件描述符上限,避免因连接数过多导致无法建立新连接

3. 排查测试阻塞原因

  • 查看jmeter.log日志:检查是否有OutOfMemoryError、连接超时、线程挂起等报错信息
  • 检查请求超时设置:若请求的响应超时时间过长,会导致线程长期阻塞无法释放,可适当缩短超时时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:30:19