Event ID 1007 IIS WAS: фатальная ошибка связи с процессом w3wp
Симптомы ошибки коммуникации IIS (Event ID 1007)
В журнале System фиксируется ошибка от службы WAS: Event ID 1007: A worker process serving application pool '[Имя_пула]' suffered a fatal communication error with the Windows Process Activation Service.
| Симптом | Причина |
|---|---|
| Обрыв связи между WAS и w3wp.exe | Процесс w3wp заблокировал обработку именованных каналов (Named Pipes) из-за зависания потоков |
| Отказ проверки жизнеспособности (Ping) | Служба WAS не получила подтверждения активности от пула приложений |
| Принудительное уничтожение пула | WAS принудительно снимает зависший процесс через TerminateProcess |
Пошаговое устранение сбоя связи WAS (Event ID 1007)
- Увеличьте интервалы проверки жизнеспособности (Ping Interval и Ping Response Time): если ваше приложение выполняет тяжелые синхронные вычисления, дайте процессу больше времени на ответ:
# Увеличение таймаута ответа на пинг до 90 секунд (по умолчанию 30 сек):
Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "processModel.pingResponseTime" -Value (New-TimeSpan -Seconds 90)
Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "processModel.pingInterval" -Value (New-TimeSpan -Seconds 60)- Временно отключите мониторинг пинга для отладки:
# Отключение проверок Ping Enabled (только для тестирования!):
Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "processModel.pingingEnabled" -Value $False- Проверьте пул потоков CLR на предмет взаимных блокировок (Threadpool Starvation): переведите синхронные вызовы ввода-вывода сайта на асинхронные конструкции
async/await.
Важно: Не отключайте pingingEnabled на постоянной основе на продуктивных серверах, иначе зависший сайт будет бесконечно потреблять ресурсы сервера без автоматического перезапуска.
Частые вопросы (FAQ)
Как служба WAS проверяет, что рабочий процесс w3wp жив?
Служба WAS отправляет контрольные сообщения через внутренний именованный канал (Named Pipe) каждые 30 секунд. Если w3wp не отвечает вовремя, WAS считает его зависшим.
Что такое Threadpool Starvation в ASP.NET?
Это состояние, когда все доступные потоки пула заняты ожиданием медленных внешних запросов (SQL, внешние API), и нет свободных потоков даже для ответа на системный пинг WAS.
Где настроить параметры Ping в графическом интерфейсе IIS?
В IIS Manager -> Пулы приложений -> Дополнительные параметры -> раздел 'Модель процесса' (Process Model).
Помогает ли перезагрузка IIS (iisreset) при ошибке 1007?
Это временная мера, которая снимает симптом, но без оптимизации кода или увеличения таймаутов ошибка повторится при следующем всплеске нагрузки.