如何疑難排解在連線到 PostgreSQL 的 Amazon RDS 或 Aurora PostgreSQL 相容資料庫執行個體時出現的「could not send data to client」或「could not receive data from client」錯誤?

1 分的閱讀內容
0

我嘗試查詢 PostgreSQL 的 Amazon Relational Database Service (Amazon RDS) 或 Amazon Aurora PostgreSQL 相容版本資料庫執行個體。但是,當進行操作時,我收到以下錯誤之一:「could not send data to client」或「could not receive data from client」

解決方法

Amazon RDS 資料庫執行個體中的後端程序必須能夠從用戶端傳送或接收資料。如果後端程序無法傳送或接收資料,後端程序則會在 PostgreSQL 日誌中記錄其中一個錯誤。若要對此問題進行疑難排解,請完成下列步驟。

檢查用戶端的活躍性

首先檢查用戶端程序的活躍性。例如,如果用戶端程序因記憶體不足 (OOM) 而當機,工作階段則可能遭錯誤終止。此終止可能會造成這些錯誤之一發生。

縮短 tcp_keepalives_idle 和 tcp_keepalives_interval 參數

如果查詢的處理時間過長,工作階段則可能遭用戶端錯誤終止。若要解決此問題,請增加用戶端的逾時設定。您也可以縮短 tcp_keepalives_idletcp_keepalives_interval 參數,以從後端程序檢查用戶端的活躍性。如需詳細資訊,請參閱使用參數群組

若要檢查 tcp_keepalives_idletcp_keepalives_interval 的預設值,請使用如 psql 之類的 PostgreSQL 用戶端執行下列指令:

SELECT name, setting FROM pg_settings WHERE name LIKE 'tcp_keepalives_%'

檢查連線

如果在查詢處理時間較少的情況下仍發生錯誤,請檢查用戶端與資料庫執行個體之間的連線。

檢查從 rdsadmin 工作階段容錯移轉後是否發生錯誤

如果從 rdsadmin 工作階段容錯移轉後發生錯誤,請忽略該錯誤。

相關資訊

PostgreSQL 錯誤代碼 (PostgreSQL 網站)

連線和驗證 (PostgreSQL 網站)

設定 TCP 保持連線參數

AWS 官方
AWS 官方已更新 10 個月前