springboot Possibly consider using a shorter maxLifetime value.

我们在springboot项目中使用默认的连接池时,有时过一段时间不使用数据库,再次查询数据库时会报错,显示连接池中的连接不可用。具体就是报Possibly consider using a shorter maxLifetime value.
我找了很多资料,大多数都是坑,或者讲的不详细。所以本人也是进了不少坑才找到问题所在,这里详细记录一下,供大家参考,也是给自己做个笔记。
先说一下为什么会出现这种错误,首先就是连接池中的连接不可用了,导致我们使用连接的时候去连接池中取连接,拿到的是已经关闭的连接。
为什么会出现这种情况,这里涉及到三个时间,一个是maxLifetime和idleTimeout还有一个是wait_timeout
maxLifetime表示池中连接的最长生命周期默认值是1800000毫秒,也就是30分钟,0的话表示连接永远存活,如果不等于0且小于30秒则会被重置回30分钟,是我们需要在程序里配置的。

idleTimeout表示空闲连接存活的最长时间,默认时间600000毫秒,也就是10分钟如果idleTimeout+1秒>maxLifetime 且 maxLifetime>0,则会被重置为0(代表永远不会退出);如果idleTimeout!=0且小于10秒,则会被重置为10秒

wait_timeout是mysql数据库空闲连接的关闭时间,默认是28800秒,注意上面的单位是毫秒这里是秒,也就是8小时。一般我们需要自己改一下这个时间,如果这个时间是8小时,那么如果我们数据库访问量很大,可能就会产生很多空闲连接不关闭,导致连接耗尽,本人曾经遇到过这个问题。修改的方法就是到配置文件里加上wait_tim

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值