排查 Azure Databases for PostgreSQL - 单一服务器的连接问题
适用于: Azure Database for PostgreSQL - 单一服务器
重要
Azure Database for PostgreSQL - 单一服务器即将停用。 我们强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 有关迁移到 Azure Database 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,通常表示下列其中一项出现了问题:
- 服务器防火墙配置:请确保用于 PostgreSQL 服务器防火墙的 Azure 数据库配置为允许来自客户机(包括代理服务器和网关)的连接。
- 客户端防火墙配置:客户端的防火墙必须允许连接到数据库服务器。 对于无法连接的服务器 IP 地址和端口,必须允许它们连接,并且必须允许使用某些防火墙的应用程序名称(如 PostgreSQL)。
- 用户错误:你可能错误键入了连接参数(例如,在连接字符串中键入了服务器名称,或者在用户名中遗漏了 @servername 后缀)。
- 如果看到“服务器未配置为允许 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 确保业务连续性的概述了解恢复到新区域所要执行的步骤。