Event ID 1013 IIS W3SVC-WP: Application pool exceeded time limits
Симптомы ошибки Event ID 1013 (IIS-W3SVC-WP)
В журнале System фиксируется ошибка веб-сервера Internet Information Services (IIS) с кодом Event ID 1013:
A process serving application pool 'DefaultAppPool' exceeded time limits during shut down. The process id was 4820.
Как проявляется сбой на веб-сервере:
- Сайт или веб-приложение кратковременно зависает или выдает ошибку HTTP 503 Service Unavailable.
- Пул приложений зависает в состоянии Stopping в диспетчере служб IIS.
- Рабочий процесс
w3wp.exeпринудительно уничтожается операционной системой (Hard Terminated). - Пользовательские сессии и незавершенные веб-запросы обрываются без сохранения данных.
Простыми словами: При перезапуске (Recycle) пула приложений служба IIS вежливо просит процесс w3wp.exe завершить текущие запросы и закрыться. Если за отведенное время (по умолчанию 90 секунд) процесс не успевает обработать зависшие запросы к базе данных или внешним API, сервер жестко убивает процесс и регистрирует ошибку Event ID 1013.
Пошаговая настройка и устранение сбоя Event ID 1013
Увеличение лимита времени на остановку пула (Shutdown Time Limit)
Если веб-приложение выполняет длительные фоновые расчеты, увеличьте лимит времени на корректное завершение работы:
- Откройте Диспетчер служб IIS (
inetmgr). - Перейдите в Пулы приложений (Application Pools).
- Выберите проблемный пул и нажмите Дополнительные параметры (Advanced Settings).
- В разделе Модель процессов (Process Model) измените параметр Предел времени выключения (секунды) со стандартных
90на300(5 минут).
# Либо измените лимит через команду PowerShell IISAdministration: Set-ItemProperty "IIS:\AppPools\DefaultAppPool" -Name "processModel.shutdownTimeLimit" -Value (New-TimeSpan -Seconds 300)- Откройте Диспетчер служб IIS (
Поиск зависших веб-запросов через команду appcmd
Узнайте, какие именно запросы выполняются слишком долго внутри пула:
C:\Windows\System32\inetsrv\appcmd.exe list requestsВключение режима Orphan Worker Process для создания дампа памяти
Если процесс намертво зависает из-за дедлока в коде приложения, настройте создание автоматического дампа памяти перед его уничтожением:
# Включение изоляции зависшего процесса для анализа разработчиками: Set-ItemProperty "IIS:\AppPools\DefaultAppPool" -Name "failure.orphanWorkerProcess" -Value $TrueНастройка таймаутов подключения к внешним СУБД
Убедитесь, что в файле
web.configвашего приложения установлены адекватные таймауты подключения к базе данных SQL (CommandTimeout), чтобы запросы не висели часами.
Частые вопросы (FAQ)
Чем грозит жесткое завершение процесса w3wp.exe?
При принудительном снятии процесса клиенты получают ошибки 502 Bad Gateway или 503 Service Unavailable, а незаписанные данные в сессиях In-Proc теряются.
Почему пул приложений вообще перезапускается сам по себе?
В IIS по умолчанию настроена периодическая переработка пулов (Recycling) каждые 1740 минут (29 часов) или при превышении лимита по оперативной памяти.
Как сделать перезапуск пула полностью бесшовным?
Включите в свойствах пула параметр Disable Overlapped Recycle = False. В этом случае IIS сначала поднимет новый процесс w3wp.exe, переведет на него трафик, и только затем начнет плавный останов старого.
Как перезапустить службу IIS целиком из командной строки?
Выполните команду iisreset /restart в командной строке от имени Администратора.