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 часов и напишите запланированное задание, чтобы запустить ваше приложение в более раннее время, прежде чем ваши пользователи попадут туда. Таким образом, его можно отключить на ночь.

Другие вопросы по тегам