httpclient的几个重要的参数

一、背景

  线上有个支付网关项目,突然发现大量httpclient报错,该httpclient报错是我们主动访问第三方时,报获取连接超时错误。而且都是同一个第三方渠道报错,而其他第三方都没有这个报错。

  走查代码发现,所有的http访问,用的都是同一个httpclient。而因为某个第三方渠道报错,导致连接没有被释放,所以再次访问该渠道的时候就没有连接了。那为什么其他共用该httpclient的渠道没有收到影响呢?这就要讲一下下面几个参数了。

二、HttpClient的几个重要参数

MaxtTotal:整个连接池的大小

CONNECTION_TIMEOUT : 连接超时,指的是建立连接的超时时间

SO_TIMEOUT : 响应超时,连接建立以后,响应的超时时间

CONN_MANAGER_TIMEOUT: 连接不够的时候超时时间

DefaultMaxPerRoute:每个host的连接最大连接数,因为这个参数,所以某个渠道出问题以后,其他渠道的最大连接数不会有影响。(当然这个还是回到maxTotal最大连接池的限制)

设置http client的重试次数,默认是3次,最好还是禁用

httpClient.setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(0, false));

还有更多的注意,请大神指教。

// TODO

你可能感兴趣的:(httpclient的几个重要的参数)