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 linePID (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.