Event ID 1058 IIS WAS: критический сбой канала связи с процессом
Симптомы ошибки взаимодействия 1058
В системном журнале System фиксируется ошибка: Event ID 1058: A worker process serving application pool '[Имя_пула]' suffered a fatal communication error with the Windows Process Activation Service. The process id was [PID].
| Симптом | Проявление |
|---|---|
| Зависание пула приложений IIS | Веб-сервер перестает отвечать на запросы, соединения уходят в таймаут |
| Отказ передачи состояния процесса | Служба WAS принудительно убивает процесс по таймауту отсутствия ответа |
| Ошибки 500.19 / 503 в браузере | Пользователи получают сообщения о недоступности веб-сервера |
Пошаговое решение ошибки связи WAS (Event ID 1058)
- Проверьте текущие выполняющиеся запросы в зависшем пуле:
# Просмотр всех активных запросов, выполняющихся дольше 10 секунд:
& "$env:SystemRoot\System32\inetsrv\appcmd.exe" list requests /elapsed:10000- Увеличьте лимиты времени отклика процесса при завершении и пинге:
# Увеличение таймаута на запуск и остановку процесса пула до 180 секунд:
Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "processModel.startupTimeLimit" -Value (New-TimeSpan -Seconds 180)
Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "processModel.shutdownTimeLimit" -Value (New-TimeSpan -Seconds 180)- Создайте дамп процесса перед его принудительным уничтожением службой WAS:
# Настройка создания дампа при зависании (Orphan Worker Process):
Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "failure.orphanWorkerProcess" -Value $True
Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "failure.orphanActionExe" -Value "C:\Sysinternals\procdump.exe"
Set-ItemProperty "IIS:\AppPools\ИмяПула" -Name "failure.orphanActionParams" -Value "-ma %1% C:\Dumps"Совет: Опция Orphan Worker Process оставляет зависший процесс изолированным для снятия дампа памяти и сразу запускает новый чистый процесс w3wp для обслуживания входящих клиентов.
Частые вопросы (FAQ)
Что означает опция Orphan Worker Process?
Вместо мгновенного завершения зависшего процесса WAS отключает его от приема запросов, оставляет в памяти для снятия дампа отладчиком и запускает новый рабочий процесс взамен.
Почему appcmd list requests возвращает пустой список?
Если запросы выполняются быстро (менее 10 мс) или если процесс w3wp завис на уровне самого сетевого сокета ядра, список может быть пуст.
В чем разница между ошибками 1007 и 1058?
Ошибки идентичны по смыслу, но Event 1058 часто генерируется при критическом отказе внутренней инфраструктуры IPC каналов Windows Process Activation Service.
Как принудительно перезапустить зависший пул через PowerShell?
Выполните: Restart-WebAppPool -Name "ИмяПула".