場景:項目遇到持續高並發后,連接池一直無法獲取到連接,檢查后,發現連接池配置有點問題,做以下修改后正常:
配置修改:
1.breakAfterAcquireFailure=false,為true會導致連接池占滿后不提供服務。所以必須為false
2.acquireRetryAttempts=10,獲取連接失敗時重試10次,默認重試30次,減少重試次數。
3.idleConnectionTestPeriod=30,每30秒檢查一次空閑連接,加快釋放連接。
4.maxIdleTime=10,連接10秒內不使用則釋放連接,加快連接釋放。
5.checkoutTimeout=10000,獲取連接超時時間為10秒,默認則無限等待。設置此值高並發時(連接數占滿)可能會引發中斷數據庫操作風險。
6.unreturnedConnectionTimeout=20,連接回收超時時間,設置比maxIdleTime大
7.debugUnreturnedConnectionStackTraces=true,連接泄漏時打印堆棧信息