-HikaricP - Failed to validate connection com.mysql.cj.jdbc.connectionImpl@60k7570bI (No operations

-HikaricP - Failed to validate connection com.mysql.cj.jdbc.connectionImpl@60k7570bI (No operations allowed after connection closed.). Possibly consider using a shorter maxlifetime value

遇到错误信息 “-HikaricP - Failed to validate connection com.mysql.cj.jdbc.connectionImpl@60k7570bI (No operations allowed after connection closed.)” 通常表明你的数据库连接池(在这个例子中是 HikariCP)中的某个连接在尝试使用时已经被关闭了。

这种情况可能由几个不同的原因引起:

  1. 连接超时:
    数据库连接可能因为长时间未使用而被数据库服务器或中间件(如防火墙、负载均衡器等)关闭。
    HikariCP 的 maxLifetime 属性定义了连接在池中存活的最长时间。如果设置得太长,连接可能会因为外部因素(如数据库服务器的超时设置)而失效,但 HikariCP 还未将其从池中移除。
  2. 数据库服务器设置:
    数据库服务器可能有自己的连接超时设置,这可能会比 HikariCP 的 maxLifetime 更短。
    如果数据库服务器的连接空闲时间超过了其设置的超时时间,那么即使 HikariCP 还未将该连接视为过期,数据库服务器也会关闭该连接。

解决方案

  1. 调整 HikariCP 的 maxLifetime:
    将 maxLifetime 设置为一个比数据库服务器连接超时时间稍短的值。这可以确保 HikariCP 在数据库服务器关闭连接之前将其从池中移除。
    例如,如果数据库服务器的超时时间是 8 小时,你可以将 HikariCP 的 maxLifetime 设置为 7 小时。

  2. 检查数据库服务器的连接超时设置:
    确认数据库服务器的连接超时设置,并确保 HikariCP 的 maxLifetime 不会超过这个值。
    查看连接超时时间,可以使用以下SQL语句

    SHOW VARIABLES LIKE 'connect_timeout';
    

    默认情况下,connect_timeout的值为10秒,但可以根据需要进行调整。
    假设你希望将连接超时时间修改为20秒,可以使用以下SQL语句:

    SET GLOBAL connect_timeout = 20;
    

项目https://gitee.com/dromara/RuoYi-Cloud-Plus/tree/master/中datasource.yml配置如下

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
    dynamic:
      # 性能分析插件(有性能损耗 不建议生产环境使用)
      p6spy: true
      # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭
      seata: true
      # 严格模式 匹配不到数据源则报错
      strict: true
      hikari:
        # 最大连接池数量
        maxPoolSize: 20
        # 最小空闲线程数量
        minIdle: 10
        # 配置获取连接等待超时的时间
        connectionTimeout: 30000
        # 校验超时时间
        validationTimeout: 5000
        # 空闲连接存活最大时间,默认10分钟
        idleTimeout: 600000
        # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
        maxLifetime: 1800000
        # 多久检查一次连接的活性
        keepaliveTime: 30000

尝试调整maxLifetime值为8000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值