Як я можу розігріти свій веб-сайт asp.net mvc після пулу додатків утилізувати?


23

Я запускаю веб-версію ASP.NET MVC в IIS 8.0. Моя заявка повинна бути розігріта, перш ніж приймати запити. У нас вже є процес автоматичного прогріву програми, коли ми розгортаємо новий код. Однак ми спостерігаємо періодичні події Recycle Recycle Recycle, які призводять до того, що додаток не прогрівається.

Чи є найкраща практика виявлення події програми рециркуляції подій та виконання сценарію чи якогось коду?

Відповіді:


55

Можна зробити кілька речей:

1. Ініціалізація додатків

Ви можете використовувати модуль ініціалізації додатків, який постачається у комплекті з IIS 8.0

Ви можете мати щось подібне у своєму web.config

<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>

Це надсилатиме запит до кореня вашої програми ( initializationPage="/") щоразу, коли ваш додаток автоматично запускається.

Ви також можете налаштувати режим запуску для пулу додатків, Always Runningщо означає щоразу, коли IIS перезапуститься, він обов’язково запустить пул додатків негайно (це якщо клацнути правою кнопкою миші на пулі додатків, тоAdvanced Settings

введіть тут опис зображення

і Preloadдля самого веб-сайту (клацніть правою кнопкою миші на сайті, а Manage SiteпотімAdvanced Settings

введіть тут опис зображення

2. Вимкнути режим очікування

Крім того, ви можете відключити idleTimeout (за замовчуванням IIS вимкне програму після 20 хвилин активності), змінивши значення Idle Time-outдля пулу додатків на 0 (нескінченно)

введіть тут опис зображення

3. Вимкнути періодичну переробку

також вимкнути Regular Time Interval (minutes)за замовчуванням IIS буде переробити додаток кожні 29 годин.

введіть тут опис зображення

Для


3
Коментарі щодо недоліків цих налаштувань будуть вдячні. Звичайно, є причина, що вони не є типовими.
user42134

2
Звичайно, велике споживання пам’яті, якщо ви запускаєте кілька сайтів в одній вікні IIS, оскільки всі сайти постійно залишаються живими, що призводить до дуже низької щільності сайту. Також не захищено від витоків пам'яті у ваших програмах. Майте на увазі, що IIS існував ще до того, як керовані мови стали популярними для Інтернету, і багато додатків працювали з власними обробниками, які потрапляли у витоки пам’яті та дивний стан, якщо їх довго працювати. Це було зроблено, щоб допомогти сисадмінам, яким довелося прокинутися посеред ночі, щоб скинути сервери через проблеми з додатком. Вони все ще знаходяться за замовчуванням, здебільшого з відсталих причин порівняння
ахмеляй сказав

1
Альтернативи в IIS 7.5 - Windows Server 2008 R2 ?
Кікенет

2
Ви можете отримати модуль ініціалізації додатків для IIS 7.5 для роботи №1. №2 та №3 застосовні як до IIS 7.5
ахмелеса

1
FYI для людей, які використовують це: applicationInitializationіде в<configuration><system.webServer>
Пол

1

З мого досвіду, функція AlwaysRunning і попереднє завантаження не мають великої швидкості. Найбільше часу очікування йде на динамічну компіляцію (яку можна виправити за допомогою попередньої компіляції aspx) та завантаження збірок у пам'ять та кешування.

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