Azure — расширенный перезапуск приложения — доступ к экземпляру до того, как он будет готов

У меня есть служба приложений Azure, которая работает на двух экземплярах. Я попытался перезапустить расширенное приложение и установил задержку перезапуска на 90 секунд или более.

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

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

Если мне нужно перезапустить один из экземпляров, как я могу убедиться, что никто не прерывается?

ASP.Net 4.6.1


person Larry Flewwelling    schedule 18.02.2019    source источник


Ответы (2)


Use the AppInit feature :

With the AppInit feature, a new web app instances are added into the rotation, we ensure that the Application Initialization module reports that the site is fully warmed up before sending it a request from the frontend. To use the feature, add an applicationInitialization section to your web.config like so:
 
<system.webServer>        
  <applicationInitialization remapManagedRequestsTo="/Content/warmup.html"> 
     <add initializationPage="/api/values/100" /> 
  </applicationInitialization>
</system.webServer>
 
You can have multiple initialization pages, and the AppInit module will ensure that all of them return 200 before declaring the site officially warmed up. Meanwhile, you can (optionally) use the remapManagedRequestsTo attribute to have a friendly page showing that the site is still warming up.  Thanks to the AppInit feature, this page will not be visible to customers while adding new instances into rotation, however if a process crashes for whatever reason and enters AppInit again, it will come into play.

Модуль инициализации приложения устанавливается по умолчанию для веб-приложений Azure. Вы можете напрямую настроить его либо из файла web.config, либо через apphost.config XDT. Просто вставьте что-то вроде выше в файл web.config в корне вашего веб-приложения.

Вы также можете перейти по ссылкам ниже для получения дополнительной информации. https://docs.microsoft.com/en-us/iis/configuration/system.webserver/applicationinitialization/#configuration

https://ruslany.net/2015/09/how-to-warm-up-azure-web-app-during-deployment-slots-swap/

person DixitArora-MSFT    schedule 19.02.2019
comment
Это очень помогло, но у меня все еще есть связанная с этим проблема. В моей службе приложений есть виртуальное приложение. Виртуальное приложение представляет собой общедоступное веб-API-приложение. Когда я перезапустил основное приложение, основное приложение правильно прогрелось и т. д., но время ожидания моих запросов в виртуальном приложении истекло. - person Larry Flewwelling; 21.02.2019

Зонды HTTP и HTTPS основаны на зонде TCP и выдают HTTP GET с указанным путем. зонды аналогичны HTTP-зондам с добавлением оболочки Transport Layer Security (TLS, ранее известной как SSL). проба работоспособности чтобы по умолчанию проверять настроенный порт проверки работоспособности каждые 15 секунд. Вы можете уменьшить время зонда до 5 секунд, как показано ниже:

{
    "name": "http",
    "properties": {
    "protocol": "Http",
    "port": 80,
    "requestPath": "/",
    "intervalInSeconds": 5,
    "numberOfProbes": 2
}

Если у вас есть Шлюз приложений Вы также можете настроить его.

Примечание. Веб-сайты Azure внутренне проверяют работоспособность всего сервера, и если сервер неисправен, он не будет получать запросы. Дополнительные сведения см. в этой проблеме.

person Joey Cai    schedule 19.02.2019