svchost.exe에 의해 비정상적인 CPU 사용을 진단하는 방법? [복제]


19

듀얼 코어 Pentium (2010 랩톱)으로 구동되는 Win 7 32 비트 시스템이 장착 된 랩톱이 있습니다. 때로는 제대로 작동하지만 일반적으로 100 % CPU로드에서 유휴 상태입니다. CPU는 두 개의 svchost.exe 프로세스 (각각 50 %)에 사용됩니다. 내가 아는 한, 이것은 서비스 호스트입니다. 어떤 서비스가 범인인지 알아낼 방법이 있습니까?

주의 : 이것은 안전 모드에서도 발생합니다.


1
프로세스 탐색기를 사용하여 svchost의 두 인스턴스 ( technet.microsoft.com/en-us/sysinternals/processexplorer.aspx ) 에서 실행되는 서비스를 볼 수 있습니다.
— Yorik

@ Yorik : 나는 그것을 생각했지만 ProcessExplorer는 아무것도 사용하지 않았다.
— Violet Giraffe

5
Windows 7에서는 현재 svchost CPU 문제의 90 % 이상이 Windows Update 서비스와 관련이 있다고 말합니다. 시스템을 최신 상태로 만드는 데 실제로 문제가있는 경우 (이전 프로세서로 새로 설치하는 것이 어려울 수 있음) 네트워크 연결없이 KB3050265, KB3138612 및 KB3145739를 설치하십시오. 그런 다음 재부팅하고 업데이트를 검색하십시오.
— ontrack

@ontrack : 흥미 롭습니다. 실제로이 컴퓨터에서 업데이트 확인이 비활성화되어 2010 년 또는 2012 년 이후로 업데이트되지 않았을 것으로 생각합니다. 업데이트를 설치하고 싶지 않으며 CPU 문제 만 수정하면됩니다. 올바른 경우 Windows Update 서비스 도움말을 비활성화하면됩니다.
— Violet Giraffe

이것은 여러 번 요청되었습니다. dup을 참조하십시오. WU scnaning 문제가있을 수 있습니다. 내 대답의 단계에서 해결 : superuser.com/a/996072/174557
— magicandre1981

답변:


28

svchost.exe의 인스턴스가 여러 시스템 서비스를 호스트 할 때 각각의 서비스를 자신의 svchost.exe 인스턴스로 분리하여 CPU를 사용하는 서비스를 찾는 방법은 다음과 같습니다.

절차는 다음과 같습니다.

  1. 작업 관리자를 사용하여 CPU 내림차순으로 정렬 된 모든 프로세스를 표시하고 CPU를 소비하는 프로세스의 PID를 표시하십시오.

  2. 명령 프롬프트 (cmd)에서 다음 명령을 입력하십시오.
    Tasklist /svc /fi "IMAGENAME eq svchost.exe"
    여기에 이미지 설명을 입력하십시오

  3. 문제가 발생한 svchost.exe 인스턴스를 PID로 찾을 수 있으며 오른쪽에 호스팅하는 시스템 서비스 목록이 표시됩니다

  4. 목록의 각 이름에 대해 관리자 권한으로 실행되는 명령 프롬프트 (cmd)에 다음 명령을 입력하십시오 (
    sc config <name> type= own
    '='와 'own'사이의 공백에 유의하십시오)

  5. 재부팅

분리 한 시스템 서비스는 이제 각각 고유 한 svchost.exe 인스턴스에서 실행되며 프로세스 탭의 작업 관리자에서 볼 수 있습니다. 인스턴스를 마우스 오른쪽 단추로 클릭하고 "서비스로 이동"을 선택하여 서비스로 직접 이동하거나 tasklist 명령을 다시 사용할 수 있습니다.

자세한 내용은 Microsoft 문서
SVCHOST.EXE 시작하기를 참조하십시오 .


7

프로세스 탐색기를 사용하면이를 쉽게 수행 할 수 있습니다. 64 비트 Windows 7 Professional 및 64 비트 Windows 10 Pro에서 Process Explorer v16.20과 함께 작동 함을 확인했습니다.

  1. 프로세스 탐색기를 높입니다.
  2. 열 svchost.exe에서 값이 높거나 측정 가능하거나 비어 있지 않은 프로세스를 찾습니다 CPU. Process또는 CPU열을 기준으로 정렬하면 도움이 될 수 있습니다.
  3. svchost.exe프로세스를 마우스 오른쪽 단추로 클릭하고을 선택하십시오 Properties....
  4. 프로세스 특성 창에서 Threads탭을 선택 하십시오. 이 프로세스의 모든 스레드가 표시됩니다.
  5. CPU열 에서 값이 높은 (또는 다시 측정 가능 / 공백이 아닌) 스레드를 찾습니다 . CPU열을 기준으로 정렬하면 도움이 될 수 있습니다.프로세스 탐색기 프로세스 스레드 탭
  6. Service열은 해당 스레드가 실행되는 서비스의 이름이 표시됩니다.

서비스 이름이 익숙하지 않은 경우 ...

  1. 프로세스 특성 창에서 Services탭을 선택 하십시오. 이 프로세스에서 실행되는 모든 서비스가 표시됩니다.
  2. 경기 Service상의 컬럼 Services의 값에 탭을 Service온 열 Threads6 단계에있는 탭을 선택합니다.프로세스 탐색기 프로세스 서비스 탭
  3. 이 Display Name열에는 친숙한 서비스 이름이 표시됩니다. 선택한 서비스에 대한 설명이 서비스 목록 아래에 나타납니다.

아, Process Explorer의 고급 기능에 대해서는 몰랐습니다. 감사.
— 바이올렛 기린

3

작업 관리자 를 사용할 수 있습니다 . 다른 방법 (명령 줄 또는 WinAPI를 사용하여 일부 프로그램 작성 )이 있지만 여기서는 논의하지 않습니다. 더 진행하기 전에 사용자에게 관리 권한이 있어야합니다.

온 프로세스 탭 :

  • 모든 사용자의 프로세스 표시를 선택 하십시오 .
  • 프로세스 "테이블 헤더"( 이미지 이름 , PID , 사용자 이름 , CPU 등의 열 이름이 포함 된)를 마우스 오른쪽 단추로 클릭하고 열 선택 ...을 선택 하십시오 .
    • 팝업되는 대화 상자에서 아래로 스크롤하여 Command line 및 PID (Process Identifier) 를 확인한 다음 확인을 누릅니다 .
  • 프로세스 탭으로 돌아가서 CPU 열 헤더를 클릭 하여 프로세스가 CPU 소비 순서대로 정렬되도록하십시오 (프로세스는 오름차순 / 내림차순으로 표시 될 수 있습니다 ( CPU를 클릭 할 때 마다 클릭 하면 순서가 바))). 테이블 상단에 나타납니다. 이제 명령 줄을 볼 수 있습니다 (모르지만 그중 하나가 netsvcs(네트워크 서비스) 라는 느낌이 들며 PID도 있습니다.

  • 다음으로 두 프로세스를 서비스와 일치시켜야합니다. 이를 위해 다음 중 하나를 수행 할 수 있습니다.

    • 마우스 오른쪽 그들에 클릭 한 다음 서비스로 이동 (들) ... . 그러면 해당 프로세스에서 실행중인 모든 서비스가 선택된 서비스 탭으로 이동합니다 (이 옵션의 경우 이전 단계는 필요하지 않습니다.)).
    • mmc 에서 서비스 스냅인을 엽니 다 . 서비스를 두 번 클리 킹 할 때 (실행중인 서비스를 확인하는 것이 타당 할 수 있음) 실행 파일 경로 에서 일치해야하는 명령 줄을 볼 수 있습니다.
  • 에 W10 당신이에서 필요로하는 정확한 정보를 볼 수 있습니다 리소스 모니터를 (당신이에서 시작할 수있는 작업 관리자 , 성능 탭). CPU 탭으로 이동 하면 서비스와 해당 CPU 소비가 나열됩니다.

EDIT0 : 처음에 게시 한 왼손 스타일을 사용하여 오른쪽 머리 를 긁지 않고보다 간단하고 이해하기 쉬운 방법을 제공하도록 답변이 업데이트 되었습니다.


나는 당신이 명령 줄을 깔끔하게 볼 수 있다는 것을 결코 알지 못했습니다! harrymc의 답변만큼 간단하지는 않지만 알아두면 좋습니다.
— Violet Giraffe

작업 관리자는 스스로 할 수 있습니다. 서비스 탭으로 전환 할 때 svchost 프로세스를 선택하면 해당 프로세스에서 실행중인 서비스가 여기에서 선택됩니다.
— Simon Richter

1
정말? 10 주차에는 이런 현상이 발생하지 않습니다 (적어도 일부 서비스가 이미 선택된 경우). 유일한 방법은 것입니다 rclick 과정에 보내고 ', 다음 선택 (들) 서비스로 이동을 (- 가장 가능성이 존재 내가 놓친 옵션 W7 아니라). 불행히도 확인할 수 없습니다.
— CristiFati

1
@CristiFati이 옵션은 Windows Vista 이후 존재했습니다 (source : technet.microsoft.com/en-us/library/ff642468.aspx ). 수동으로 PID 일치 대신 응답에 추가해야합니다.
— Vasily Alexeev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.