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

12

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

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

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

michalstanko
источник

Ответы:

9

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

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

Функция IIS

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

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

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

Больше информации здесь .

Кристиан Голлхардт
источник
0

Возможно ли несовпадение версий между версией .NET Framework, на которую ориентирован ваш веб-сайт, и версией .NET Framework Runtime, установленной на веб-сервере?

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

Расширенные настройки прекомпиляции

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

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

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

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

макинтош
источник