Как избежать перезапуска хостинга при развертывании Функций Azure со слотом развертывания?

Я настроил конвейер для развертывания с нулевым временем простоя для Функций Azure. Для этого у меня есть следующие шаги:

  • создать слот
  • развернуть в слот
  • начать обмен с предварительным просмотром
  • полный обмен

Насколько я понимаю, все перезапуски должны происходить только в слоте предварительного просмотра (поэтому перезапускается только JobHost), и это должно быть место до окончательного свопа. Однако в Application Insight я заметил, что Hosting stopped, что приводит к 503 коду, когда я нажимаю функцию. Есть ли способ избежать этого? Я не уверен, имеет ли это значение, но я использую премиум-план.




Ответы (2)


Вы не можете избежать перезагрузки, но вы можете использовать собственный разминка, если это необходимо вашей функции.

Операция подкачки ожидает завершения разогрева перед заменой на целевую подкачку. Вы настраиваете это в файле web.config, пример ниже:

<system.webServer>
    <applicationInitialization>
        <add initializationPage="/" hostName="[app hostname]" />
        <add initializationPage="/Home/About" hostName="[app hostname]" />
    </applicationInitialization>
</system.webServer>

Вы также можете настроить поведение при разогреве с помощью одного или обоих следующих параметров приложения:

  • WEBSITE_SWAP_WARMUP_PING_PATH: путь к пингу для разогрева вашего сайта. Добавьте этот параметр приложения, указав настраиваемый путь, начинающийся с косой черты в качестве значения. Пример - / statuscheck. Значение по умолчанию - /.
  • WEBSITE_SWAP_WARMUP_PING_STATUSES: действительные коды ответа HTTP для операции разогрева. Добавьте этот параметр приложения со списком кодов HTTP, разделенных запятыми. Например, 200 202. Если возвращенного кода состояния нет в списке, операции разогрева и обмена останавливаются. По умолчанию действительны все коды ответов.
person Martyn C    schedule 11.08.2020

Мне удалось добиться нулевого времени простоя для переменной настройки развертывания с WEBSITE_ADD_SITENAME_BINDINGS_IN_APPHOST_CONFIG на 1. Для получения дополнительной информации посетите здесь. Одним из недостатков этого является медленная обработка запросов во время развертывания.

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

person Krzysztof Madej    schedule 25.08.2020