Common configuration of druid connection pool
Method 1 (yml configuration)
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3307/home-finance?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
username: root
password: admin
# 数据源其它配置
druid:
#避免db单方面关闭连接,如mysql:show variables like '%timeout%',关注interactive_timeout和wait_timeout,默认8小时
#常见错误:The last packet successfully received from the server was 46170 milliseconds ago
#解决办法:1.miEvictableIdleTimeMillis < maxEvictableIdleTimeMillis
# 2.maxEvictableIdleTimeMillis + timeBetweenEvictionRunsMillis < 8h
initial-size: 5 #初始化连接池大小
min-idle: 3 #最小连接数
max-active: 20 #最大连接数
max-wait: 60000 #最长等待时间
#单位:ms,默认1min,两个作用
#1.Destroy线程运行周期,每隔多久运行一次,配合min-evictable-idle-time-millis和max-evictable-idle-time-millis使用;
#2.若testWhileIdle为true,申请连接时,若空闲时间大于time-between-eviction-runs-millis,则执行validation-query语句检测连接是否有效。
time-between-eviction-runs-millis: 6000 #关闭空闲连接间隔(ms)
# 单位:ms,连接保持空闲而不被驱逐的最小时间,默认30min
#连接被destroy线程关闭条件:大于minIdle且空闲时间大于1800000
min-evictable-idle-time-millis: 1800000
# 单位:ms,连接保持空闲而不被驱逐的最大时间,默认7h
#连接被destroy线程关闭条件:空闲时间只要大于25200000就关闭连接,不管池中连接数是否大于minIdle
max-evictable-idle-time-millis: 25200000
validation-query: SELECT 1 #数据库状态检测
test-while-idle: true #判断连接是否可用
test-on-borrow: false #在获得连接前是否要进行测试
test-on-return: false #在归还连接前是否要进行测试
pool-prepared-statements: false #不缓存pstmt,oracle可以配true
max-pool-prepared-statement-per-connection-size: 20 #配置pstmt缓存个数
filters: stat,wall,slf4j
#配置servlet,开启druid登录页和首页
stat-view-servlet:
enabled: true
login-username: admin
login-password: admin
#监控页面访问路径
url-pattern: /druid/*
#是否允许重置,一般不允许
reset-enable: false
#白名单
allow: 127.0.0.1
#黑名单
deny: 192.168.0.1
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
session-stat-enable: true
#配置druid过滤器
filter:
#sql监控规则过滤器
stat:
enabled: true
#慢sql阈值,单位ms
slow-sql-millis: 3000
#同一个sql,是否允许不同参数合并为一条记录
merge-sql: true
#防火墙过滤器
wall:
enabled: true
config:
#是否允许执行delete语句
#delete-allow: false
db-type: mysql
#日志过滤器,配合logback或log4j使用,在xml中配置上下面的logger
slf4j:
enabled: true
statement-executable-sql-log-enable: true
# <logger name="druid.sql" level="debug" additivity="false">
# <appender-ref ref="stdout"/>
# </logger>