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

JMeter运行数小时后请求量下降问题排查求助

JMeter持续测试请求量下降排查

问题概况

  • 测试配置:200并发用户,预期每分钟生成6000次请求
  • 现象:前几小时请求量稳定在6000次/分钟,数小时后请求量逐步下降
  • 运行方式:AWS Ubuntu服务器通过CLI执行命令:
    ./jmeter -n -t ES_Scenario1_Endurancetest.jmx -l /data/apache-jmeter-5.6.2/bin/result/loadtest/ES_EnduranceTest_aggregateResult_100.csv &
    
  • 额外信息:单次API调用返回超过6000行数据
  • JMeter配置说明:
    1. 线程组:线程数200,Ramp-Up时间0秒,循环永久,调度器设置持续时间24小时
    2. 缓存管理器:启用缓存功能,其余为默认配置
    3. 核心属性:配置了HTTP连接超时、响应超时,以及缓存、重定向等基础设置
    4. HTTP请求默认值:指定了协议、服务器地址、端口、编码,以及请求参数、消息体模板
    5. 结果收集器:设置了结果文件路径,包含响应数据等字段

排查步骤

1. 负载机资源瓶颈排查

  • CPU/内存:用htop监控CPU使用率,若持续90%以上说明CPU不足;用free -h查看内存,若可用内存过低或swap频繁读写,会导致JMeter线程卡顿
  • 磁盘:检查结果文件所在磁盘空间,若磁盘满会导致JMeter无法写入结果,甚至终止请求;同时大量写入响应数据(单次6000行)会持续消耗磁盘I/O,拖慢性能
  • 网络带宽:用iftop监控出口带宽,若带宽占满,请求无法及时发送
  • JVM堆内存:编辑jmeter.sh调整HEAP参数,比如改为HEAP="-Xms4g -Xmx8g -XX:MaxMetaspaceSize=512m",根据实例内存合理分配

2. 目标服务器性能退化检查

  • 监控目标API服务器的CPU、内存、磁盘、数据库状态,若服务器负载持续过高,会导致响应变慢,JMeter线程等待时间延长,单位时间请求数下降
  • 查看目标服务器日志,排查是否有超时、连接拒绝、数据库慢查询或连接池耗尽等异常

3. JMeter配置优化

  • 线程组:Ramp-Up设为0秒会瞬间启动200线程,长时间运行可能出现线程阻塞,建议设置合理的Ramp-Up时间(比如200秒,每秒启动1线程),避免瞬间压力过大
  • HTTP连接池:检查httpclient4.maxconnections属性,设置为并发数的2-3倍,确保连接复用正常,避免连接泄漏
  • 结果收集:关闭不必要的字段保存,尤其是响应数据(单次6000行),仅保留请求成功/失败、响应时间等核心指标,减少磁盘和内存消耗

4. 网络问题验证

  • 用mtr持续监控负载机与目标服务器的网络延迟和丢包率,排查AWS内部网络波动
  • 检查AWS安全组、WAF规则,确认是否触发限流策略导致请求被拦截

5. JMeter内部异常排查

  • 查看jmeter.log日志,排查是否有线程异常、内存溢出、资源未释放等报错信息
  • 检查测试脚本是否存在资源泄漏,比如未关闭的数据库连接、文件流等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 23:22:43