1

我对生态系统的了解有限,请原谅我的无知。

我有一个非常大的 Oracle 数据库 (19),有很多来自多个应用程序的连接。我们已经对它设置了最大连接(会话)数量的限制,我们可以很容易地达到这个限制。

我们正在使用 Java 17 + Spring Boot 2.6.1 & HikariCP (考虑 UCP) & JDBI3

当我在添加连接池之前运行我的应用程序时,我注意到当我不优雅地终止我的连接(强行终止应用程序)时,连接在 Oracle 端保持活动很长一段时间(30m+)。关闭带有连接池的应用程序时如何处理?我假设连接池将由 TCP 超时而不是 TCP FIN/ACK 关闭,并且它的工作方式不同,因为应用程序在能够关闭连接之前被杀死,但这是否意味着 Oracle 端的连接会像以前一样活着吗?

TL;DR:我是否需要通过手动关闭连接池来处理不正常的关闭,以避免 Oracle 使死连接保持活动状态?

或者,我需要联系我们的 Oracle 团队,并以某种方式说服他们降低他们似乎站在他们这边的这种保活价值。

4

1 回答 1

0

您可以尝试使用通用连接池 (UCP),它有一个内置机制可以在应用程序/JVM 关闭时优雅地关闭连接。

于 2021-12-07T11:32:51.663 回答