httpclient端口占满,处于Close_wait状态。Timeout waiting for connection from pool

原创
2016/11/09 17:19
阅读数 6.1K

前提:httpclient发送请求,服务器响应码为409,这种情况下httpclient的连接状态为close_wait,且不能被重置复用,但是这个连接占用连接池中一个数,如果这种连接越来越多导致连接池占满没有可用资源。

网上有好多解决方案。

1、增大httppool的连接数

2、当占满时关闭所有连接

上述都不能解决根本。

根本原因就是,当一个连接僵死,需要httpclient手动释放连接。

对于HttpEntityEnclosingRequestBase来说,client每次请求都会生成他的一个子类。

例如:class HttpPost extends HttpEntityEnclosingRequestBase{}

HttpPost  httpPost = new HttpPost ();

对应的 httpPost .abort()就是关闭这个连接,而并非关闭整个连接池或者client。

理论上说如果服务器响应码为非200段的,那么连接需要我们客户端手动断开。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部