Случайное время ожидания таблицы/блоба/очереди Azure в системе Linux (приложение k8s .net core 3)C#

Место общения программистов C#
Ответить
Anonymous
 Случайное время ожидания таблицы/блоба/очереди Azure в системе Linux (приложение k8s .net core 3)

Сообщение Anonymous »

Это мой сценарий:
  • Microsoft.Azure.Storage.Blob 11.2.0
  • Microsoft.Azure.Storage.Queue 11.2.0
  • Microsoft.Azure.Cosmos.Table 1.0.7
Я без каких-либо проблем перенес большую часть своего кода из функции Azure в Google k8s и Google Cloud, запустив приложение .NET Core, в основном с той же библиотекой, встроенной в .NET Standard 2.0.
Через несколько дней я заметил другое поведение в системе Linux.
Несколько вызовов, взаимодействующих со службой Azure (BLOB, таблица, очередь), получают тайм-ауты (подсистема, похоже, дает сбой, я пробовал другую политику повтора с результат тот же).
На 10 000 звонков получаю от 10 до 50 ошибок (или очень длинные звонки по 180 секунд, до того как я поменял таймауты). Это происходит во всех службах Azure: таблице, больших двоичных объектах и ​​очереди.
Я пробовал разные решения, чтобы выяснить, почему:
  • Я создаю экземпляр клиента (blobClient, TableClient..etc) при каждом вызове или перезапускаю один и тот же клиент, но без разницы
  • Я меняю все таймауты, чтобы справиться с таким поведением. Я работаю над ServerTimeout и MaximumExecutionTime и помещаю слой сверху с моим механизмом повтора, чтобы минимизировать ошибки. Теперь у меня есть «всего» несколько вызовов по 20 секунд (вместо 2/3 секунды, например).
  • Я попробовал все решения с похожими проблемами, найденные в Stackoverflow :D ... но ничего не работает (на данный момент)
Тот же код DLL работает на функции Azure без каких-либо проблем.
Итак, я пришел к выводу, что в HTTP-клиенте есть что-то, используемое внутри Azure SDK, это зависит от операционной системы, в которой вы запускаете свой код.
После нескольких статей я думаю, что это может быть заголовок Keep-Alive, поэтому я пробую корень своей композиции:

Код: Выделить всё

ServicePointManager.SetTcpKeepAlive (true, 120000, 10000);
но ничего не меняется.
Есть идеи или предложения?

Подробнее здесь: https://stackoverflow.com/questions/635 ... core-3-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»