高並發下測試時,程序跑一會出現數據庫連接數達到最大限制的情況,此時緊急的處理方案是將數據庫的連接數最大值設大。
但是根本原因還要從底層的代碼中尋找。
一般是數據庫連接沒有主動釋放連接的問題。在使用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表示超時等待時間