高并发下测试时,程序跑一会出现数据库连接数达到最大限制的情况,此时紧急的处理方案是将数据库的连接数最大值设大。
但是根本原因还要从底层的代码中寻找。
一般是数据库连接没有主动释放连接的问题。在使用spring DataSource配置数据库连接池时。需要增加如下配置
spring.datasource.removeAbandoned=true spring.datasource.removeAbandonedTimeout=1800//单位秒 spring.datasource.logAbondoned=false spring.dataSource.maxWait=1000 //单位毫秒
removeAbandoned设置为true表示,DataSource会自动将无效的connection删除。
removeAbandonedTimeout表示在多少秒后没有使用的connection将被视为无效,配合removeAbandoned=true自动删除
logAbondoned设置为true将会在回收connection事件之后打印出日志,调试的时候可以打开
maxWait表示超时等待时间