Windows 2008R2에서 중단된 서비스를 종료하는 방법

Windows 2008R2에서 중단된 서비스를 종료하는 방법

NSClient++를 실행하는 Windows 2008R2 서버가 있습니다. 어떤 이유로 서비스가 뒤틀려 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>하려면 실행하세요 . 프로세스가 아직 실행 중이라고 짐작할 수 있습니다.pskillSYSTEM

위의 모든 작업은 관리자 명령 프롬프트에서 실행되었습니다.

실제로는 이상적이지 않은 재부팅(박스는 매우 중요한 업무용 프로덕션 서버임) 외에 무엇을 시도할 수 있습니까?

서버는 리소스(메모리, CPU, 디스크 등)에 대한 압박을 받지 않으며 서버에서 실행되는 모든 것이 잘 작동하고 있습니다.

SysInternals Process Explorer의 스레드 탭을 빠르게 살펴보면 이러한 모든 nsclient++.exe인스턴스가 언로드 중에 멈춰 있음을 알 수 있습니다.

여기에 이미지 설명을 입력하세요

여담으로, 새 인스턴스를 시작하고 포트 5666을 확보할 수 있기를 바라면서 TCPView를 사용하여 이러한 좀비(?) 프로세스에 대한 모든 TCP 연결을 종료하려고 시도했습니다. 그런 다음 서버를 재부팅할 수 있습니다. 상황이 더 조용해졌을 때, 아쉽게도 작동하지 않았습니다.

답변1

이미 이것을 알아낸 것 같지만 문제는 프로세스가 커널에서 무언가를 기다리고 있다는 것입니다. (이것은 일반적으로 드라이버 수준의 문제이지만 항상 그런 것은 아닙니다.) 이러한 프로세스를 종료하는 유일한 방법은 커널을 언로드하는 것입니다. 물론 재부팅하지 않고는 할 수 없습니다.

커널 디버깅을 시도해 볼 가치가 있을 수 있습니다(이 도구는 2008 R2에서 작동합니까??) 특정 원인이나 충돌을 좁히고자 하지만 문제를 처리하기 위한 옵션은 문제를 해결하거나 서버를 재부팅하여 제거하는 것입니다.

그와 함께 사는 것을 고려하지 않은 이유가 있습니까? 단지 좀비 프로세스이고 아무 영향도 주지 않는다면 유지 관리 기간이나 더 적절한 시간이 될 때까지 재부팅을 연기할 수 있다고 생각합니다. 일반적으로 내 접근 방식은 좀비 또는 중단된 프로세스가 아무 것도 방해하지 않는 경우 다음 패치 주기 또는 예정된 유지 관리 기간 동안 처리합니다.

관련 정보