Event ID 1004 IIS WAS: внезапное завершение процесса w3wp.exe
Симптомы падения процесса IIS (Event ID 1004)
В журнале System регистрируется ошибка от источника Microsoft-Windows-WAS: Event ID 1004: A worker process serving application pool '[Имя_пула]' terminated unexpectedly. The process id was [PID]. The process exit code was '0xc0000005'.
| Симптом | Последствия |
|---|---|
| Ошибки 502.2 Bad Gateway / 500 Internal Error | У посетителей веб-сайта внезапно обрываются загрузка страниц и API запросы |
| Аварийное падение w3wp.exe (Crash) | Процесс исчезает из Диспетчера задач без выполнения штатных процедур выключения |
| Код завершения 0xC0000005 (Access Violation) | Попытка чтения или записи в защищенную память сторонним неуправляемым кодом |
Пошаговая диагностика и устранение крашей IIS (Event ID 1004)
- Найдите детали падения в журнале Application: найдите связанное событие
Event ID 1000 (Application Error)илиEvent ID 1026 (.NET Runtime):
# Поиск события падения .NET рантайма в журнале Application:
Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='.NET Runtime'; Id=1026} -MaxEvents 3 | Format-List Message- Настройте автоматический сбор аварийного дампа памяти через Procdump:
# Настройка автоматического захвата полного дампа памяти при следующем падении пула:
# Скачайте Procdump от Sysinternals и выполните команду в консоли:
procdump.exe -ma -e 1 -g -x C:\Dumps w3wp.exe- Проверьте используемый режим разрядности пула (32-бит vs 64-бит): если ваше веб-приложение использует старые 32-битные DLL компоненты:
# Включение поддержки 32-битных приложений для пула:
Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "enable32BitAppOnWin64" -Value $True- Проверьте целостность и версии установленных библиотек .NET Core Hosting Bundle: переустановите актуальный пакет .NET Core Windows Server Hosting Bundle.
Совет: Самая частая причина кода выхода 0xc0000005 — ошибки в неуправляемых библиотеках C++ (C-Extensions, драйверы Oracle, криптопровайдеры), вызванные некорректной работой с указателями памяти.
Частые вопросы (FAQ)
Что означает код выхода 0xc0000005?
Это исключение Access Violation (Нарушение прав доступа к памяти) — процесс попытался обратиться к адресу памяти, который ему не принадлежит.
Где посмотреть текст необработанного исключения в коде сайта?
В Event Viewer перейдите в журнал Application -> найдите событие .NET Runtime Event ID 1026, в котором будет указан полный Stack Trace ошибки.
Чем отличается Event ID 1004 от Event ID 5011?
Event 1004 фиксирует факт внезапного уничтожения процесса (Crash), а Event 5011 фиксирует отсутствие ответа на Ping-запрос (Hang/Freeze).
Как открыть и проанализировать файл дампа .dmp?
Используйте программу WinDbg (из Windows SDK) и выполните команду !analyze -v для автоматического выявления сбойной функции.