【个人记录】记录在项目中出现的一次数据库连接异常 Communications link failure

记录在项目中出现的一次数据库连接异常

异常明细

Communications link failure : The last packet successfully received from the server was 13,091 milliseconds ago. The last packet sent successfully to the server was 12,963 milliseconds ago , Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

处理

1、 这是老项目中凌晨2点一个生成xml文件的定时任务,过了几天三方反馈未拉倒文件,于是开始翻阅日志发现了上述的error打印;
2、首先第一时间查看了数据库连接池的配置默认配置

spring:
  datasource:
  maxWait: 60000

最大等待时长是60秒,不会出现12秒空闲连接过期的情况;
3、然后查看阿里的云数据库polardb_mysql的配置文件,找到最大连接时长查看是30分钟,所以这也不是问题所在;
4、然后继续翻阅日志查看2点左右的日志,发现前后都有日志打印并未出现服务器重启的日志记录,所以也不应是服务器崩溃自动重启导致的连接断开情况;
5、查看其它同时间段执行的定时任务,发现其它部分定时任务也同样出现了上述连接失败的情况,于是寻找运维确认当日数据库连接情况,是否是超过最大连接导致,经确认后当日凌晨数据库不会出现连接数过多的情况,但是当日阿里云服务器自动升级,升级过程会断开所有连接,因此导致服务器连接数据库失败,从而导致定时任务执行失败而打印上述的日志。


期间也查阅了很多资料参考如下:
spring: https://docs.spring.io/spring-boot/docs/1.5.7.RELEASE/reference/html/howto-data-access.html#howto-configure-a-datasource
stackOverflow:https://stackoverflow.com/questions/6865538/solving-a-communications-link-failure-with-jdbc-and-mysql

猜你喜欢

转载自blog.csdn.net/ykx____h/article/details/121922616