当连接到 Amazon RDS for PostgreSQL 或 Aurora PostgreSQL 兼容数据库实例时,如何解决“无法向客户端发送数据”或“无法从客户端接收数据”错误?

1 分钟阅读
0

我试图查询 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 或 Amazon Aurora PostgreSQL 兼容数据库实例。但这样做时,就会收到以下错误之一:“无法向客户端发送数据”或“无法从客户端接收数据”

解决方法

Amazon RDS 数据库实例中的后端进程必须能够从客户端发送或接收数据。如后端进程无法发送或接收数据,则后端进程会在 PostgreSQL 日志中记录其中一个错误。要解决此问题,请完成以下步骤。

检查客户端是否为活动状态

首先检查客户端进程是否为活动状态。例如,如果客户端进程因内存不足 (OOM) 崩溃,则会话可能会被错误地终止。这种终止可能导致其中任何一个错误发生。

缩短 tcp_keepalives_idle 和 tcp_keepalives_interval 参数

如查询处理时间过长,则会话可能已经从客户端错误终止。要解决此问题,请增加客户端的超时设置。亦可缩短 tcp_keepalives_idle 以及 tcp_keepalives_interval 参数,从后端进程中检查客户端的活跃性。有关更多信息,可参阅使用参数组

要检查 tcp_keepalives_idle 以及 tcp_keepalives_interval 的默认值,请使用 PostgreSQL 客户端(诸如 psql)运行以下命令:

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

检查连通性

如果在查询处理时间减少的情况下出现错误,则检查客户端和数据库实例之间的连接。

检查从 rdsadmin 会话进行失效转移后是否出现错误

如果从 rdsadmin 会话进行失效转移后出现错误,则忽略该错误。

相关信息

PostgreSQL 错误码(位于 PostgreSQL 网站上)

连接和身份验证(位于 PostgreSQL 网站上)

设置 TCP keepalives 参数

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