IIS 8.5 холодный старт
У меня есть небольшое веб-приложение ASP.NET MVC 5, размещенное на VDS.
VDS имеет следующую конфигурацию: 2,6 Гц ЦП, 1 ГБ ОЗУ, 20 ГБ SSD, Windows Server 2012 R2, IIS 8.5.
Максимум 5 одновременно работающих пользователей могут получить доступ к этому сайту. Все работает быстро, но холодный запуск может занять много времени. Я знаю, что есть разные варианты уменьшения времени холодного запуска:
- Я могу сделать пул приложения "всегда работающим" и установить preloadEnabled в true.
- Или я могу использовать новую функцию приостановки IIS 8.5.
Может быть, есть другие возможности, о которых я не знаю. Какова лучшая стратегия для сокращения времени холодного запуска моего приложения?
Решение:
- Как и предполагалось, я увеличил время ожидания AppPool. Но вместо того, чтобы установить его на 12 часов, я установил его на 0 (отключил) и запланировал повторное использование AppPool на 04:00 AM.
- Я включил инициализацию приложения и настроил его на отправку запроса на специальную страницу, которая выполняет инициализацию. В моем приложении это была инициализация DbContext.
- Модуль инициализации приложения может выполнять только http-запросы, но все мое приложение было защищено ASP.NET MVC RequreHttpsAttribute. Так что изначально это не сработало. Существует обходной путь, отключающий перенаправление http на https для локальных запросов, как описано здесь.
1 ответ
"Всегда работает" - лучший вариант из его звуков. В прошлом вы должны были предоставить более подробную информацию.
Вы часто обновляете приложение в течение дня? Если это так, вы делаете вещи при запуске приложения? Предварительная загрузка данных в кеш / etc?
Есть ли у вас проблемы с деньгами / ресурсами, связанные с тем, что вы "не всегда это делаете"? Может быть, увеличьте время отключения AppPool до 12 часов и напишите запланированное задание, чтобы запустить ваше приложение в более раннее время, прежде чем ваши пользователи попадут туда. Таким образом, его можно отключить на ночь.