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

Первый запрос через некоторое время всегда медленный - ASP.NET MVC / IIS 8.5 / Windows Server 2012 R2 VPS

Я размещаю приложение ASP.NET MVC 5 с низким трафиком на VPS с Windows Server 2012 R2 / IIS 8.5 с 1 ГБ ОЗУ.

Моя проблема в том, что первый запрос через некоторое время без каких-либо запросов всегда получает медленный ответ - около 1,5 секунд согласно Chrome Dev Tools. Последующие запросы / ответы на обновление занимают только около 45 мс.

Я уже установил Режим запуска в AlwaysRunning в пуле приложений и Предварительная загрузка включена до True на уровне веб-сайта, но нет эффекта. Даже если никаких изменений / загрузок нет, по прошествии некоторого времени при следующем запросе на получение ответа потребуется 1,5 с.

Проблема в том, что вам нужно установить функцию IIS Application Initialization. Тогда он должен работать с вашей конфигурацией.

Изображение взято из Блог Рика Страла:

Также не забудьте установить:

  • Режим запуска к AlwaysRunning в пуле приложений
  • Предварительная загрузка включена к Правда на уровне веб-сайта

Вы можете установить эти настройки без Инициализация приложения Модуль будет установлен, но тогда они не подействуют.

Больше информации Вот.

Существует ли потенциально несовпадение версий между версией .NET Framework, на которую нацелен ваш веб-сайт, и версией среды выполнения .NET Framework, установленной на веб-сервере?

И вы развертываете веб-сайт, который не скомпилирован заранее и / или не обновляется? -

Обновления версии .NET Runtime предназначены для обеспечения высокой обратной совместимости. Однако я столкнулся с очень похожей проблемой при переносе нескольких веб-сайтов, нацеленных на .NET 4.5.1 Framework, с сервера Windows Server 2008 R2 на сервер Windows Server 2012 R2, исправленный до .NET 4.6 Runtime. Вся моя начальная загрузка страницы (на нескольких веб-сайтах) начиналась по две минуты для каждой отдельной страницы вместо доли секунды. И все мои эксперименты с разными настройками IIS не помогли решить проблему.

В конечном итоге я смог решить проблему одним из двух способов:

  1. Полное воссоздание сервера, исправленное до .NET 4.5 Runtime, решило мою проблему (наряду с добавлением параметра реестра в заблокировать установку .NET 4.6.1).
  2. Кроме того, повторное развертывание моих веб-сайтов с установленным флажком «Предварительная компиляция» и снятием флажка «Разрешить обновление» также решило мою проблему.

Напротив, все мои попытки откатить или восстановить версию .NET Runtime на сервере в среду выполнения .NET 4.5 не решила проблемы с загрузкой моей страницы. (По сути нет чистого, надежного процесса для полного отката .NET Runtime за исключением повторного создания образа сервера.)