我对生态系统的理解有限,所以请原谅我的无知。
我有一个非常大的Oracle数据库(19),它有许多来自多个应用程序的连接。我们已经对连接(会话)的最大数量设置了一些限制,我们可以很容易地达到这个限制。
我们使用的是Java17+SpringBoot2.6.1& HikariCP (考虑UCP)和JDBI3
当我在添加连接池之前运行我的应用程序时,我已经注意到,当我不体面地终止我的连接(强行关闭应用程序)时,该连接在Oracles侧会保持很长一段时间(30m+)。当使用连接池关闭应用程序时,如何处理这个问题?我假设连接池将被TCP超时而不是TCP FIN/ACK关闭,并且它的工作方式不同,因为应用程序在能够关闭连接之前就被杀死了,但这是否意味着Oracle端的连接将保持与以前一样的状态?
TL;DR:我是否需要手动关闭连接池,以避免Oracle保存死连接,从而处理不光彩的关闭?
或者,我需要与我们的甲骨文团队联系,并以某种方式说服他们降低他们所拥有的这种保持活力的价值。
发布于 2021-12-07 11:32:51
您可以尝试使用通用连接池(,UCP),它有一个内置的机制,可以在应用程序/JVM关闭时优雅地关闭连接。
https://stackoverflow.com/questions/70257733
复制相似问题