Код: Выделить всё
Microsoft.Azure.Storage.Blob 11.2.0
Microsoft.Azure.Storage.Queue 11.2.0
Micorosoft.Azure.Cosmos.Table 1.0.7
Через несколько дней я заметил другое поведение в системе Linux.
Немногие вызовы, взаимодействующие со службой Azure (BLOB, таблица, очередь), получают тайм-ауты (подсистема, по-видимому, неудачно, я попробовал разные политики повторов с тем же результатом).
На 10 000 вызовов я получаю от 10 до 50 ошибок (или очень длинные вызовы 180 секунд, прежде чем я изменил таймауты). Это происходит во всех службах Azure: таблице, больших двоичных объектах и очереди.
Я пробовал разные решения, чтобы выяснить, почему:
- Я создаю экземпляр клиента (blobClient, TableClient..etc) при каждом вызове или перезапускаю один и тот же клиент, но без разницы
- Я меняю все таймауты, чтобы справиться с таким поведением. Я работаю над ServerTimeout и MaximumExecutionTime и помещаю слой сверху с моим механизмом повтора, чтобы минимизировать ошибки. Теперь у меня есть «только» несколько вызовов по 20 секунд (вместо 2/3 секунды, например).
- Я попробовал все решения с похожими проблемами, найденные в Stackoverflow
... но ничего не работает (пока)
Итак, я пришел к выводу, что что-то есть в http-клиент, используемый внутри пакета SDK Azure, который зависит от операционной системы, в которой вы запускаете свой код.
После нескольких статей я думаю, что это может быть заголовок Keep-Alive, поэтому я пробую корень своей композиции:
Код: Выделить всё
ServicePointManager.SetTcpKeepAlive (true, 120000, 10000);
Есть идеи или предложения? ...возможно я на неправильном пути или что-то пропустил.
Подробнее здесь: https://stackoverflow.com/questions/635 ... core-3-app
Мобильная версия