Кажущаяся задержка доступа к Azure KeyVault - PullRequest
0 голосов
/ 26 ноября 2018

У нас есть веб-служба ASP.NET на основе Azure, которая обращается к Azure KeyVault.Мы видим два случая, когда метод «зависает» с первой попытки, а затем работает примерно через минуту.

В обоих случаях происходит доступ к KeyVault.В обоих случаях проблема началась, когда мы начали использовать KeyVault в этих методах.

Мы сделали очень осторожную регистрацию в первом случае и не можем видеть в нашем коде ничего другого, что могло бы вызвать зависание.Доступ к KeyVault является основным подозреваемым.

Кроме того, если мы запускаем приложение с наших локальных серверов (из Visual Studio), доступ к KeyVault работает нормально с «первой попытки».Он выдает ошибку «зависания» только при запуске в Azure и только при этой «первой попытке».

Под «зависанием» я подразумеваю, что в одном случае, который вызывается внешним API,это занимает не менее 60 секунд (мы можем сказать, что это происходит из-за истечения времени ожидания внешнего API). В другом случае, который вызывается запросом страницы, может пройти несколько минут, и страница просто раскручивается, и в этот момент мы принимаем запрос БД.или что-то еще истекло.

Когда я говорю «минута или около того», это так же быстро, как мы рассчитали время повторной попытки.

Есть ли какая-то проблема или функция, когдаKeyVault необходимо «разогреть», прежде чем он будет работать с первой попытки?

Обновление: я смотрю на код более внимательно и вижу, по крайней мере, пару мест, куда мы можем вставить еще больше журналированиячтобы получить более точную картину того, где происходит сбой.Я собираюсь сделать это, а затем сообщу здесь.

Обновление: см. Ответ ниже - крупная ошибка новичка, была исправлена.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Обнаружена проблема и решение.

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

private async Task<string> GetKeyVaultSecretValue(varSecretParms) {

Не знаюОднако, по-видимому, он не понимает основную технологию, если вызов выполняется из стандартной последовательности кода, сервер не любит ждать, и поэтому поток прерывается / останавливается.

0 голосов
/ 27 ноября 2018

Согласно вашему описанию, похоже, что WebApp обязывает не включать Always on .

По умолчанию веб-приложения выгружаются , если они простаивают в течение некоторого периода времени.Это позволяет системе сохранять ресурсы.В базовом или стандартном режиме вы можете включить Always On, чтобы приложение постоянно загружалось

Если возможно, попробуйте включить Always on и попробуйте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...