Event ID 70002 SCM: сбой остановки службы Windows — решение
Симптомы сбоя остановки службы (Event ID 70002)
В журнале System фиксируется ошибка: Event ID 70002: The Service Control Manager encountered an error while stopping the [Имя_Службы] service. The service did not respond to the stop control request от источника Service Control Manager.
| Симптом | Проявление |
|---|---|
| Служба зависла в статусе «Stopping» (Stop_Pending) | Кнопки «Пуск/Стоп» в оснастке services.msc заблокированы серым цветом |
| Невозможность перезагрузить приложение | Процесс службы продолжает блокировать сетевые порты и дескрипторы файлов |
| Задержка выключения сервера | Сервер зависает на экране «Завершение работы служб...» на 10–15 минут |
Пошаговое завершение зависшей службы (Event ID 70002)
- Найдите точный идентификатор процесса (PID) зависшей службы:
# Поиск PID зависшей службы через утилиту sc:
$serviceName = "ИмяСлужбы"
sc.exe queryex $serviceName
# Либо через PowerShell:
$pidToKill = (Get-CimInstance Win32_Service -Filter "Name = '$serviceName'").ProcessId
Write-Host "PID зависшей службы: $pidToKill"- Принудительно завершите зависший процесс по PID:
# Принудительное уничтожение процесса (Kill):
if ($pidToKill -gt 0) {
Stop-Process -Id $pidToKill -Force
Write-Host "Процесс $pidToKill успешно завершен"
} else {
taskkill /F /FI "SERVICES eq $serviceName"
}- Сократите системный таймаут ожидания завершения служб при выключении ПК:
# Уменьшение времени ожидания завершения зависших служб до 5 секунд (5000 мс):
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control" -Name "WaitToKillServiceTimeout" -Value "5000" -ForceВнимание: Не завершайте принудительно службы баз данных (MS SQL, Oracle, PostgreSQL) во время активных транзакций записи, если это не вызвано полной блокировкой ввода-вывода — это может привести к длительному восстановлению БД из логов (Crash Recovery).
Частые вопросы (FAQ)
Почему служба переходит в статус 'Stopping' и не останавливается?
Служба получила сигнал остановки от ОС, но зависла в бесконечном цикле ожидания освобождения внешнего ресурса (файла, сокета, дескриптора или фонового потока).
Как перезапустить зависшую службу без перезагрузки всего сервера?
Найдите ее PID командой sc queryex <имя_службы>, принудительно убейте процесс командой taskkill /F /PID <PID>, после чего запустите службу заново через Start-Service.
Что делает параметр WaitToKillServiceTimeout?
Этот параметр определяет, сколько миллисекунд Windows будет ждать штатной остановки зависших служб при выключении сервера перед тем, как принудительно убить их процесс.
Какое значение WaitToKillServiceTimeout установлено по умолчанию?
По умолчанию в Windows Server установлено значение 5000 мс (5 секунд), в старых версиях — до 20000 мс (20 секунд).