ci mysql空闲连接回收_数据库连接空闲回收问题 CommunicationsException: Communications link failure...

背景:由于数据库上的连接设定为空闲30分钟后关闭,那么客户端这边就需要在这此前回收掉,不然获取连接的时候会出问题

配置:

initialSize=1

minIdle=1

maxActive=20

maxWait=60000

timeBetweenEvictionRunsMillis=60000

minEvictableIdleTimeMillis=300000

phyTimeoutMillis=1500000

validationQuery=SELECT 'x'

testWhileIdle=true

testOnBorrow=false

testOnReturn=false

removeAbandoned=true

removeAbandonedTimeout=1800

logAbandoned=true

在应用运行过程中会出现异常:

{conn-110017, stmt-120323} execute error. SELECT 'x'

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 2,256,880 milliseconds ago. The last packet sent successfully to the server was 928,132 milliseconds ago.

经过排查是因为超时而导致连接关闭了,然后发现DruidDataSource里面,如果配置了phyTimeoutMillis,那么基本上可以排除掉,但是由于下面这段代码:DruidDataSoufce.shrink

if (idleMillis < minEvictableIdleTimeMillis) {

break;

}

会导致没有遍历完池的所有连接,会遗留有超时连接在里面。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值