本文介绍如何排查 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 状态,了解是否有正在发生的问题。