JMeter登录请求报NoHttpResponseException异常求助排查
JMeter登录请求运行一段时间后抛出NoHttpResponseException异常
异常信息
org.apache.http.NoHttpResponseException: example.com:443 failed to respond at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141) at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56) at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163) at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157) at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:939) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:650) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:66) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1301) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1290) at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:651) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:570) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) at java.base/java.lang.Thread.run(Thread.java:833)
请求详情
请求内容
POST https://example.com/auth/token POST data: {"scope":"application","grant_type":"sso_token"} [no cookies]

请求头
Connection: keep-alive authority: example.com accept: application/json, text/plain, */* accept-language: en-US,en;q=0.9 authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ii1LSTNROW5OUjdiUm9meG1lWm9YcWJIWkdldyJ9.eyJhdWQiOiIwZGE2MGM0ZDA2LTQ1ZDItYmYxNy1hYTA4ZTE1NDgiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vYmQ1OGI3MDgWY0Ni00ZGViLJkNzgtYmI0ZWY4ODU5ZTZhL3YyLjAiLCJpYXQiOjE2NzYyNQ2NzYsIm5iZiI6MTY3NjI3NDY3NiwiZXhwIjoxNjc2Mjc4NTc2LCJhaW8iOiJBVFFBeS84VEFBQUFzSHA3eVZTU1M4bHJvSlUwZm04ZUwwempXSU5ScGppS1hPd3ZPRWN2Q0NhRGpwRE1udVBlVGxnRlFpSGk3c1pUIiwiZW1haWwiOiJBZGVsZVZATTM2NXg4MzUwNTY1MC5Pbk1pY3Jvc29mdC5jb20iLCJuYW1lIjoiQWRlbGUgVmFuY2UiLCJvaWQiOiI1NWQzNjRjMS02MzZlLTRkOTktOTM4ZS1iMTQ0MjdkYTZhZmIiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJBZGVsZVZATTM2NXg4MzUwNTY1MC5Pbk1pY3Jvc29mdC5jb20iLCJyaCI6IjAuQVU0QUNMZFl2VWJ2NjAyOWVMdE8tSVdlYWswTXBnMEdvTkpGdnhlcUNPRldRQWlEQUxjLiIsInN1YiI6InZjQU9nd0xOTWRZV2JZYWFjU3NJWEFPQ0RZYmpyanRHT1ZuUml3Umk5M2ciLCJ0aWQiOiJiZDU4YjcwOC1lZjQ2LTRkZWItYmQ3OC1iYjRlZjg4NTllNmEiLCJ1cG4iOiJBZGVsZVZATTM2NXg4MzUwNTY1MC5Pbk1pY3Jvc29mdC5jb20iLCJ1dGkiOiJHZll1cXJPWVYwQ2xaUzZnMkRFdUFBIiwidmVyIjoiMi4wIn0.V-h8D1TGj9vb2jVwBFGtm3jBH54lfGMOD_xHWYbfornN5ml31K6FnIumMU5i2oBOUcMpDOgM-2_XCbnWPou5iCc_I703kd_zwW6CAgUDBVJtfSmU6Go--hohzMWZuFG7ftKIX0_ftDmRzqJWOw-bwKy5E4NdXImibeKgQsx_N4QFLMx6X9SVDYhf5mXnabkgpdgEn8m2BtM__mYlCJgw7ci6WRuEg6CzocsrKJrNsiUF74vPLkp-tDkbXZFY-1PvNAzAPQEVUZ2kzIXKDf8_O2vd0ozycaz-MVKw6nxOZnYNzXVaTBvkw9sIFMWbW4biZw7GxgrIIC1ux4KvpXuwA cache-control: no-cache content-type: application/json origin: https://example.com_2.net User-Agent: Apache-HttpClient/4.5.13 (Java/18.0.2.1)

测试场景说明
测试脚本包含登录请求,运行一段时间后停止工作并抛出上述异常。测试流程为:在事务控制器中从一个系统获取Bearer令牌,再用该令牌在另一个服务中完成授权。Bearer令牌来自之前可正常运行的请求,但归属不同授权系统。将请求信息复制到Postman可正常执行,已尝试切换HTTP采样器客户端实现、重装Java,问题仍未解决。
可能的解决方案
- 禁用HTTP Keep-Alive:在HTTP请求采样器的「高级」标签中,将
Connection头设置为close,或在jmeter.properties中添加httpclient4.reuseconnections=false,避免复用已被服务器关闭的连接。 - 设置超时参数:在HTTP请求采样器中配置合理的连接超时和响应超时时间,避免因连接长时间无响应触发异常。
- 调整连接池配置:修改
jmeter.properties中的连接池参数,确保闲置连接自动校验有效性:httpclient4.max_total=200 httpclient4.max_per_route=20 httpclient4.validate_after_inactivity=5000 - 添加重试机制:使用JMeter的
Retry Controller,或在HTTP请求采样器的「高级」标签中启用重试,针对NoHttpResponseException执行重试逻辑。 - 排查服务器限制:高并发场景下服务器可能主动关闭空闲连接,需确认服务器的连接超时、并发连接数限制等配置。
- 升级JMeter版本:若使用旧版JMeter,升级至最新稳定版,可能修复HTTP客户端相关的已知bug。
内容的提问来源于stack exchange,提问作者Sergey Konotop
相关产品推荐
相关产品推荐

