一:背景
1 2
| 由于springboot配置druid的数据库连接池错误,造成了生产使用了默认是最大连接数8, 用户量增加后连接池数量不够,会一直等待,造成影响时间太长。
|
二:阿里云druid连接池
1
| druid翻译成中文是德鲁伊,要不然别人说的时候听不懂会很尴尬!!!
|

三:springboot配置Druid
3.1 备注
1 2
| 上面的文档介绍的很清楚,要么是直接全部配置yml文件,要么是结合多数据源的 配置去配置单个数据源,不过需要使用DrindConfig的一个配置类。
|
3.2 警告
1 2 3 4 5
| 由于我当时写的时候直接是拿到公司给的配置,直接配置了yml文件, 不过yml文件给的不是只配置yml文件就可以的,还需要配置DruidConfig的 配置类,造成未验证,并且到了生产访问量多的情况下,使用了默认的Druid 的配置,造成响应很慢。 谨记:别人给的东西自己一定要验证一下,或者看看官方的文档。
|

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
|
*************感谢您的阅读*************