等待最大时长有些服务能达到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
2条答案
按热度按时间4nkexdtk1#
查看源码,这里的等待最大时长好想等待的总时长,不知道是否正确。请确认
xzabzqsa2#
maxWait你配置的是60000ms,拿不到连接等待的最大时长达到23000也是正常的(不知道对于你的问题描述我理解的对不对)。。
如果你不想让druid阻塞你的业务线程,可以通过maxWaitThreadCount这个参数来控制,这个参数的意思是:
由于连接池内连接不够用导致的业务线程发生等待的数量超过maxWaitThreadCount时,如果再有业务线程进来获取连接还获取不到,则直接报错,而不是等待,等于说设置了这个,druid顶多会让你maxWaitThreadCount个业务线程陷入等待状态,而不是所有。
这个属性默认-1,是不开启的,可以配置成大于0的来控制。
除此之外,如果因为拿不到连接而导致等待,说明参数设置不太合理,可以适当调整下minIdle和maxActive的值