JMeter使用并行控制器压测时出现NoHttpResponseException等报错如何解决?
JMeter并行API测试间歇性连接报错解决方案
客户端配置优化
- 调整HTTP请求超时参数:在HTTP请求默认值或单个采样器的「高级」标签页,将连接超时设置为20000,响应超时设置为30000,避免短时间未收到服务端响应直接抛出异常。
- 切换HTTP客户端实现:在HTTP请求的「高级」标签页将默认的HttpClient4切换为
Java实现,部分版本的HttpClient对并行SSL连接的处理存在兼容性问题,切换实现可解决大部分偶发SSL异常。 - 优化连接复用规则:在
jmeter.properties文件中修改以下配置:- 开启陈旧连接检查:
http.connection.stalecheck=true,避免使用服务端已主动关闭的空闲连接 - 限制连接存活时间:
httpclient4.time_to_live=30000,强制连接30秒后自动销毁重建,避免两端连接回收时间不匹配
- 开启陈旧连接检查:
- 调整并行控制器规则:若有重试需求可勾选并行控制器的「Generate parent sample」选项,配合后置重试逻辑处理偶发失败的请求。
SSL协议适配优化
- 统一TLS协议版本:在
jmeter.properties文件中修改配置,强制使用服务端兼容的TLS版本发起请求:
可根据服务端实际支持的版本调整,避免使用已废弃的TLSv1、TLSv1.1协议。https.default.protocol=TLSv1.2 https.socket.protocols=TLSv1.2 - 禁用SSL会话复用:在
system.properties文件中添加配置javax.net.ssl.sessionCacheSize=0,避免复用过期的SSL会话导致连接重置。
服务端侧排查方向
- 检查接入层连接限制:确认Nginx、Tomcat等接入层的最大连接数、每秒请求数阈值是否满足当前负载的并行请求量,避免服务端主动丢弃超额请求。
- 核对连接超时配置:确认服务端的keepalive超时时间是否过短,若服务端空闲连接回收时间短于JMeter的连接复用时间,就会出现JMeter使用旧连接发请求时服务端已关闭连接的问题。
- 排查安全策略限制:确认WAF、防火墙是否设置了短时间同IP并行请求的频率限制,触发限制后会主动断开连接导致报错。
快速验证方案
若需要快速定位问题根因,可先在HTTP请求默认值中取消勾选「使用KeepAlive」选项,每次请求都新建连接,若报错消失则可确定是连接复用导致的问题,再针对性调整连接存活时间参数即可。
内容的提问来源于stack exchange,提问作者Kaushal Kumar
相关产品推荐
相关产品推荐

