druid 参数设置

druid 参数设置

1)Max-active:指的是连接池里允许的最大活跃连接数,这个值根据应用实际情况调整。
2)Min-idle:关掉多余连接,保留有效连接,节省数据库的资源,这个值根据应用实际情况调整。
3)Max-wait,指应用线程等待连接的超时。可以配几秒范围,根据业务应用实际情况进行判定。
4)Validation-query,指的是连接池探测当前连接是否是健康的SQL语句。如果是较新的JDBC,不会发SQL语句,而是发Ping命令。
5)Validation-query-timeout,指的就是探测超时的时间。
6)Test-on-borrow指连接从连接池里取出时,连接池是否需要对连接进行健康探测。建议关闭False。
7)Test-on-return,建议关闭False。
8)Test-while-idle,指的是控制当连接处于空闲状态时,是否需检测连接的健康状态。建议打开True。
9)Time-between-eviction-runs-millis指的是触发空闲连接健康探测阈值,需要跟上面的Test-while结合起来。
10)Remove-abandoned,泄露连接强制回收,默认是False关闭。
11)Remove-abandoned-timeout,指的是强制回收的触发时间阈值。配置时间不要太短,因为业务长时间使用连接,所以超时时间要比业务实际合理时间要高。配置参数单位是“秒”。
12)Log-abandoned,指的是关闭被泄露连接时输出堆栈。当一个连接被探测为连接泄露且强制关闭的时候,是否要

下面配置不建议mysql环境配置:

spring.datasource.druid.max-open-prepared-statements=20
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.pool-prepared-statements=false  //mysql环境设置成 false

使用 Remove-abandoned 检测线程池泄露

配置:


# 检测线程池超时回收
spring.datasource.druid.remove-abandoned=true
spring.datasource.druid.remove-abandoned-timeout=5
spring.datasource.druid.log-abandoned=true

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.connect-properties.config.decrypt=false
spring.datasource.druid.connect-properties.druid.stat.logSlowSql=true
spring.datasource.druid.connect-properties.druid.stat.slowSqlMillis=200
spring.datasource.druid.filters=config,wall,stat
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=3
spring.datasource.druid.max-wait=300
spring.datasource.druid.min-evictable-idle-time-millis=30000
spring.datasource.druid.min-idle=1
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.login-password=admin
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.reset-enable=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.validation-query=select 1
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.exclusions=/druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
spring.datasource.druid.web-stat-filter.session-stat-enable=true
spring.datasource.druid.web-stat-filter.session-stat-max-count=10
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.password=root
spring.datasource.username=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://192.168.xxx.xx:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai

设置从连接池 拿取连接不超过 300毫秒

测试:

com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 301, active 3, maxActive 3, creating 0, runningSqlCount 2 : select * from t_user t1 order by rand() limit 1
com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 302, active 3, maxActive 3, creating 0, runningSqlCount 3 : select * from t_user t1 order by rand() limit 1
com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 300, active 3, maxActive 3, creating 0, runningSqlCount 3 : select * from t_user t1 order by rand() limit 1
com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 301, active 3, maxActive 3, creating 0, runningSqlCount 3 : select * from t_user t1 order by rand() limit 1

就可以查看到底是哪个sql引起泄露的了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值