您的位置:首页 > 大数据 > 人工智能

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

2016-11-09 00:00 1386 查看
摘要: 使用PoolingHttpClientConnectionManager管理

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

网上有好多解决方案。

1、增大httppool的连接数

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

上述都不能解决根本。

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

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

例如:class HttpPost extends HttpEntityEnclosingRequestBase{}

HttpPost httpPost = new HttpPost ();

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

理论上说如果服务器响应码为非200段的,那么连接需要我们客户端手动断开。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐