首页 > 解决方案 > JVM Out.of.Memory 异常上的连接池关闭

问题描述

在 JVM 中收到 Out.Of.Memory 错误后,我在 httpclient 中观察到“连接池关闭”异常。

我正在使用 aws-java-sdk-s3 v1.11.547 awsClient 和 httpclient 4.5.8。JVM 抛出 Out.of.Memory 异常后,对 awsClient (getObject) 的任何调用都会失败。

以下提交https://github.com/apache/httpcomponents-client/commit/ca98ad69adad79de57d8b944ba524f7267a795cb似乎是原因。它在出现错误时关闭连接池,而不是关闭连接。

即使在进程从异常中恢复之后,对 awsClient 的调用也会继续失败。

这是 httpclient v4.5.7 以后的错误吗?此外,在执行不同的代码路径时收到 Out.Of.Memory,即除了对 awsClient 的调用之外,这是否意味着连接管理器在类实例之间共享?

标签: httpclientconnection-poolingapache-httpcomponents

解决方案


现在将其弃用到 v4.5.6 有效。允许连接泄漏而不是根据关闭的提交(在问题中共享)进行修复


推荐阅读