Как завершить зависшую службу в Windows 2008R2

Как завершить зависшую службу в Windows 2008R2

У меня есть сервер Windows 2008R2, на котором запущен NSClient++. По какой-то причине служба запуталась и перестала отвечать на опрос Nagios.

Когда я попытался перезапустить службу, диспетчер служб долго пытался ее завершить, а затем в конце концов сдался, выдав сообщение типа «служба слишком долго отвечала». Но... он также запускает новый экземпляр службы.

Если я загляну в диспетчер задач, то tasklistтеперь я увижу два nsclient++.exeзапущенных экземпляра.

Я попытался убить оба этих вируса с помощью:

  • Щелкните правой кнопкой мыши и выберите «Завершить процесс» в диспетчере задач — процесс завершается и не сообщается об ошибках (например, об отказе в доступе), но процесс все еще существует.

  • taskkill /PID <proc id> /F- отчеты SUCCESS: The process with PID 6672 has been terminated., но процесс все еще выполняется.

  • скачал SysInternals PsTools и запустил pskill <PID>- отчеты Process <PID> killed- но процесс все еще там.

  • выполнить at hh:mm pskill <PID>, чтобы pskillсделать это от имени SYSTEMучетной записи... и, как вы уже догадались, процесс все еще выполняется.

Все вышеперечисленное было выполнено в командной строке администратора.

Что еще я могу попробовать, кроме перезагрузки, которая на самом деле не идеальна (сервер представляет собой критически важный производственный сервер)?

Сервер не испытывает никакой нагрузки на ресурсы (память, процессор, диск и т. д.), и все запущенные на нем процессы работают нормально.

Беглый взгляд на вкладку потоков в SysInternals Process Explorer показывает, что все эти nsclient++.exeэкземпляры зависли при выгрузке:

введите описание изображения здесь

Кстати, я также попытался завершить все TCP-соединения для этих зомби-процессов (?) (с помощью TCPView) в надежде, что смогу запустить новый экземпляр, который сможет захватить порт 5666. Затем мы могли бы перезагрузить сервер, когда все станет спокойнее, но, увы, это не сработало.

решение1

Хотя, кажется, вы уже поняли это, проблема в том, что процесс ждет чего-то от ядра. (Обычно это проблема на уровне драйвера, но не всегда.) Единственный способ завершить такой процесс — выгрузить ядро, что, конечно, невозможно сделать без перезагрузки.

Возможно, стоит попробовать отладку ядра (работает ли этот инструмент на 2008 R2??) в надежде сузить круг конкретных причин или конфликтов, но ваши варианты решения проблемы — либо жить с ней, либо перезагрузить сервер, чтобы устранить ее.

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

Связанный контент