问题表象
http客户端请求偶现异常ConnectionPoolTimeoutException
问题原因
当使用HttpClientBuilder创建自定义的HttpClient的时候没有主动setConnectionManager导致org.apache.http.impl.client.HttpClientBuilder#build内兜底使用默认逻辑创建connectionManager的defaultMaxPerRoute只有2,maxTotal也只有20。当请求量稍一大且响应慢时连接池就会不够用,进而报错ConnectionPoolTimeoutException
核心需要搞清楚ApacheHttpClient的几个常用属性的含义
DefaultMaxPerRoute:请求 www.baidu.com 的资源和 www.bing.com 的资源那么他就会产生两个route,配置每个route默认最大的链接数
max-total:连接池里的最大连接数