排查 Azure Databases for PostgreSQL - 灵活服务器的连接问题
适用于: Azure Database for PostgreSQL 灵活服务器
连接问题可能由多种因素造成,包括:
- 防火墙设置
- 连接超时
- 不正确的登录信息
- 某些 Azure Database for PostgreSQL 灵活服务器资源达到了上限
- 服务的基础结构出现问题
- 正在服务中执行维护
- 通过缩放 vCore 数目或移到不同的服务层级更改了服务器的计算资源分配
通常,Azure Database for PostgreSQL 灵活服务器的连接问题可按如下方式分类:
- 暂时性错误(短暂或间歇性)
- 持久或非暂时性错误(定期重复发生的错误)
在执行维护、系统遇到硬件或软件错误,或更改服务器的 vCore 数目或服务层级时,会发生暂时性错误。 Azure Database for PostgreSQL 灵活服务器具有内置的高可用性,可以自动缓解此类问题。 但是,应用程序会短暂地与服务器断开连接,通常不会超过 60 秒。 某些事件偶尔可能需要更长的时间才能缓解,例如,当某个大型事务导致恢复长时间运行时。
- 检查 Azure 服务仪表板,了解在由应用程序报告错误期间是否发生任何已知的服务中断。
- 连接到云服务的应用程序(例如 Azure Database for PostgreSQL 灵活服务器)应预料到会发生暂时性错误,并实施重试逻辑来处理这些错误,而不是将它们作为应用程序错误展现给用户。 查看处理暂时性连接错误 - Azure Database for PostgreSQL - 灵活服务器,了解有关处理暂时性错误的最佳做法和设计准则。
- 由于服务器即将达到其资源限制,错误可能看起来像是暂时性连接问题。 请参阅限制 - Azure Database for PostgreSQL - 灵活服务器。
- 如果连接问题继续存在,或者应用程序发生错误的持续时间超过 60 秒或在特定的一天中看到错误多次发生,请通过在 Azure 支持网站上选择“获取支持”提出 Azure 支持请求。
如果应用程序一直无法连接到 Azure Database for PostgreSQL 灵活服务器,通常表示下列其中一项出现了问题:
- 服务器防火墙配置:请确保 Azure Database for PostgreSQL 灵活服务器防火墙配置为允许来自你的客户端(包括代理服务器和网关)的连接。
- 客户端防火墙配置:客户端的防火墙必须允许连接到数据库服务器。 对于无法连接的服务器 IP 地址和端口,必须允许它们连接,并且必须允许使用某些防火墙的应用程序名称(如 PostgreSQL)。
- 如果看到“服务器未配置为允许 IPv6 连接”错误,请注意,基本层不支持 VNet 服务终结点。 必须从子网中删除尝试连接到“基本”服务器的 Microsoft.Sql 终结点。
- 如果看到连接错误“未在其中编译 SSL 支持时,sslmode 值 "**" 无效”,则表示你的 PostgreSQL 客户端不支持 SSL。 最有可能的是,客户端 libpq 尚未使用“--with-openssl”标志进行编译。 尝试使用带有 SSL 支持的 PostgreSQL 客户端进行连接。
- 设置防火墙规则以允许客户端 IP 地址。 (仅出于临时测试目的)使用 0.0.0.0 作为起始 IP 地址,使用 255.255.255.255 作为结束 IP 地址,来设置一个防火墙规则。 这样会使服务器向所有 IP 地址开放。 如果这样可以解决连接性问题,请删除此规则,再针对适当限制的 IP 地址或地址范围创建防火墙规则。
- 在客户端与 Internet 之间的所有防火墙上,确保为出站连接打开端口 5432。
- 验证连接字符串和其他连接设置。
- 在仪表板中检查服务运行状况。 如果你认为发生了区域性服务中断,请参阅业务连续性概述 - Azure Database for PostgreSQL - 灵活服务器,了解恢复到新区域所要执行的步骤。