An attempt by a client to checkout a Connection has timed out: 客戶端嘗試獲取鏈接connection鏈接超時.數據庫
當鏈接池的鏈接用完時,客戶端調用getConnection()後,等待獲取新鏈接的時間,超時後將拋出該異常。debug
解決方法:get
1.適當加大maxPoolSize和minPoolSize ,能夠緩解這種狀況。io
2.自動超時回收unreturnedConnectionTimeout(強烈推薦)。cli
最近遇到這個形成的問題了,拋出異常爲:Overdue resource check-out stack trace。這裏作一下深刻研究。配置
c3p0配置是這樣的:bug
debugUnreturnedConnectionStackTraces=true unreturnedConnectionTimeout=1000
解釋一下:debugUnreturnedConnectionStackTraces是一個開關,啓用以後,對於每一個從鏈接池拿出去的數據庫鏈接,若是一段時間內沒有歸還,C3P0就會強制關閉這個鏈接,並將獲取鏈接時的stack trace,以拋出異常的方式顯示出來,即Overdue resource check-out stack trace。 unreturnedConnectionTimeout設置多長時間會超時,以秒爲單位。方法
假設系統中懷疑有鏈接泄露,那麼,就能夠啓用這個功能,評估全部頁面執行完成須要的最長時間,例如20分鐘,而後將unreturnedConnectionTimeout設置爲略大於這個時間。im
3.配置超時自動斷開 (推薦)
maxIdleTimeExcessConnections=20
maxConnectionAge=20
default : 0 單位 s
配置鏈接的生存時間,超過這個時間的鏈接將由鏈接池自動斷開丟棄掉。固然正在使用的鏈接不會立刻斷開,而是等待它close再斷開。配置爲0的時候則不會對鏈接的生存時間進行限制。數據
4.檢查代碼,確認用完後close鏈接(不要小看這個,容易遺漏)。