druid 等待最大时长疑问

nimxete2  于 2022-11-02  发布在  Druid
关注(0)|答案(2)|浏览(388)

等待最大时长有些服务能达到23000,请问是为什么?
我的配置如下:

连接池的补充设置,应用到上面所有数据源中

spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=2000

配置获取连接等待超时的时间

spring.datasource.maxWait=60000

配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

spring.datasource.timeBetweenEvictionRunsMillis=30000

配置一个连接在池中最小生存的时间,单位是毫秒

spring.datasource.minEvictableIdleTimeMillis=1800000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false

配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙

spring.datasource.filters=stat,wall
spring.datasource.logSlowSql=true
spring.datasource.slowSqlMillis=200
spring.datasource.loginUsername=admin
spring.datasource.loginPassword=admin
spring.datasource.mergeSql=true
spring.datasource.resetEnable=false

4nkexdtk

4nkexdtk1#

查看源码,这里的等待最大时长好想等待的总时长,不知道是否正确。请确认

xzabzqsa

xzabzqsa2#

maxWait你配置的是60000ms,拿不到连接等待的最大时长达到23000也是正常的(不知道对于你的问题描述我理解的对不对)。。
如果你不想让druid阻塞你的业务线程,可以通过maxWaitThreadCount这个参数来控制,这个参数的意思是:
由于连接池内连接不够用导致的业务线程发生等待的数量超过maxWaitThreadCount时,如果再有业务线程进来获取连接还获取不到,则直接报错,而不是等待,等于说设置了这个,druid顶多会让你maxWaitThreadCount个业务线程陷入等待状态,而不是所有。
这个属性默认-1,是不开启的,可以配置成大于0的来控制。
除此之外,如果因为拿不到连接而导致等待,说明参数设置不太合理,可以适当调整下minIdle和maxActive的值

相关问题