诊断和排查“Azure Cosmos DB Java v4 SDK 服务不可用”异常
适用范围: NoSQL
Java v4 SDK 无法连接到 Azure Cosmos DB。
疑难解答步骤
下面的列表包含“服务不可用”异常的已知原因和解决方案。
所需端口被阻止
验证所有必需的端口是否已启用。 如果帐户配置了专用终结点,则还需要打开其他端口。
failed to establish connection to {account name}.documents.azure.cn/<unresolved>:3044 due to io.netty.channel.ConnectTimeoutException:
客户端初始化失败
如果 SDK 无法与 Azure Cosmos DB 实例通信,则会出现以下异常。 此异常通常表明某些安全协议(例如防火墙规则)正在阻止请求。
java.lang.RuntimeException: Client initialization failed. Check if the endpoint is reachable and if your auth token is valid
若要验证 SDK 是否可与 Azure Cosmos DB 帐户通信,请从托管应用程序的位置执行以下命令。 如果失败,则表明防火墙规则或其他安全功能阻止了请求。 如果成功,则 SDK 应该能够与 Azure Cosmos DB 帐户通信。
telnet myCosmosDbAccountName.documents.azure.cn 443
客户端暂时性连接问题
当存在导致超时的暂时性连接问题时,可能会出现“服务不可用”异常。 通常,与此情况相关的堆栈跟踪会包含 ServiceUnavailableException
错误以及诊断详细信息。 例如:
Exception in thread "main" ServiceUnavailableException{userAgent=azsdk-java-cosmos/4.6.0 Linux/4.15.0-1096-azure JRE/11.0.8, error=null, resourceAddress='null', requestUri='null', statusCode=503, message=Service is currently unavailable, please retry after a while. If this problem persists please contact support.: Message: "" {"diagnostics"}
请按照请求超时故障排除步骤解决此问题。
UnknownHostException
UnknownHostException 表示 Java 框架无法解析受影响计算机中 Azure Cosmos DB 终结点的 DNS 条目。 应验证计算机是否可解析 DNS 条目,或者,如果你有任何自定义 DNS 解析软件(例如 VPN 或代理,或自定义解决方案),请确保它包含的配置适用于此错误宣称的无法解析的 DNS 终结点。 如果不断出现错误,可以通过 curl
命令验证计算机对错误中所述的终结点的 DNS 解析。
服务中断
检查 Azure 状态,了解是否有正在发生的问题。
后续步骤
- 诊断和排查使用 Azure Cosmos DB Java v4 SDK 时遇到的问题。
- 了解 Java v4 SDK 的性能准则。