Назад | Перейти на главную страницу

Как я могу разогреть свое веб-приложение asp.net mvc после перезапуска пула приложений?

Я запускаю веб-приложение ASP.NET MVC в IIS 8.0. Мое приложение нужно разогреть, прежде чем принимать заявки. У нас уже есть процесс автоматического прогрева приложения при развертывании нового кода. Однако мы наблюдаем периодические события перезапуска пула приложений, из-за которых приложение не нагревается.

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

Вы можете сделать следующее:

1. Инициализация приложения

Ты можешь использовать Модуль инициализации приложения который входит в комплект с IIS 8.0

у вас может быть что-то подобное в вашем web.config

<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>

Это отправит запрос в корень вашего приложения (initializationPage="/") каждый раз, когда ваше приложение запускается автоматически.

Вы также можете настроить режим запуска для пула приложений, чтобы Always Running Это означает, что каждый раз, когда IIS перезапускается, он обязательно запускает ваш пул приложений немедленно (это если щелкнуть правой кнопкой мыши пул приложений, затем Advanced Settings

и Preload для вашего сайта (щелкните правой кнопкой мыши на сайте, затем Manage Site затем Advanced Settings

2. Отключить тайм-аут простоя

Кроме того, вы можете отключить idleTimeout (по умолчанию IIS выключит приложение через 20 минут активности), изменив значение в Idle Time-out для вашего пула приложений до 0 (бесконечно)

3. Отключите периодическую переработку.

также выключите Regular Time Interval (minutes) по умолчанию IIS будет перерабатывать ваше приложение каждые 29 часов.

Для

По моему опыту, при включенных AlwaysRunning и Preload скорость не сильно увеличивается. Наибольшее время ожидания уходит на динамическую компиляцию (которую можно исправить с помощью прекомпиляции aspx), загрузку сборок в память и кеширование.