纯原生JAVA项目中,Druid作为MySQL连接池时(MySQL默认为8小时没操作就断开),测试场景为10小时不进行任何查询,就算配置了testWhileIdle=true,也不能保持连接,配置如下:
source.mysql.url=jdbc:mysql://127.0.0.1:3306/xxx
source.mysql.username=root
source.mysql.password=xxx
source.mysql.driver=com.mysql.jdbc.Driver
source.mysql.initialSize=10
source.mysql.minIdle=10
source.mysql.maxActive=100
source.mysql.maxWait=60000
source.mysql.timeBetweenEvictionRunsMillis=10000
source.mysql.minEvictableIdleTimeMillis=300000
source.mysql.validationQuery=select 1
source.mysql.testWhileIdle=true
source.mysql.testOnBorrow=false
source.mysql.testOnReturn=false
source.mysql.removeAbandoned=true
source.mysql.removeAbandonedTimeout=1800
source.mysql.logAbandoned=false
source.mysql.poolPreparedStatements=false
source.mysql.maxPoolPreparedStatementPerConnectionSize=20
source.mysql.filters=stat,wall
10小时后查询,报:
java.sql.SQLException: The last packet successfully received from the server was 63,920,837 milliseconds ago. The last packet sent successfully to the server was 63,920,858 milliseconds ago.