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

解決 MySQL 'Too many connections' 異常的關鍵:連接池與釋放

     編輯:程式設計綜合問答

根因

應用未正確關閉連接,導致連接泄漏,達到 `max_connections` 限制 (默認 151)。

解決方案

  1. 使用連接池:DBCP/HikariCP/C3P0 (Java)、`SqlConnection` 池 (ADO.NET)、`pymysql` + `DBUtils` (Python)。
  2. 確保關閉:
    // Java try-with-resources
    try (Connection conn = ds.getConnection();
         PreparedStatement ps = conn.prepareStatement(sql);
         ResultSet rs = ps.executeQuery()) {
        // use rs
    } // 自動關閉
    
  3. 調大上限 (臨時):
    SET GLOBAL max_connections = 500; -- 永久改 my.cnf
    
  4. 監控:`SHOW PROCESSLIST` 定期檢查 `Sleep` 狀態連接數。

最佳實踐

  • 連接池配置 `maxActive` < `max_connections` * 0.8。
  • 設置 `validationQuery` / `testOnBorrow` 防止死連接。
  • 代碼審查:所有獲取連接路徑必有 `finally` 關閉或 try-with-resources。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved