老鬼的博客 来都来啦,那就随便看看吧~
springboot配置ali.druid数据库连接池
发布于: 2022-06-16 更新于: 2022-06-16 分类于:  阅读次数: 

一:背景

1
2
由于springboot配置druid的数据库连接池错误,造成了生产使用了默认是最大连接数8,
用户量增加后连接池数量不够,会一直等待,造成影响时间太长。

二:阿里云druid连接池

1
druid翻译成中文是德鲁伊,要不然别人说的时候听不懂会很尴尬!!!

2.png

三:springboot配置Druid

3.1 备注

1
2
上面的文档介绍的很清楚,要么是直接全部配置yml文件,要么是结合多数据源的
配置去配置单个数据源,不过需要使用DrindConfig的一个配置类。

3.2 警告

1
2
3
4
5
由于我当时写的时候直接是拿到公司给的配置,直接配置了yml文件,
不过yml文件给的不是只配置yml文件就可以的,还需要配置DruidConfig的
配置类,造成未验证,并且到了生产访问量多的情况下,使用了默认的Druid
的配置,造成响应很慢。
谨记:别人给的东西自己一定要验证一下,或者看看官方的文档。

3.png

3.3 yml参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 数据库
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/actminisite?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL
username: root
password: aaa
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
druid: #druid 数据源专有配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
# 间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 检测连接是否有效的sql,要求是一个查询语句
# 如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用
validationQuery: SELECT 1
# 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效
# 建议配置为true,不影响性能,并且保证安全性
test-while-idle: true
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache
poolPreparedStatements: true
#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
#如果运行时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
#则导入 log4j 依赖即可,Maven 地址: https://mvnrepository.com/artifact/log4j/log4j
filters: stat,wall,config
#指定每个连接上PSCache的大小
maxPoolPreparedStatementPerConnectionSize: 20
#合并多个DruidDataSource的监控数据
useGlobalDataSourceStat: true
#通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
#3.基础监控配置
web-stat-filter:
enabled: true
url-pattern: /*
#设置不统计哪些URL
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
session-stat-enable: true
session-stat-max-count: 100
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: false
#设置监控页面的登录名和密码
login-username: admin
login-password: FZjJjT4JqzWTFWWK
*************感谢您的阅读*************