诊断 Azure Cosmos DB 服务不可用异常并对其进行故障排除

适用于: NoSQL

本文介绍如何排查 SDK 何时无法连接到 Azure Cosmos DB 的问题。 此方案可以是暂时性的,也可以是永久性的,具体取决于网络条件。

请务必确保应用程序设计遵循 我们的指南,了解如何使用 Azure Cosmos DB SDK 设计可复原的应用程序 ,以确保它正确响应不同的网络条件。 应用程序应已针对服务不可用错误进行了重试。

评估服务不可用错误的情况时:

  • 与作成功相比,受影响作量的影响是多少? 它是否在服务 SLA 中?
  • P99 延迟或可用性是否受到影响?
  • 故障是影响所有应用程序实例还是仅影响子集? 当问题减少到实例的子集时,通常是与这些实例相关的问题。

故障排除步骤

以下列表包含服务不可用异常的已知原因和解决方案。

验证子状态代码

在某些情况下,HTTP 503“服务不可用”错误包括有助于识别原因的子状态代码。

子状态代码 Description
20001 服务不可用错误发生,因为存在客户端 连接问题 (尝试连接失败)。 客户端尝试 通过重试 进行恢复,但所有重试都失败。
20002 发生服务不可用错误,因为存在客户端 超时。 客户端尝试 通过重试 进行恢复,但所有重试都失败。
20003 服务不可用错误发生,因为存在与作系统相关的基础 I/O 错误。 有关相关 I/O 错误,请参阅异常详细信息。
20004 由于 客户端计算机的 CPU 过载,服务不可用错误。
20005 服务不可用错误发生,因为客户端计算机的线程池已耗尽。 验证 代码中的任何潜在阻止异步调用
20006 服务与客户端之间的连接以意外的方式中断或终止。
>= 21001 由于暂时性服务条件,此服务不可用错误。 验证上一部分中的条件,并确认是否已实施重试策略。 如果这些错误的数量与成功相比很高,请联系 Azure 支持部门。

正在阻止所需的端口

验证是否启用了所有 必需的端口

客户端暂时性连接问题

当存在导致超时的暂时性连接问题时,服务不可用异常可能会浮出水面,并可以按照 设计建议安全重试。

若要解决这些问题,请按照 请求超时故障排除步骤进行作

服务中断

检查 Azure 状态 以查看是否存在持续的问题。

后续步骤