诊断和排查“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 状态,了解是否有正在发生的问题。