You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

JMeter登录负载测试出现java.net.ConnectException连接超时问题求助

解决JMeter连接超时(java.net.ConnectException)问题

作为JMeter新手碰到这个问题很常见,本质是JMeter无法在规定时间内和目标服务器建立TCP连接。我给你梳理几个最实用的排查方向和解决办法:

1. 先确认目标服务的基础可达性

先抛开JMeter,用基础工具验证网络连通性:

  • 在JMeter所在机器上执行 ping 目标服务器域名/IP,确认网络能通
  • 如果是HTTPS接口,试试 telnet 目标域名 443 或者 curl -v 目标登录接口地址,看能不能正常建立连接
  • 要是这些工具都连不上,那大概率是网络层面的问题:比如防火墙拦截、服务器宕机、域名解析错误,得先搞定这部分

2. 调整JMeter的超时配置

JMeter默认的连接超时时间可能太短,尤其是目标服务器在公网或负载较高时:

  • 打开你的HTTP请求取样器,切换到「高级」标签页,把「连接超时」和「响应超时」的值调大,比如从默认的10000(10秒)改成30000(30秒)
  • 也可以在JMeter安装目录的 bin/user.properties 文件里全局配置超时:
    httpclient.timeout=30000
    

3. 检查代理设置

如果你所在的网络需要通过代理才能访问外部服务,JMeter必须同步配置:

  • 点击JMeter顶部「选项」→「HTTP代理服务器」,或者在HTTP请求取样器的「高级」标签里填写代理主机、端口,有需要的话加上代理账号密码
  • 注意:公司内网代理可能会限制访问特定服务器,最好确认代理是否允许访问目标服务的端口

4. 排查服务器端的状态

  • 目标服务器如果当前负载过高(CPU、内存占满),可能会拒绝新的连接请求,导致超时,可以让运维帮忙查看服务器监控
  • 检查服务器防火墙的入站规则,确认是否允许JMeter所在机器的IP访问目标端口

附上你的错误信息参考

响应码:Non HTTP response code: java.net.ConnectException
响应信息:Non HTTP response message: Connection timed out: connect
完整堆栈信息:

java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
at sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
at org.apache.jmeter.protocol.http.sampler.HTTPJavaImpl.sample(HTTPJavaImpl.java:508)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1189)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1178)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:498)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:424)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255)
at java.lang.Thread.run(Unknown Source)

内容的提问来源于stack exchange,提问作者Henry.Huang

火山引擎 最新活动