0

我的 Spring Boot 应用程序正在使用 HikariCP。我收到以下错误消息“连接已关闭并且连接已被驱逐”

com.zaxxer.hikari.pool.PoolBase: HikariPool-1 - Failed to validate connection org.postgresql.jdbc.PgConnection@1610c743 (This connection has been closed.). Possibly consider using a shorter maxLifetime value.
[nnection closer] com.zaxxer.hikari.pool.PoolBase: HikariPool-1 - Closing connection org.postgresql.jdbc.PgConnection@1610c743: (connection was evicted)

当我让我的应用程序在一夜之间保持打开状态并且在大约 10 个小时的空闲时间后尝试从应用程序访问 API 时,我收到了这条消息。10 小时空闲时间后的第一个呼叫需要 11 秒才能返回响应,并在日志中给了我上述消息。此后的后续调用需要大约 2 秒的响应时间,我没有看到这条特定消息。有谁知道为什么我会收到这条特定的消息,以及为什么在空闲时间之后第一次通话要花这么长时间。我的应用程序部署在 Azure Spring Cloud 上。以下是库版本

HikariCP version: 4.0.3
Spring boot:  2.5.5
PostgresSql:  42.2.23

我已更改的 Hikari 属性值。我已更改此设置,因为默认的 30 分钟给了我连接超时并生成了异常。现在更改 maxLifetime 属性后,我没有收到任何连接超时异常

hikari:
      maxLifetime: 300000
4

1 回答 1

0

如果应用程序处于空闲状态,那么您确实存在连接泄漏。因此,将在日志中获取这些消息。

添加以下属性以验证连接:

spring.datasource.testWhileIdle=true
spring.datasource.test-on-borrow=true

要进一步检查是否有任何泄漏,请添加以下属性并检查您的池连接情况:

spring.datasource.hikari.leakDetectionThreshold=2000
logging.level.com.zaxxer.hikari=DEBUG
于 2021-12-24T11:45:07.110 回答