SpringBoot Druid Mysql数据库连接配置详记

背景

最近程序在服务器上运行,总是出现数据库连接断开的问题,常见异常如下,所以专门来规范一下配置。

2020-03-31 18:08:03.253 ERROR [DruidPooledStatement.java:357] CommunicationsException, druid version 1.1.10, jdbcUrl : jdbc:mysql://************:3306/test?autoReconnect=true&autoReconnectForPools=true&characterEncoding=UTF-8&allowMultiQueries=true, testWhileIdle true, idle millis 2328, minIdle 5, poolingCount 1, timeBetweenEvictionRunsMillis 30000, lastValidIdleMillis 2328, driver com.mysql.jdbc.Driver, exceptionSorter com.alibaba.druid.pool.vendor.MySqlExceptionSorter
2020-03-31 18:08:03.255 ERROR [JdbcUtils.java:75] close connection error
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Communications link failure during rollback(). Transaction resolution unknown.

配置

 type: com.alibaba.druid.pool.DruidDataSource
 driver-class-name: com.mysql.jdbc.Driver
 initial-size: 5
 min-idle: 5
 max-active: 100
 max-wait: 10000
 validation-query: SELECT 1 FROM DUAL
 test-on-borrow: true
 test-on-return: true
 test-while-idle: true
 time-between-eviction-runs-millis: 60000
 min-evictable-idle-time-millis: 300000

配置说明

属性列 说明
type 指定连接池
driver-class-name 数据库驱动类
initial-size 初始化时建立物理连接的个数
min-idle 最小连接数量
max-active 最大连接数量
validation-query 用来检测连接是否有效的sql,要求是一个查询语句,常用select ‘x’。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
test-on-borrow 申请连接时执行validation-query检测连接是否有效
test-on-return 归还连接时执行validation-query检测连接是否有效
test-while-idle 申请连接的时候检测,如果空闲时间大于time-between-eviction-runs-millis,执行validationQuery检测连接是否有效。
time-between-eviction-runs-millis 1) Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于min-evictable-idle-time-millis则关闭物理连接。2) est-while-idle的判断依据
min-evictable-idle-time-millis 连接保持空闲而不被驱逐的最小时间

官方文档

DruidDataSource配置
DruidDataSource配置属性列表
DBCP连接属性

猜你喜欢

转载自blog.csdn.net/yxz8102/article/details/105305912
今日推荐