gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:17:17 26 4
gpt4 key购买 nike

我正在通过播放框架和 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/

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