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連接屬性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章