Переробка
Утилізація зазвичай *, коли IIS запускає новий процес у якості контейнера для вашої програми, а потім дає старий до ShutdownTimeLimit, щоб вийти з власної волі перед тим, як його вбити.
* - зазвичай: див. налаштування DisallowOverlappingRotation / "Вимкнення перекритої переробки"
Це руйнівно , оскільки вихідний процес і вся його інформація про стан відкидаються. Використання стану сеансу, що перебуває поза процесом (наприклад, Державний сервер або база даних, або навіть файли cookie, якщо ваш стан крихітний), може дозволити вам обійти це.
Але це за замовчуванням перекривається - тобто тривалість відключення мінімізована, оскільки новий процес починається і підключений до черги запитів, перш ніж старий відповість "у вас є [ShutdownTimeLimit] секунд, щоб піти. Будь ласка, дотримуйтесь".
Налаштування
На ваше запитання: усі налаштування на цій сторінці певним чином керують переробкою. "Вимкнення" може бути охарактеризовано як "проактивна переробка" - там, де сам процес вирішує, що пора йти, і завершується впорядковано.
Реактивна переробка - це WAS виявляє проблему та знімає процес (після встановлення відповідної W3WP заміни).
Тепер ось декілька речей, які можуть спричинити переробку тієї чи іншої форми:
- ISAPI вирішив, що це нездорово
- будь-який збій модуля
- час очікування
- обмеження процесора
- коригування властивостей пулу додатків
- як ваша мама, можливо , кричала в один момент: "Перестаньте вибирати це, інакше ніколи не стане краще!"
- "ping" пошкодження * насправді не pinging як таке, тому що він використовує названу трубу - більше "виявлення життя"
- всі налаштування на скріншоті вище
Що робити:
Як правило:
Вимкнути очікування в режимі очікування . 20 хвилин бездіяльності = бум! Новий процес при наступному вхідному запиті. Встановіть це на нуль.
Відключити регулярний інтервал часу - за замовчуванням 29 годин різні сторони описували як "шалений", "дратівливий" та "розумний". Насправді лише два з них справжні.
За бажанням увімкніть DisallowRotationOnConfigChange (вище, Вимкнути повторне використання для зміни конфігурації ), якщо ви просто не можете перестати грати з ним - це дозволяє вам змінити будь-які налаштування пулу додатків без того, щоб миттєво сигналізувати робочим процесам, що його потрібно вбити. Потрібно вручну переробити пул додатків, щоб отримати ефекти, щоб налаштування набули чинності, що дозволяє попередньо встановити налаштування, а потім скористатися вікном зміни, щоб застосувати їх через процес переробки.
Як загальний принцип, залиште pinging увімкнутим . Це ваша мережа безпеки. Я бачив, як люди вимикають її, а потім сайт зависає нескінченно, що призводить до паніки ... тож якщо налаштування занадто агресивні для вашого програми, очевидно, дуже-дуже повільного, що реагує, відмовте їх трохи і подивіться, що ви отримаєте, а не вимикаючи. (Якщо тільки у вас не встановлено автоматичний демпінговий режим для вивішених W3WP за допомогою власного процесу моніторингу)
Цього достатньо, щоб сприйнятий процес вечно жив. Якщо він помре, обов'язково його замінять. Якщо вона висить, пінг повинен вибрати , що і нова повинні початися в протягом 2 -х хвилин (за замовчуванням, в гіршому випадку вапняно повинен бути: до частоти пинга + пінг тайму - ауту + запуск ліміту часу , перш ніж запити знову почати працювати).
Обмеження процесора зазвичай не цікаве, тому що за замовчуванням він вимкнено, а також налаштований нічого не робити; якби він був налаштований на вбивство процесу, впевнений, це був би тригер переробки. Залиште це. Примітка для IIS 8.x, Процесор Throttling також стає опцією.
(IIS) AppPool не є (.Net) AppDomain (але може містити один / деякий)
Але ... тоді ми потрапляємо у .Net землю та утилізацію AppDomain, що також може спричинити втрату держави. (Дивіться: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
Коротка версія, ви робите це, торкнувшись файлу web.config у папці вмісту (знову ж таки з вибором!), Або створивши папку в цій папці, або файл ASPX, або .. інші речі ... і ось про що настільки руйнівно, як рециркуляція пулу додатків, за вирахуванням витрат на запуск нативного коду (це суто керована концепція коду (.Net), тому тут трапляються лише керовані кодові речі).
Антивірус може також викликати це, оскільки він сканує файли web.config, викликаючи сповіщення про зміни, спричиняючи ....