高并发时大量线程等待
java.lang.Thread.State: TIMED_WAITING (parking)
spring:
datasource:
druid:
initial-size: 5 #初始化时建立物理连接的个数
min-idle: 5 #最小连接池数量
max-active: 100 #最大连接池数量,like12 find bug,此值设得太小(如20) 高并发时会导致大量请求因等待连接池连接超时而处理失败(max-wait调小时) 推荐设置: 普通20 高并发100 最大200
max-wait: 5000 #获取连接时最大等待时间,单位毫秒,like12 find bug,此值不能设得太大(如60000),高并发时会导致系统卡死(大量线程一直挂起等待) 推荐设置: 普通60000 高并发5000
time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
#Oracle模式
#validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql
#MySQL模式
validation-queryM: SELECT 1 #用来检测连接是否有效的sql
test-while-idle: true #申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效
test-on-borrow: false #申请连接时执行validationQuery检测连接是否有效,如果为true会降低性能
test-on-return: false #归还连接时执行validationQuery检测连接是否有效,如果为true会降低性能
pool-prepared-statements: true #打开PSCache,并且指定每个连接上PSCache的大小
max-pool-prepared-statement-per-connection-size: 20 #要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
#like12 modified,jpa拦截dbms_random wall会拦截dbms_random,使得无法随机排序
#filters: stat,wall,slf4j #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,slf4j #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
#通过connectProperties属性来打开mergeSql功能;慢SQL记录
connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
#配置DruidStatFilter,用于采集web-jdbc关联监控的数据
web-stat-filter:
enabled: true
url-pattern: "/*"
#排除一些不必要的url过滤
exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
#配置DruidStatViewServlet
stat-view-servlet:
url-pattern: "/druid/*"
#IP白名单(没有配置或者为空,则允许所有访问)
#allow: 127.0.0.1,192.168.1.106
#IP黑名单(存在共同时,deny优先于allow)
#deny: 192.168.1.73
#禁用HTML页面上的“Reset All”功能
reset-enable: fasle
#可视化界面,登录名
login-username: ***
#可视化界面,登录密码
login-password: ***