- 若是開啓了removeAbandoned,當getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)時被觸發.
- 舉例當maxActive=20, 活動鏈接爲18,空閒鏈接爲1時能夠觸發"removeAbandoned".可是活動鏈接只有在沒有被使用的時間超 過"removeAbandonedTimeout"時才被回收
- logAbandoned: 標記當鏈接被回收時是否打印程序的stack traces日誌(默認爲false,未調整)
通常會是幾種狀況出現須要removeAbandoned:
- 代碼未在finally釋放connection , 不過咱們都用sqlmapClientTemplate,底層都有連接釋放的過程
- 遇到數據庫死鎖。之前遇到事後端存儲過程作了鎖表操做,致使前臺集羣中鏈接池全都被block住,後續的業務處理由於拿不到連接全部都處理失敗了。