最近用户在使用 druid 连接池连接 dble 时,应用会有不定时出现下面的错误:
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 做一个测试。