码迷,mamicode.com
首页 > Web开发 > 详细

HttpClient报错Timeout waiting for connection from pool

时间:2020-06-13 00:35:52      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:并发   超时   配置   code   问题   etc   time   网上   custom   

报错现象

线上项目使用HttpClient请求第三方的HTTP资源,并发量高的时候,日志框报Timeout waiting for connection from pool

客户端的现象是有时正常,有时报错

 

原因分析

网上查找资料,很多照搬某个博客的解决方法,大致是合理的使用EntityUtils.consume及时释放请求连接

这个说法没错,但是这里的问题不是请求连接释放不当导致的

出现这个异常是因为新的请求来的时候,需要到HttpClient的线程池里面获取一个连接,作为请求连接

当请求等待获取连接的时间超过设置的connectionRequestTimeout,就会抛出Timeout waiting for connection from pool异常

 

解决方法

1. 合理的配置HttpClient的连接池大小

 

clientBuilder.setMaxConnTotal(maxConnections);

2. 结合业务现状配置连接超时时间

RequestConfig.custom().
setConnectTimeout(connectTimeout).
setSocketTimeout(readTimeout).
.setConnectionRequestTimeout(connectionRequestTimeout).build();

 

HttpClient报错Timeout waiting for connection from pool

标签:并发   超时   配置   code   问题   etc   time   网上   custom   

原文地址:https://www.cnblogs.com/changxy-codest/p/13111032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!