Hikari的max-lifetime和mysql的wait_timeout

之前做的项目一直都没在意hikari连接池的参数配置,项目上线也没遇到什么问题。最近的一个使用mysql库的项目老是报

No operations allowed after connection closed.

提醒,于是翻了下hikaricp和mysql的书,max-lifetime表示一个连接在连接池中的最大生命周期,如果一个连接距离上一次使用的时间大于mysql的wait_timeout,此时mysql将连接关闭了。如果hikari的max-lifetime小于wait_timeout,hikari会移除这个连接,再次使用时会使用新创建的连接,这个时候数据库访问正常,如果此时hikari的max-lifetime小于wait_timeout,再次使用时hikari认为这个连接仍然是正常的,于是继续使用这个连接访问数据库,而此时mysql已经关闭连接了,因此会报上面的提示。

因此,max-lifetime必须比数据库的wait_timeout参数短一些。但是不能太短,hikari在初始化时会检测max-lifetime的值,如果小于30000ms则使用默认的值1800000ms,因此你会发现怎么设置都没有效果,可能是因为你的mysql的wait_timeout的值比1800s要小。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值