从SpringBoot2.0开始,其DataSource就交给了Hikari负责。
对于高并发需求,根据数据库的性能,若然Controller执行时间过长,过多controller正在等待有限的sessionFactory资源,则会造成线程堵塞,引起雪崩。
需要在springboot的配置中假如如下设置:
spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.maximum-pool-size=50 spring.datasource.hikari.idle-timeout=20000 spring.datasource.hikari.connection-timeout=20000
最主要是maximum-pool-size参数,在不设置的情况下默认是10,所以当用户卡在controller等待使用session资源时,做并发测试的时候就会出现卡死现象,引起雪崩。
如果controller中关于数据查询的部分的执行时间较长,maximum-pool-size一定要调大,但是这个值越大我猜测就越内存,一定要适当。