Home Menu Search

Saqwel

IT and other things blog

Служба зависла в состоянии остановка

Встретился на днях с проблемой, которая решалась перезапуском службы, но служба просто так не останаливалась, а зависала в состоянии остановка. К счастью, я нашёл, как можно предотвратить зависание службы при остановке.

Итак, когда я открывал список служб, выбирал необходимую мне службу, и в контекстном меню выбирал её остановку, появлялось окно с прогрессом остановки службы, затем появлялась ошибка, что остановить службу невозможно. В состоянии службы указывалось, что идёт её остановка. Можно остановить службу, прервав процесс, соответсвующий службе, однако, это не решает проблему.

Если наша цель действительно решить проблему, то необходимо сделать следующее:

  1. Открыть монитор ресурсов. Для этого нажать сочетание клавиш Win+R, набрать resmon и после этого нажать клавишу «Enter».
  2. В окне монитора ресурсов необходимо открыть вкладку ЦП. Правой кнопкой мыши нажать на процесс, запущенный зависшей службой (в моём случае процесс vmms) и выбрать пункт Анализ цепочки ожидания…
  3. В открывшемся окне можно будет видеть, что процесс ожидает другой процесс. В моём случае процесс vmms ожидал процесс svchost.exe (netsvc). Рисковать и останавливать процесс svchost.exe на важном сервере у меня не было ни малейшего желания, поэтому я полез смотреть что же творится в цепочке ожидания svchost.exe (netsvc). Оказалось, что svchost.exe (netsvc) ожидал завершения ещё одного процесса WmiPrvSE.exe.
  4. Следующим шагом необходимо найти процесс WmiPrvSE.exe с нужным PID и завершить его.
  5. Затем ещё раз открыть Анализ цепочки ожидания для процесса svchost.exe (netsvc) и убедиться, что он работает нормально. Если это не так, то необходимо остановить и другие зависшие процессы.

После этого проблемы должны прекратиться.

Можно вместо столь причудливых процедур просто перезагрузить компьютер, но это не всегда подходящий вариант при работе с ответственными серверами.

Leave a Reply