首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Spring UncategorizedSQLException:Proxool 連線池自動關閉連線排查

     編輯:程式設計綜合問答

錯誤關鍵訊息

Couldn't perform the operation prepareStatement:
You can't perform any operations on this connection.
It has been automatically closed by Proxool for some reason (see logs).

根因

Proxool 連線池主動關閉了連線**,常見原因:

  1. 閒置超時:proxool.max-idle-time / house-keeping-sleep-time 設定過短,連線在池中閒置過久被回收。
  2. 驗證查詢失敗:proxool.test-sql (如 SELECT 1) 執行失敗(資料庫重啟、網路抖動),Proxool 標記連線失效並關閉。
  3. 最大壽命:proxool.max-connection-life-time 到期強制回收。
  4. 資料庫主動斷開:MySQL wait_timeout (預設 8h) 斷開長連線,Proxool 借用時發現已斷,報錯並移除。

排查步驟

  1. 開啟 **Proxool 日誌** (log4j.logger.org.logicalcobwebs.proxool=DEBUG),觀察 Connection closed by Proxool 前的上下文。
  2. 檢查資料庫錯誤日誌,確認是否有 Aborted connection。
  3. 調整 Proxool 參數:
    proxool.test-sql=SELECT 1
    proxool.test-before-use=true (借用前驗證,稍增延遲但極大提升穩定性)
    proxool.house-keeping-sleep-time=90000 (檢查間隔 90s)
    proxool.max-idle-time=300000 (閒置 5 分鐘回收)
  4. 資料庫端:增大 wait_timeout / interactive_timeout 或啟用 tcp_keepalive。

長期建議

Proxool 已停止維護,**強烈建議遷移至 HikariCP / Druid / Tomcat JDBC Pool**,效能更優、配置更簡單、社群活躍。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved