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环境配置:
-open-prepared-statements=20
-pool-prepared-statement-per-connection-size=20
-prepared-statements=false //mysql环境设置成 false
使用 Remove-abandoned 检测线程池泄露
配置:
# 检测线程池超时回收
-abandoned=true
-abandoned-timeout=5
-abandoned=true
-class-name=
=false
=true
=200
=config,wall,stat
-size=1
-active=3
-wait=300
-evictable-idle-time-millis=30000
-idle=1
=true
-password=admin
-username=admin
-enable=true
-pattern=/druid/*
-on-borrow=false
-on-return=false
-while-idle=true
-between-eviction-runs-millis=60000
-query=select 1
=true
=/druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
-stat-enable=true
-stat-max-count=10
-pattern=/*
=root
=root
=
=jdbc:mysql://192.:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
设置从连接池 拿取连接不超过 300毫秒
测试:
: wait millis 301, active 3, maxActive 3, creating 0, runningSqlCount 2 : select * from t_user t1 order by rand() limit 1
: wait millis 302, active 3, maxActive 3, creating 0, runningSqlCount 3 : select * from t_user t1 order by rand() limit 1
: wait millis 300, active 3, maxActive 3, creating 0, runningSqlCount 3 : select * from t_user t1 order by rand() limit 1
: wait millis 301, active 3, maxActive 3, creating 0, runningSqlCount 3 : select * from t_user t1 order by rand() limit 1
就可以查看到底是哪个sql引起泄露的了