SpringBoot数据库连接池设置

  |   0 评论   |   0 浏览

背景

遇到的问题:

Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available

排查方式


//查看所有进程
show processlist;
 
//查询是否锁表
show OPEN TABLES where In_use > 0;
 
//查看被锁住的
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
//等待锁定
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
kill 12041

连接池设置

#连接池最大连接数
spring.datasource.max-active=200

#空闲池中最大连接数
spring.datasource.max-idle=50

#空闲池中最小连接数
spring.datasource.min-idle=10
spring.datasource.initial-size=10

#连接在池中空闲最小时间后被清除
spring.datasource.min-evictable-idle-time-millis=60000

#隔多久时间清回收废弃连接
spring.datasource.time-between-eviction-runs-millis=30000

#每次调用检测池里连接的可用性,假如连接池中的连接被数据库关闭了,应用通过连接池getConnection时会重新创建
spring.datasource.testOnBorrow=true
spring.datasource.validation-query=SELECT 1

#移除被遗弃的连接
spring.datasource.remove-abandoned=true

#设置超时时间
spring.datasource.tomcat.remove-abandoned-timeout=60

参考