Поделиться через


Диагностика и устранение неполадок, связанных с исключениями из-за недоступности службы Azure Cosmos DB в пакете SDK для Java версии 4

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Пакету SDK для Java версии 4 не удалось подключиться к Azure Cosmos DB.

Действия по устранению неполадок

Ниже перечислены известные причины исключений, связанных с недоступностью службы, и решения по их устранению.

Требуемые порты блокируются

Убедитесь, что включены все необходимые порты. Если учетная запись настроена с частной конечной точкой, необходимо открыть дополнительные порты.

failed to establish connection to {account name}.documents.azure.com/<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.com 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 не может разрешить запись DNS для конечной точки Azure Cosmos DB на затронутом компьютере. Вы должны убедиться, что компьютер может разрешить запись DNS, или, если у вас есть пользовательское программное обеспечение для разрешения DNS (например, VPN, прокси-сервер или пользовательское решение), убедитесь, что оно содержит правильную конфигурацию для конечной точки DNS, о которой ошибка утверждает, что она не может быть разрешена. Если ошибка происходит постоянно, можно проверить разрешение DNS компьютера с помощью команды curl на конечной точке, описанной в этой ошибке.

Перебой в работе службы

Проверьте состояние Azure, чтобы выяснить, по-прежнему ли ошибка существует.

Следующие шаги