【发布时间】:2015-04-22 12:01:31
【问题描述】:
我正在使用 spring rest 模板与 apache http 客户端 4.2.1 集成发送 REST 请求。
由于我们需要向多个服务器发送请求,添加 PoolingClientConnectionManager 来管理连接。
将每条路线的最大值设置为 5 connectionManager.setDefaultMaxPerRoute(5)
在系统运行几天后,我们发现连接达到了每条路由设置的最大值。
打印日志如下 存活总数:0;分配的路线:5 of 5;总分配:100 个中的 5 个
似乎由于某种原因没有释放连接。但是我调试的时候发现每次request完成后,即使出现异常也会释放连接。
是否还有其他可能导致此连接无法释放的根本原因?
【问题讨论】:
-
会不会,您释放的连接只是将它们返回到池中?
-
我调用了release,连接会释放到pool中
-
池通常是这样工作的。
-
可能值得检查是否有任何忽略响应有效负载的路径;当我只阅读一些响应的状态码而忽略响应正文时,我遇到了这样一个“连接未释放”的问题。
标签: java httpclient