Communications link failure\n\nThe last packet successfully received from the server was 1,377,469 milliseconds ago. The last packet sent successfully to the server was 1 milliseconds ago.
大致意思是:
从服务器成功接收的最后一个数据包是1,377,469毫秒前。最后一个成功发送到服务器的数据包是0毫秒前。
说明这个连接已经有1,377,469毫秒没有从服务器上接收数据了,而mysql上定义,如果一个连接的空闲时间超过数据库的配置参数wait_timeout的值,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。
所以,我们需要在连接池回收、借用连接或者创建连接的时候测试该连接的可用性
提供几个连接池的相关配置如下:
1 | spring.datasource.test-on-borrow |
最终配置如下:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 雅!
评论