Разминка Azure webapi

При чтении документов: https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots#swap-operation-steps, шаг 4, это указано:

Если автоматическая подкачка включена с настраиваемым прогревом, инициируйте запуск приложения, отправив HTTP-запрос к корню приложения («/») для каждого экземпляра исходного слота.

Если applicationInitialization не указано, инициируйте HTTP-запрос к корню приложения исходного слота на каждом экземпляре.

Если экземпляр возвращает какой-либо ответ HTTP, он считается разогретым.

Означает ли это, что 1) пользовательский прогрев должен быть включен для свопа для вызова root (или любых других URL-адресов), или 2) если пользовательский разогрев не включен, он вызывает root? Независимо от 1) или 2): если ничего не указано, все возвращенные коды состояния сообщают процессу подкачки, что слот нагревается?

ОБНОВЛЕНИЕ. То, как я читаю документы (https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots#swap-operation-шаги):

... App Service does the following to ensure that the target slot doesn't experience downtime:

1. ...
2. ...
3. ...
4. If auto swap is enabled with custom warm-up, **[AppService will]** trigger Application Initiation by making an HTTP request to the application root ("/") on each instance of the source slot.

If applicationInitialization isn't specified, **[AppService will]** trigger an HTTP request to the application root of the source slot on each instance.

If an instance returns any HTTP response, it's considered to be warmed up.
5. ...

Но кажется, я неправильно читаю?


person mslot    schedule 09.10.2019    source источник


Ответы (1)


Позвольте мне ответить на ваши вопросы один за другим:

1: пользовательский прогрев должен быть включен для свопа для вызова root (или любых других URL-адресов)

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


2: или, если пользовательский прогрев не включен, он вызывает root?

Он не будет вызывать root, если он не указан в system.webServer > ApplicationInitialization в web.config файле.


3: Независимо от 1 или 2: если ничего не указано, все возвращенные коды состояния сообщают процессу подкачки, что слот нагрелся?

Если ничего не указано, он просто поменяет слоты местами, вообще не учитывая разминку. Только когда блок applicationInitialization доступен в web.config файле, он будет ждать, пока модуль ApplicationInitialization вернет статус завершения, а затем продолжит обмен.


Даже после того, как разогрев выполнен в промежуточном слоте, при замене промежуточный-рабочий-процесс все еще может перезапуститься, учитывая различия в конфигурации при запуске.

Я наблюдал, как процесс подкачки приводит к нулевому простою, когда промежуточная и производственная конфигурации точно совпадают.

Есть несколько других случаев прогрева и перезапуска приложения во время процесса подкачки, пожалуйста, обратитесь к этой статье: https://ruslany.net/2017/11/most-common-deployment-slot-swap-failures-and-how-to-fix-them/

person Sunny Sharma    schedule 09.10.2019
comment
Причина, по которой я спрашиваю, заключается в том, что ответы на этот вопрос разделены в сети, и неясно, как это указывается в документации. Я обновил свой ответ, чтобы показать, как я его читаю. Я испытал, без applicationInitialization, что своп отказывался завершиться, потому что он не мог вызвать /. Но это противоречит тому, что я читаю в Интернете, и я не думаю, что документация достаточно ясна по этому поводу. - person mslot; 09.10.2019
comment
Ох. Он вызывает root только в том случае, если включена автоматическая подкачка: D нет 5. Если applicationInitialization не указано, - это не отдельное правило. ApplicationInitialization проверяется только в том случае, если включена автоматическая подкачка. - person mslot; 09.10.2019