Перший запит через деякий час завжди повільний - 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 мс .

Я вже встановив режим запуску на AlwaysRunning у пулі додатків, а Preload Enabled на True на рівні веб-сайту, але це не мало ефекту . Навіть якщо жодних змін / завантажень не відбувається, через деякий час пройде наступний запит, щоб отримати відповідь на 1,5 секунди.

Відповіді:


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 Runtime. Усі мої початкові завантаження сторінки (на кількох веб-сайтах) почали займати дві хвилини на кожну окрему сторінку, а не частку секунди. І всі мої експерименти з різними налаштуваннями IIS були невдалі у вирішенні проблеми.

Зрештою, мені вдалося вирішити проблему одним із двох способів:

  1. Повністю відтворений сервер, зафіксований до .NET 4.5 Runtime, вирішив мою проблему (разом із додаванням налаштування реєстру для блокування встановлення .NET 4.6.1 ).
  2. Крім того, повторне розміщення моїх веб-сайтів із відміткою "Precompile" та з відміткою "Дозволити оновлення" також вирішило мою проблему.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.