分布式 | 关于 druid 连接池参数问题

本文通过实测对比了Druid连接池中testWhileIdle与keepAlive参数的区别。keepAlive能在指定周期内检测空闲连接的有效性,而testWhileIdle则在连接取出时检测。建议使用keepAlive确保连接有效性。

作者:鲍凤其

爱可生 dble 团队开发成员,主要负责 dble 需求开发,故障排查和社区问题解答。少说废话,放码过来。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

最近用户在使用 druid 连接池连接 dble 时,应用会有不定时出现下面的错误:

language	java
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 425,724 milliseconds ago.  The last packet sent successfully to the server was 425,725 milliseconds ago.

这种错误还是很常见的,猜测是应用拿到了已经 close 的连接并继续使用从而引发上面的问题。因此,我们想开启 druid 中的对空闲连接检测的机制。

在查询文档的过程中,发现了两个参数,分别是 testWhileIdle 和 keepAlive(1.0.28 版本引入),那到底这两个参数有什么区别?

下面我们使用 1.1.13 版本的 druid 做一个测试。

结论

  • 开启 testWhileIdle 之后,druid 不会在 timeBetweenEvictionRunsMillis 指定的周期内检测空闲连接的有效性,而是在连接取出时对连接做一下检测。

  • 开启 keepAlive 之后,druid 会在 timeBetweenEvictionRunsMillis 指定的周期内检测空闲连接的有效性。

因此在实际使用中,建议开启 keepAlive 参数用于

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值