当前位置: 首页 > 知识库问答 >
问题:

Apache Httpclient连接未释放

罗翔
2023-03-14

我正在使用spring rest模板发送与apache http client 4.2.1集成的rest请求。

由于需要向多个服务器发送请求,增加了PoolingClientConnectionManager来管理连接。

当系统运行几天后,我们发现连接达到了最大每路由设置。

打印日志如下所示保持活动的总数:0;分配路线:5选5;分配总数:100个中的5个

似乎由于某种原因,连接没有被释放。但是当我调试时,我发现每次请求完成后,即使发生异常,连接也会被释放。

是否有任何其他潜在的根本原因无法释放这种联系?

共有1个答案

赵刚豪
2023-03-14

这是因为在某些情况下,服务器保存请求,我们需要为http客户端添加超时

 类似资料:
  • C3P0不会在事务完成后释放连接。下面是堆栈跟踪: 池配置和事务配置如下: 如有任何建议,我将不胜感激

  • 我对R2DBC池有一个奇怪的行为:我们碰巧创建了大量线程并将它们发送到R2DBC池以获取DB连接。当池中的所有R2DBC连接都在使用时,我们创建的线程排队等待空闲连接可用,这发生在释放之前使用的连接时。如果我们在等待空闲连接时取消这些线程,会发生以下行为: 即使它们被取消,也有一些线程获得连接并通过其正常的DB进程 因此,一些连接不会返回到空闲状态。它们保持被获取状态,并阻止后续连接请求获取这些特

  • 问题内容: 我在Redis中存储json数据列表,并使用ServiceStack c#客户端访问它。我本质上是在管理自己的外键,在其中存储id,然后使用应用程序内部的接口从中提取ID ,然后从Redis获取基础json对象并将其打包为列表以返回其他部分我的申请。 我正在使用,因为我希望Redis可以托管在与执行代码的服务器不同的服务器上。 我正在使用MSOpenTech Redis服务器在Wind

  • Tomcat在使用后不释放连接的原因可能是什么? 这是我的配置

  • 问题内容: 我遍历了一堆URL,对于每个URL,我都在执行以下操作: 第一个查询很好,第二个查询抛出此异常: 线程“主”中的异常java.lang.IllegalStateException:无效使用SingleClientConnManager:仍然分配了连接。在分配另一个之前,请确保释放连接。在org.apache.http.impl.conn.SingleClientConnManager。

  • 我已经按照这里的示例中所述配置了TcpClient。我试图使以下代码在服务器意外关闭连接的情况下具有弹性: 在这种情况下,我希望方法“getConnectionFromPool”能够从池中检索连接,或者如果没有可用的连接,则打开一个新连接。 注意到后。connect()最终服从于ConnectionProvider。acquire(),我尝试使用tcpClient。connect(),但有必要更改