Spring Scheduled自定任务运行久了就出现数据库连接的错误记录[个人笔记]

[scheduling-1] WARN  com.zaxxer.hikari.pool.PoolBase - HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@708e7751 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value.

这个错误信息表示你尝试在一个已经关闭的数据库连接上执行操作。具体来说,错误中的 “No operations allowed after connection closed.” 意味着连接已经不再可用。

可能原因:
连接池超时:连接池中的连接在长时间不活动后会被关闭。maxLifetime 设置的值过长,可能导致连接在使用时已经关闭。
连接未正确释放:如果在使用连接后没有正确地关闭或释放连接,可能会导致连接池中的连接失效。
网络问题:网络中断或数据库服务器问题可能导致连接关闭。
解决方案:
调整连接池设置:

减小 maxLifetime:设置一个较短的 maxLifetime 值,比如 30 分钟或更短,以确保连接在长时间不使用后被回收。
调整 validationQuery:使用一个简单的 SQL 查询(如 SELECT 1)来验证连接是否有效,确保在获取连接时进行检查。

修改配置如下:

spring.datasource.hikari.max-lifetime=1800000  # 30 分钟
spring.datasource.hikari.connection-timeout=30000  # 30 秒
spring.datasource.hikari.validation-timeout=5000  # 5 秒
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.connection-test-query=SELECT 1
上一篇:spring 学习路线梳理(三)AOP


下一篇:ExpandingCard扩展卡片-分析思路