java - 光 : Failed to validate connection because connection is closed

标签 java database hikaricp

我正在通过播放框架和 mariadb 客户端使用 hikari 池连接,因为我已经定期更新它们(播放 2.6.5 -> 2.6.6 和 mariadb 2.1.1 -> 2.1.2 但不确定它是否相关)我遇到以下错误:

HikariPool-1 - Failed to validate connection org.mariadb.jdbc.MariaDbConnection@31124a47 (Connection.setNetworkTimeout cannot be called on a closed connection)
    at com.zaxxer.hikari.pool.PoolBase.isConnectionAlive(PoolBase.java:184)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:172)
    at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:146)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:85)
    at play.api.db.DefaultDatabase.getConnection(Databases.scala:142)
    at play.api.db.DefaultDatabase.withConnection(Databases.scala:152)
    at play.api.db.DefaultDatabase.withConnection(Databases.scala:148)

我发现了一个相关问题 here并尝试将 idleTimeout 和 maxLifetime 更改为 2 分钟和 5 分钟,但错误仍然发生。

我正在使用 HikariCP 2.7.1、play 2.6.6 和 mariadb-java-client 2.1.2

最佳答案

尽管您写道您无法通过更改 maxLifetime 值成功解决此问题,但我想指出它实际上对我有用。将其值设为 590000 已从我的日志文件中删除了警告。

客户端的 maxLifetime(以毫秒为单位)值应小于 MySQL 实例的 wait_timeout(以秒为单位)值。这样,客户端将始终在数据库尝试之前终止连接。相反,客户端将尝试对关闭的连接采取行动,您将在日志文件中收到上述警告。

要查看 MySQL 实例的 wait_timeout 值,您可以使用以下查询:

显示像“%timeout%”这样的变量;

MariaDB 的默认 maxLifetime 值应该是 28800,但我注意到 600 可以到位,因为正在加载 MySQL 配置文件.

我应该注意,除了 50maximum-pool-size 之外,我没有其他明确的 hikari 配置。

我的灵感来自:https://github.com/brettwooldridge/HikariCP/issues/856顺便一提。其他非常有用的资源是:https://github.com/brettwooldridge/HikariCP#configuration-knobs-babyhttps://mariadb.com/kb/en/library/server-system-variables/#wait_timeout

关于java - 光 : Failed to validate connection because connection is closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46830159/

相关文章:

Java NIO 和 Windows 磁盘访问

java - maven 无法解决依赖关系

php - 在 cakephp 3 中动态更改数据库连接

database - 从 MS Access 数据库中删除复制?

postgresql - 如何关闭旧 Cloud Run 修订版的 SQL 连接?

java - 每行打印 10 个数字

java - 很难理解使用 JPA (spring boot) 的关系数据存储

database - 存储上传的图像、SQL 数据库或磁盘文件系统的最佳位置是什么?

java - 使用 HikariCP 连接池到多个数据库

java - RedHat + MySQL + Tomcat : ERROR 1040: Too many connections (but everything is fine on Ubuntu)