Запрос по 429 вопросу, связанному с CosmosDB - PullRequest
0 голосов
/ 15 января 2020

Кто-нибудь сталкивался с этими проблемами, связанными с 429 при настройке вашего cosmosdb? Дайте мне знать ваше мнение о следующем:

Мы получили следующие исключения из документа db при добавлении ресурса в то время, когда мы получили 429 предупреждений. Это ожидаемые исключения или они связаны с чем-то другим? Есть идеи справиться с этим? Я уже добавил 3 повторных попытки, как указано ниже.

  1. Microsoft. Azure .Documents.RequestTimeoutException: истекло время ожидания запроса. - 616
  2. Microsoft. Azure .Documents.DocumentClientException: служба в настоящее время недоступна. - 38

Временной интервал (UT C): datetime (2020-01-06 08: 29: 35.0850244) и TIMESTAMP <= datetime (2020-01-06 17: 35: 16.5841001 ) </p>

Согласно сайту https://docs.microsoft.com/en-us/azure/cosmos-db/performance-tips: сервер превентивно завершит запрос RequestRateTooLarge (код состояния HTTP 429) и вернет заголовок x-ms-retry-after-ms, указывающий количество времени (в миллисекундах), в течение которого пользователь должен ждать перед повторной попыткой запроса.

 HTTP Status 429,
 Status Line: RequestRateTooLarge
 x-ms-retry-after-ms :100

Все SDK неявно перехватывают этот ответ, уважают указанный сервером заголовок retry-after и повторяют запрос. Если к вашей учетной записи одновременно не обращаются несколько клиентов, следующая попытка будет успешной. Тем не менее, я уже добавил политику повторов в мой код с 3 повторениями с интервалом ожидания 1 секунда. Влияет ли эта повторная попытка на повторную попытку, выполняемую клиентом документов? Или он работает поверх повторных попыток, размещенных клиентом документов?

RetryManager.ExecuteWithRetry(
                    RetryPolicy.CreatePolicy(3, TimeSpan.FromSeconds(1)),
                    () =>
                    {
                        try
                        {
                           // call document client to add to cosmos                            
                        }
                       catch (DocumentClientException exception)
                        {
                          // retry
                       }
                        catch (Exception ex)
                        {
                           // retry
                   });

Текущий SDK, используемый в нашем коде:

<package id="Microsoft.Azure.DocumentDB" version="2.9.2" targetFramework="net452" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...