[alibaba/druid]Springboot mysql不定时出现The last packet sent successfully to the server was 0 milliseconds ago

2025-11-11 430 views
0
<mysql-connector-java>5.1.36</mysql-connector-java>
<druid-spring-boot-starter>1.1.24</druid-spring-boot-starter>

springboot配置如下(忽略密码) dataSource.initialSize: 1 dataSource.minIdle: 1 dataSource.maxActive: 20 dataSource.maxWait: 60000 dataSource.timeBetweenEvictionRunsMillis: 60000 dataSource.minEvictableIdleTimeMillis: 600000 dataSource.maxEvictableIdleTimeMillis: 900000 dataSource.validationQuery: select 1 dataSource.testWhileIdle: true dataSource.testOnBorrow: false dataSource.testOnReturn: false

现发现不定时出现

2021-01-28 17:44:08,431 [Druid-ConnectionPool-Create-1635378213] ERROR [com.alibaba.druid.pool.DruidDataSource] [DruidDataSource.java:2779] - create connection SQLException, url: jdbc:mysql://xxxx:8008/xxxx, errorCode 0, state 08S01
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:400)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1038)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:339)
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2247)
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2280)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2079)
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
        at sun.reflect.GeneratedConstructorAccessor132.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:400)
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
        at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156)
        at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218)
        at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1646)
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1710)
        at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2777)
Caused by: java.net.ConnectException: Connection refused

回答

5

这个问题后来有解决吗

2

出现同样问题了

3

出现同样问题了

应该是网络出现了相关问题

9

出现同样问题了

应该是网络出现了相关问题

看了一下这里面其他issue 也有类似问题,因为我们所有程序都在容器里,我们在容器层面加查不可用就重启绕过这个问题,现在还是搞不清楚具体问题

3

出现同样问题了

应该是网络出现了相关问题

看了一下这里面其他issue 也有类似问题,因为我们所有程序都在容器里,我们在容器层面加查不可用就重启绕过这个问题,现在还是搞不清楚具体问题

orm用的是mybatis-plus吗,我这边也出现过类似问题,但是我更换别的连接池也会这样,在执行某些使用mp自带lambda方法的sql时会出现,后来我把lambda方法改成sql就不会出现,也不知道是什么原因。

6

出现同样问题了

应该是网络出现了相关问题

看了一下这里面其他issue 也有类似问题,因为我们所有程序都在容器里,我们在容器层面加查不可用就重启绕过这个问题,现在还是搞不清楚具体问题

orm用的是mybatis-plus吗,我这边也出现过类似问题,但是我更换别的连接池也会这样,在执行某些使用mp自带lambda方法的sql时会出现,后来我把lambda方法改成sql就不会出现,也不知道是什么原因。

mybatis-plus真心不喜欢

3

我也碰到这个问题了,同样的程序发布到四台服务器上,有两台就报这个错误,不知道什么原因

0

我的也是,docker中跑的 一启动就报这个错

5

这个基本都是网络问题,看下数据库的配置是否有问题,我们生产环境也出现类似问题,主备切换mysql之后,就不会出现了,可以确认跟连接池无关,但是具体是db的哪个配置导致问题,dba没有分析出来,暂不清楚