У меня есть сервер 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. Затем мы могли бы перезагрузить сервер когда стало тише, но увы не вышло.
Несмотря на то, что кажется, что вы уже это поняли, проблема в том, что процесс чего-то ждет от ядра. (Обычно это проблема на уровне драйвера, но не всегда.) Единственный способ убить такой процесс - это выгрузить ядро, что, конечно же, невозможно без перезагрузки.
Возможно, стоит попробовать отладку ядра (работает ли этот инструмент на 2008 R2?) в надежде сузить конкретную причину или конфликт, но вы можете решить эту проблему либо с ней, либо с перезагрузкой сервера для ее устранения.
Есть ли причина, по которой вы не думали жить с этим? Если это всего лишь зомби-процесс, и он ни на что не влияет, я бы подумал, что вы могли бы отложить перезагрузку до окна обслуживания или более подходящего времени. Обычно мой подход, когда зомби или зависший процесс ни во что не вмешивается - позаботьтесь об этом во время следующего цикла обновления или запланированного окна обслуживания.