Что заставляет пул приложений в IIS перерабатывать?

Я искал информацию об этом безрезультатно. Контекст, почему мне это нужно, - другой вопрос, который я задал здесь. Более конкретно, создает или обновляет/удаляет файлы в App_Data, чтобы перезагрузить пул?

Если кто-то может предоставить подробный список того, что вызывает переработку, это было бы здорово.

ОБНОВЛЕНИЕ. Как уже заметили два пользователя, я также был бы рад ответить, указав причины для утилизации только AppDomain, а не всего пула.

Ответ 1

Два разных эффекта:

  • Процесс AppPool является хостом для потенциально нескольких доменов приложений. Как правило, это может быть переработано с помощью ряда эффектов. Это может быть время (каждые n часов), отсутствие запросов, использование памяти и т. Д.; все настроено в диспетчере конфигурации IIS.

  • Домен приложений, размещенный экземпляр корневого каталога вашего приложения, может циклически повторяться, не затрагивая другие домены приложений в AppPool. Сообщение Тесс об утилизации AppDomain довольно проницательное.

Вы пишете в папку, отслеживаемую для перекомпиляции. В какой-то момент это приведет к восстановлению домена приложения.

Журнал событий поможет вам определить, по какой причине произошла перезапуск.

Ответ 2

Статья, которую вам понравилась в другом посте, действительно сделала действительно хорошую работу.

Немедленная переработка

  • Изменения в Web.config
  • Изменения Machine.config
  • Изменения Global.asax
  • Изменения в каталоге корзины
  • Изменения в App_Code

Отложенный цикл

Может произойти с несколькими изменениями в других местах, как правило, я заметил это только с изменениями в файлах .aspx или .cs/.vb. Добавление временного текста, csv или других файлов не привело к проблемам для меня.

ПРИМЕЧАНИЕ. Это все утилиты, используемые в домене приложений, а не фактические рециркуляции пула. Как правило, приложение POOL будет перерабатываться только на основе параметров в IIS (количество запросов, ограничение памяти, время простоя или запланированный перезапуск).

Ответ 3

Возможно, вы захотите включить полные журналы событий AppPool Recycle:

cscript adsutil.vbs Set w3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255 

Вы также можете взглянуть на эту статью блога Скотта Гатри: http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx, которая показывает, как писать код в Global.ASAX для регистрации фактической причины события Application.End.

Это было чрезвычайно полезно для нас при диагностике нескольких проблемных ошибок: одно в partictual было приложением, которое записывало файлы журналов в каталог wwwroot - слишком много изменений в файле, приводящих к переработке...

Ответ 4

Это может происходить ежедневно на основе предпочтений или когда максимальная виртуальная память для процесса превышена.

Ответ 5

Это параметр, который вы можете манипулировать для утилизации пула приложений на основе количества запущенных минут или количества обработанных запросов.

Он также будет перерабатывать изменения в web.config и другие вещи, которые были отправлены здесь.

IIS reset также выполнит трюк, а также остановит/запустит службы.

Ответ 6

w3wp.exe выдает ошибку. Это вызывало вызов Application_Start в Global.asax.

Чтобы это выяснить, я открыл Event Viewer.

Под Журналами Windows я перешел в Приложение.

Я обнаружил ошибку приложения:

Faulting application name: w3wp.exe, version: 10.0.16299.15, time stamp: 0x0aeb5595
Faulting module name: KERNELBASE.dll, version: 10.0.16299.334, time stamp: 0x6369e29f
Exception code: 0xe0434352
Fault offset: 0x0000000000014008
Faulting process id: 0x2900
Faulting application start time: 0x01d43b16f726cbb9
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
Report Id: 998cf55d-2cd9-4b8d-9884-2110e3fd1411
Faulting package full name: 
Faulting package-relative application ID: