Случайное время ожидания таблицы/блоба/очереди 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
Micorosoft.Azure.Cosmos.Table 1.0.7
Я без каких-либо проблем перенес большую часть своего кода из функции Azure в Google k8s и Google Cloud, запустив приложение Core .Net, по сути, с той же библиотекой, встроенной в .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-клиент, используемый внутри пакета SDK Azure, который зависит от операционной системы, в которой вы запускаете свой код.
После нескольких статей я думаю, что это может быть заголовок 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#»