錯誤:「org.postgresql.util.PSQLException:FATAL:抱歉,已經有太多客戶端」
嘗試連線到Postgregre資料庫,你可能會遇到這個錯誤訊息,說明已經超過了連線限制。
出現這個錯誤當您的程式碼超過 Postgresql 資料庫允許的最大同時連線數。當在循環內開啟多個連接而沒有使用 conn.close(); 正確關閉時,通常會發生這種情況。因此,在類別銷毀時連接不會被釋放。
修正:
要解決此問題,請執行以下步驟:
protected void finalize() throws Throwable { try { your_connection.close(); } catch (SQLException e) { e.printStackTrace(); } super.finalize(); }
這個程式碼確保在類別被垃圾收集時關閉連線。
show max_connections;
預設限制為100. 如有必要,調整此值。
SELECT * FROM pg_stat_activity;
偵錯:
使用異常堆疊追蹤來追蹤連接創建的來源。 驗證創建連接的每一行都伴隨有相應的connection.close();
max_connections=100增加max_connections:
要增加允許的最大連接數,請找到postgresql.conf 檔案並編輯以下行:
將此值設為更大的數字並重新啟動select min_val, max_val from pg_settings where name='max_connections';最大max_connections:執行以下查詢以確定理論最大連接數:但是,建議設定合理的限制,防止失控進程獨佔連線。
以上是為什麼我的 PostgreSQL 資料庫中出現「org.postgresql.util.PSQLException: FATAL: 抱歉,有太多客戶端」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!