Я запускаю веб-приложение ASP.NET MVC в IIS 8.0. Мое приложение нужно разогреть, прежде чем принимать заявки. У нас уже есть процесс автоматического прогрева приложения при развертывании нового кода. Однако мы наблюдаем периодические события перезапуска пула приложений, из-за которых приложение не нагревается.
Есть ли лучшая практика для обнаружения события перезапуска пула приложений и выполнения сценария или некоторого кода?
Вы можете сделать следующее:
Ты можешь использовать Модуль инициализации приложения который входит в комплект с IIS 8.0
у вас может быть что-то подобное в вашем web.config
<applicationInitialization
doAppInitAfterRestart="true" >
<add initializationPage="/" />
</applicationInitialization>
Это отправит запрос в корень вашего приложения (initializationPage="/"
) каждый раз, когда ваше приложение запускается автоматически.
Вы также можете настроить режим запуска для пула приложений, чтобы Always Running
Это означает, что каждый раз, когда IIS перезапускается, он обязательно запускает ваш пул приложений немедленно (это если щелкнуть правой кнопкой мыши пул приложений, затем Advanced Settings
и Preload
для вашего сайта (щелкните правой кнопкой мыши на сайте, затем Manage Site
затем Advanced Settings
Кроме того, вы можете отключить idleTimeout (по умолчанию IIS выключит приложение через 20 минут активности), изменив значение в Idle Time-out
для вашего пула приложений до 0 (бесконечно)
также выключите Regular Time Interval (minutes)
по умолчанию IIS будет перерабатывать ваше приложение каждые 29 часов.
Для
По моему опыту, при включенных AlwaysRunning и Preload скорость не сильно увеличивается. Наибольшее время ожидания уходит на динамическую компиляцию (которую можно исправить с помощью прекомпиляции aspx), загрузку сборок в память и кеширование.