诊断和排查“Azure Cosmos DB 服务不可用”异常

适用范围: NoSQL

此 SDK 无法连接到 Azure Cosmos DB。 这种情况可能是暂时的或永久的,具体取决于网络条件。

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

在评估服务不可用错误时:

  • 以受影响的操作量与成功的操作量之比衡量的是什么效果? 它是否在服务 SLA 中?
  • P99 延迟/可用性是否受影响?
  • 故障是影响所有应用程序实例还是仅影响一部分? 当问题缩减到实例的一部分时,这通常就是与这些实例相关的问题。

疑难解答步骤

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

验证子状态代码

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

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

所需端口被阻止

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

客户端暂时性连接问题

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

请按照请求超时故障排除步骤解决此问题。

服务中断

检查 Azure 状态,了解是否有正在发生的问题。

后续步骤

  • 诊断和排查在使用 Azure Cosmos DB .NET SDK 时遇到的问题。
  • 诊断和排查使用 Azure Cosmos DB Java SDK 时遇到的问题。
  • 了解 .NET 的性能准则。
  • 了解 Java 的性能准则。