适用于: 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 状态 以查看是否存在持续的问题。