gpt4 book ai didi

java - Hikari 如何回收连接?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:28:25 26 4
gpt4 key购买 nike

我很高兴你们能给我在 HikariCP 文档中找不到的答案。鉴于我设置了以下池参数:

minimumIdle 1
idleTimeout 10 minutes
maxLifeTime 20 minutes

当我的应用程序在夜间保持空闲(没有人发出请求)时,我希望 Hikari 在连接最后一个请求后 10 分钟关闭每个连接,在最后一个连接关闭后创建一个新连接(并将其保存在池中),然后每 20 分钟关闭并重新创建此空闲连接。我理解正确吗?

事实是,在我的应用程序空闲一段时间后,我看到(根据下一个请求)以下异常:

WARN  c.z.hikari.proxy.ConnectionProxy - Connection oracle.jdbc.driver.T4CConnection@3c63f80e <POOL_NAME> marked as broken because of SQLSTATE(08003), ErrorCode(17008).
java.sql.SQLRecoverableException: Closed Connection

连接可能已被 Oracle 关闭,无法使用。我会尝试使用上面的配置来避免这种情况。另一点是我不明白为什么我从池中得到一个关闭的连接。这永远不应该发生,因为 Hikari 会在返回之前测试连接的状态...

注意:我不是数据库的所有者,我无法配置它或让它重新配置以满足我的需要。我也无权访问其配置。

我们的设置是 Spring 4.1.6、带有 JPA 2.1 API 的 Hibernate 4.3.7、Hikari 2.1.0

最佳答案

您对池参数的理解是正确的。 Oracle 实例的空闲超时时间可能短于 10 分钟。您可以做的一件事是为 com.zaxxer.hikari 包启用 DEBUG 级别的日志记录。您将获得有关 HikariCP 内部发生的事情的更多信息,而不会太嘈杂。

随时将日志发布为 issue on Github我们会看一看。

关于java - Hikari 如何回收连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33720759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com