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

JMeter 5.5并发测试超时求助:HttpHostConnectException等错误排查

问题描述

我正在使用Apache JMeter 5.5版本,尝试运行超过500用户的压测场景。测试在200用户以内无报错,但超过该数量后开始抛出以下错误:
Non HTTP response code: org.apache.http.conn.HttpHostConnectException
Non HTTP response code: org.apache.http.conn.ConnectTimeoutException
Non HTTP response code: java.net.SocketTimeoutException

错误分为两类:

  • 超时错误
  • 读取超时错误

已尝试的解决方案:

  • 启用并检查keep-alive设置
  • 将超时时间设置为100000毫秒

请问如何解决这些错误?这些错误是来自JMeter脚本还是服务器端?


解决方案与错误定位

一、错误来源判断

这些错误大概率是服务器端或网络层面的瓶颈导致,而非JMeter脚本本身,理由如下:

  1. 200用户以内正常、超过后报错,说明负载超过了目标服务/网络的处理阈值
  2. HttpHostConnectException:无法建立TCP连接,通常是服务器连接数耗尽(如操作系统文件句柄限制、Web服务器最大连接数配置不足)
  3. ConnectTimeoutException:发起连接后超时,说明服务器来不及响应新的连接请求
  4. SocketTimeoutException:连接建立后读取响应超时,说明服务器处理请求的速度跟不上,请求堆积导致超时

二、JMeter端优化(减少不必要的负载损耗)

  1. 调整加压模式

    • 不要一次性启动500用户,改用阶梯式加压(可借助Stepping Thread Group插件),模拟真实用户逐步涌入的场景,避免瞬间压垮服务器
    • 合理设置Ramp-Up Period,比如500用户设置500秒,每秒启动1个用户,给服务器缓冲时间
  2. 优化HTTP请求配置

    • 确保HTTP Request的Implementation选择HttpClient4(JMeter默认),它比旧Java实现更高效
    • 在HTTP Request Defaults的Advanced标签中,调整连接池参数:设置Max Connections per Host为500、Max Total Connections为1000,避免JMeter端连接不足
    • 压测时禁用View Results Tree、Summary Report等GUI监听器,改用命令行模式或后端监听器(如InfluxDB+Grafana),减少JMeter本地资源消耗
  3. 提升JMeter本地性能

    • 修改jmeter.bat/jmeter.sh中的JVM参数,增加堆内存:例如设置HEAP="-Xms2g -Xmx4g"(根据本地机器配置调整,不超过物理内存的70%)
    • 确保JMeter运行在64位JDK环境下,避免32位JVM的内存限制

三、服务器端及网络排查

  1. 检查服务器资源瓶颈

    • 监控CPU、内存、磁盘IO、网络带宽:用top(Linux)或任务管理器(Windows)查看,若某一项资源使用率接近100%,即为对应瓶颈
    • 查看Web服务器日志(如Nginx、Tomcat的access.log/error.log),确认是否有连接拒绝、超时相关的错误
    • 调整服务器TCP连接限制:Linux下用sysctl net.core.somaxconn查看最大监听队列长度,ulimit -n查看文件句柄限制,若值过小,需修改配置(如sysctl -w net.core.somaxconn=1024、ulimit -n 65535,并写入配置文件永久生效)
  2. 调整Web服务器配置

    • 提升Web服务器最大连接数:例如Tomcat在server.xml中修改maxConnections、maxThreads;Nginx在nginx.conf中修改worker_connections
    • 确保服务器端开启keep-alive:Tomcat默认开启,Nginx需配置keepalive_timeout,与JMeter的设置保持匹配
  3. 网络层面排查

    • 用ping、traceroute(Linux)/tracert(Windows)测试JMeter机器与目标服务器之间的网络延迟、丢包情况
    • 确认防火墙、负载均衡器是否限制了连接数或带宽

四、精准定位错误来源的方法

  1. 在200用户正常运行时,同时监控服务器资源和连接数:若资源还有剩余,可能是JMeter端配置问题;若资源已饱和,肯定是服务器端瓶颈
  2. 高负载时用telnet或curl测试服务器端口:若无法连接,说明服务器拒绝新连接
  3. 查看JMeter的jmeter.log:若有OutOfMemoryError等本地资源报错,则是JMeter端问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:00:57