Event ID 5002 WAS: Пул приложений IIS отключен (Rapid Fail Protection)
Архитектура защиты IIS (WAS) и симптомы отключения
Событие 5002 логируется источником WAS (Windows Process Activation Service) в журнале System. Сообщение гласит: «Пул приложений [ИмяПула] автоматически отключается из-за ряда сбоев в процессах, обслуживающих этот пул». Симптомы: веб-сайт, портал или почта Exchange мгновенно перестают работать, все новые пользователи получают белый экран с ошибкой 503 Service Unavailable (Служба недоступна). В диспетчере IIS (inetmgr) проблемный пул переходит в статус "Stopped" (Остановлен). Его можно запустить вручную, но он снова упадет.
Механика защиты: Rapid Fail Protection
Ошибка 5002 — это не причина падения сайта. Это встроенный предохранитель IIS (Rapid Fail Protection). Если рабочий процесс сайта (w3wp.exe) упал с фатальной ошибкой (>Событие 5011 или 5009) 5 раз подряд за 5 минут, служба WAS понимает, что код сайта содержит баг, убивающий процесс. Чтобы бесконечный цикл перезапусков не сжег 100% процессора (CPU) сервера, WAS принудительно и навсегда отключает пул (до вмешательства сисадмина).
Пошаговое дерево решений (Разблокировка и Траблшутинг)
Сценарий 1: Нахождение виновника падений (Журнал Application)
Поскольку 5002 — это следствие, вам нужно найти причину крашей.
- Откройте журнал Приложение (Application).
- Найдите цепочку из пяти ошибок >Event ID 1000 (Application Error) или 1309 (ASP.NET Exception), произошедших прямо перед 5002.
- В событии 1000 посмотрите поле Имя сбойного модуля (Faulting Module).
- Если это
php_opcache.dll,rewrite.dllили ISAPI-модуль от 1С — вы нашли баг (Memory Leak или Access Violation). Обновите этот плагин.
Сценарий 2: Конфликт архитектур (32-bit vs 64-bit)
Если 5002 происходит моментально при старте сайта (сразу 5 крашей за секунду), это 100% конфликт разрядности. Сайт использует 32-битный плагин, а пул настроен на 64 бита.
- Решение: IIS Manager -> Application Pools -> Правой кнопкой на пул -> Дополнительные параметры (Advanced Settings). Измените Разрешить 32-разрядные приложения (Enable 32-Bit Applications) на True (или False).
Сценарий 3: Временный обходной путь (Купирование)
Если разработчики будут искать баг неделю, а сайт должен работать (пусть и моргая), ослабьте защиту (Не рекомендуется!)
- В диспетчере IIS откройте Дополнительные параметры пула.
- Найдите раздел Rapid-Fail Protection (Быстрая защита от сбоев).
- Увеличьте параметр Maximum Failures (Максимальное число сбоев) с 5 до 50.
- Уменьшите Failure Interval (Интервал) до 1 минуты.
- Сайт не будет отключаться, но пользователи будут замечать обрывы сессий.
Типовые ошибки администраторов
- Попытка чинить базу данных: Если пул упал по 5002 (Rapid Fail), проблема кроется ВНУТРИ веб-сервера IIS (в памяти w3wp.exe). Проблемы с базой данных SQL (таймауты) не убивают процесс w3wp.exe, они лишь возвращают HTTP 500. Не тратьте время на DBA.
Падение пулов — это потеря коммерческих заказов и простои. Траблшутинг (Crash Dumps) требует DevOps-квалификации. Передайте поддержку IIS профессионалам ITSTM: разберем дампы памяти процессов (DebugDiag), выявим утечки, оптимизируем пулы и настроим отказоустойчивость.
Частые вопросы (FAQ)
Почему пул отключается (5002) при изменении пароля в Active Directory?
Если пул работает от имени доменной учетной записи (Custom Identity), а вы поменяли ей пароль в AD, но забыли обновить в диспетчере IIS, служба WAS не сможет запустить процесс (Access Denied). После 5 неудачных попыток пул заблокируется (5002).
Чем 5002 отличается от 5011?
5011 — это констатация факта: процесс 'w3wp.exe' завис и был убит (1 раз). 5002 — это вердикт: процесс падал слишком часто (5 раз), поэтому пул отключен навсегда.
Генерируется ли 5002 при сбое ASP.NET кода (Null Reference)?
Обычно нет. Ошибки в коде C# (Exceptions) обрабатываются фреймворком и выдают желтый экран в браузере (событие 1309). Чтобы пул отключился (5002), процесс w3wp.exe должен фатально умереть (Stack Overflow или падение C++ ISAPI библиотеки).
Как автоматизировать запуск упавшего пула?
Вы можете использовать IIS Auto-Start или написать PowerShell-скрипт (Start-WebAppPool), который мониторит событие 5002 в Event Viewer и рестартит пул. Но это 'костыль', убивающий производительность сервера.
Влияют ли лимиты памяти (Memory Limits) на 5002?
Да! Если вы установили жесткий лимит RAM (Private Memory Limit) в 1 ГБ, а сайт 'течет', IIS будет принудительно перезапускать пул (Recycling) при достижении лимита. Слишком частые 'переработки' спровоцируют Rapid Fail Protection (5002).