Computer >> 컴퓨터 >  >> 시스템 >> Windows 7

Svchost.exe(wuauserv) 높은 CPU 사용량 및 메모리 누수 문제 해결 방법

wuauserv(Windows Update 서비스)는 Windows Update 또는 로컬 WSUS 서버에서 새로운 보안 패치와 업데이트를 검색하고 다운로드하여 설치하기 위해 컴퓨터를 스캔하는 표준 Windows 업데이트 서비스입니다. 그러나 경우에 따라 이 서비스가 정상적으로 작동하지 않으면 CPU와 RAM 사용량이 비정상적으로 급증할 수 있습니다. wuauserv는 svchost.exe라는 컨테이너 프로세스 내부에서 실행되기 때문에, 사용자 입장에서는 svchost.exe 프로세스가 과도한 메모리와 CPU 자원을 점유하는 것처럼 보입니다. 이번 글에서는 Windows 7과 Windows 10에서 wuauserv 프로세스로 인한 높은 메모리 및 CPU 사용량 문제를 해결하는 방법을 소개합니다.

목차

  • Windows 7에서 wuauserv 서비스가 CPU와 메모리의 최대 50%를 차지하는 경우
  • Windows 10에서 wuauserv의 높은 CPU 및 메모리 사용량

Windows 7에서 wuauserv 서비스가 CPU와 메모리의 최대 50%를 차지하는 경우

일부 사용자들은 Windows 7이 설치된 PC에서 성능 저하 문제를 호소하기 시작했습니다. 증상은 다음과 같습니다. 매일 일정한 시간(사용자마다 시점은 다름)이 되면 컴퓨터가 갑자기 느려지고, 작업 관리자를 확인하면 svchost.exe 프로세스가 최대 1.2~2GB의 메모리와 한 코어 기준 최대 100%의 CPU를 사용하고 있는 것입니다. 그 결과 30~60분 동안 컴퓨터를 제대로 사용할 수 없을 정도로 심하게 느려지고 끊임없이 멈춥니다.

이 문제는 로컬 SCCM 서버(클라이언트의 Microsoft 업데이트를 관리하는 데 사용됨)에서 업데이트를 받는 Windows 7 SP1 x86 및 x64 클라이언트에서 나타났습니다. 클라이언트에서 작업 관리자를 실행하고 프로세스 탭에서 실행 중인 프로세스를 메모리 또는 CPU 사용량 순으로 정렬해 보면, 해당 svchost.exe 프로세스가 CPU 11%, 메모리 1.2GB를 사용 중인 것을 확인할 수 있습니다.

실제로 svchost.exe는 다른 프로그램과 시스템 서비스 스레드가 함께 실행되는 컨테이너 프로세스입니다. 따라서 작업 관리자만으로는 어떤 스레드(서비스)가 높은 시스템 부하를 유발하는지 알 수 없습니다.

프로세스와 스레드에 대한 더 자세한 정보는 Process Explorer 유틸리티를 통해 얻을 수 있습니다. procexp.exe를 실행하여 과도한 메모리나 CPU를 사용하는 문제의 svchost.exe 프로세스를 찾습니다.

해당 프로세스의 속성을 열고 Threads(스레드) 탭으로 이동하면, svchost.exe 프로세스 내부에서 CPU와 메모리를 가장 많이 소비하는 것이 바로 wuauserv(Windows Update) 스레드임을 명확히 확인할 수 있습니다(wuauserv 서비스는 시스템과 업데이트 서버를 스캔하여 업데이트를 찾습니다). 코드상의 문제로 인해 wuauserv는 메모리 누수를 일으키기 시작하고, 프로세스가 사용할 수 있는 최대 크기인 1.5~2GB까지 사용 가능한 메모리를 모두 소진한 뒤 페이지 파일을 적극적으로 사용하게 됩니다. 결국 시스템 전체가 느려집니다.

흥미로운 점은 이 문제가 RAM 2GB를 장착한 클라이언트에서 더 자주 발생한다는 것입니다. 4GB 이상의 메모리를 가진 PC에서는 wuauserv의 메모리 누수가 2GB를 넘지 않기 때문에 사용자가 문제를 체감하기 어렵습니다.

services.msc 콘솔에서 wuauserv를 중지하면 Windows의 높은 메모리 및 CPU 부하가 크게 줄어들고, svchost.exe는 180~200MB 수준의 메모리만 사용하게 됩니다.

주의: 이렇게 wuauserv를 중지하고 비활성화 상태로 두면 안 됩니다. 시스템이 보안 업데이트를 받지 못하게 되어 해킹 공격에 노출될 위험이 있기 때문입니다.

우선 'Windows Update 에이전트 구성 초기화' 문서의 지침에 따라 Windows Update 에이전트 설정을 재설정해 보았습니다. 문제는 해결되고 며칠간 재발하지 않았지만, 이후 다시 나타났습니다. 로컬 캐시와 업데이트 데이터베이스의 크기가 특정 한계에 도달하면 wuauserv가 다시 메모리를 과도하게 사용(누수)하는 것으로 보입니다.

여러 가지 다른 방법을 시도했지만, 실제로 효과가 있었던 것은 다음과 같은 Windows Update 에이전트용 패치를 설치한 것뿐이었습니다.

  • https://support.microsoft.com/en-us/kb/3050265 (2015년 6월 Windows Update 에이전트 업데이트)
  • https://support.microsoft.com/en-us/kb/3065987 (2015년 7월 Windows Update 에이전트 업데이트)
  • https://support.microsoft.com/en-us/kb/3102810 (2015년 11월 배포, WSUS를 통한 업데이트 설치 시 높은 CPU·메모리 부하 문제를 해결하는 Windows 7/2008 R2용 패치)

팁: 모든 Windows 7 컴퓨터에 패치를 설치한 것은 아니며, 유사한 문제를 겪었다고 사용자가 신고한 PC에만 설치했습니다.

업데이트 설치 후 wuauserv 프로세스의 메모리 사용량은 200MB 수준으로 감소했고, 업데이트 검색에 걸리는 시간도 크게 단축되었습니다.

Windows 10에서 wuauserv의 높은 CPU 및 메모리 사용량

Windows Update 서비스가 프로세서에 높은 부하를 주고 과도한 메모리를 사용하는 문제는 여러 Windows 10 빌드에서도 발생합니다.
작업 관리자를 열고 메모리나 CPU를 과도하게 소비하는 svchost.exe 프로세스를 찾습니다. 마우스 오른쪽 버튼으로 클릭한 후 '서비스로 이동(Go to Services)'을 선택합니다.

wuauserv(Windows Update) 서비스가 이 svchost.exe 프로세스의 일부로 실행 중인지 확인합니다.

작업 관리자로는 svchost 프로세스 내부에서 실행 중인 여러 시스템 서비스 중 어느 것이 높은 부하를 유발하는지 확인할 수 없으므로, 앞서 설명한 대로 Process Explorer를 사용해야 합니다. 높은 CPU 또는 메모리 부하가 wuauserv 서비스(예시에서는 C:\WINDOWS\system32\wuaueng.dll 라이브러리)에 의해 발생했는지 확인하세요.

앞서 살펴본 Windows 7의 업데이트 서비스 메모리 누수 사례와 달리, Windows 10에는 이 문제를 해결하는 만능 패치는 없습니다. 아래에서 Windows Update 서비스의 메모리 및 CPU 사용량을 줄이기 위해 수행해야 할 기본적인 조치들을 정리했습니다.

Windows 업데이트 설치가 완료될 때까지 기다리기

Windows Update 서비스가 현재 컴퓨터를 스캔 중이거나 업데이트를 설치하는 중이라면, 높은 시스템 부하는 당연한 현상입니다. 컴퓨터 성능에 따라 1~2시간 정도 기다렸다가 wuauserv가 업데이트 다운로드 및 설치를 마칠 때까지 기다려 보세요.

Windows Update 문제 해결사 실행

내장된 Windows Update 문제 해결사(Troubleshooter)로 Windows Update 서비스를 진단해 보세요. 설정업데이트 및 보안문제 해결로 이동한 후, Windows Update(Windows 업데이트를 방해하는 문제 해결) 항목을 선택하고 '문제 해결사 실행'을 클릭합니다.

유틸리티가 서비스 상태를 점검하고 발견된 문제를 자동으로 수정하려고 시도합니다.

SoftwareDistribution 및 catroot2 폴더 정리

SoftwareDistribution과 catroot2 폴더를 초기화해 보세요.

  • C:\Windows\SoftwareDistribution 폴더에는 Windows Update 서비스의 임시 파일과 다운로드된 업데이트 파일이 저장됩니다.
  • %windir%\System32\catroot2 폴더에는 업데이트 패키지의 서명 정보가 들어 있습니다.

아래 스크립트로 이 폴더들을 정리할 수 있습니다(코드를 *.bat 확장자의 텍스트 파일로 저장한 뒤 관리자 권한으로 실행하세요):

attrib -h -r -s %windir%\system32\catroot2
attrib -h -r -s %windir%\system32\catroot2\*.*
net stop wuauserv
net stop CryptSvc
net stop BITS
ren %windir%\system32\catroot2 catroot2.old
ren %windir%\SoftwareDistribution SoftwareDistribution.old
ren "%ALLUSERSPROFILE%\application data\Microsoft\Network\downloader" downloader.old
net Start BITS
net start CryptSvc
net start wuauserv

Windows 시스템 파일 및 구성 요소 저장소 검사·복구

다음 명령어로 Windows 이미지의 시스템 파일을 검사하고 복구합니다:

sfc /scannow
그리고
DISM /Online /Cleanup-Image /RestoreHealth

바이러스 검사

구조 디스크(Kaspersky Rescue Disk 또는 Avira Rescue System 등)를 사용해 오프라인 모드에서 Windows 바이러스를 검사하세요.

Windows 10 업데이트

  1. 현재 빌드를 설치하여 Windows 10 버전을 최신 상태로 업그레이드합니다.
  2. Microsoft Update Catalog(https://www.catalog.update.microsoft.com/Home.aspx)에서 사용 중인 Windows 버전에 맞는 최신 누적 업데이트를 수동으로 다운로드하여 설치합니다(Microsoft는 매월 버그와 다양한 Windows 오류를 수정하고 그 내용을 누적 업데이트 패키지에 포함합니다).

Windows Update 배달 최적화 끄기

설정 → 업데이트 및 보안 → Windows Update → 고급 옵션 → 배달 최적화로 이동합니다. '다른 PC에서 다운로드 허용' 옵션을 비활성화한 후 장치를 재부팅합니다.

최신 Windows 업데이트 제거

wuauserv 서비스의 높은 CPU·메모리 사용량 문제가 새로운 Windows 업데이트 설치 직후에 시작되었다면, 해당 업데이트를 하나씩 제거해 보세요(제어판 → 프로그램 및 기능 → 설치된 업데이트 보기). 업데이트를 설치 날짜순으로 정렬한 뒤, 업데이트를 마우스 오른쪽 버튼으로 클릭하고 제거를 선택합니다.

Windows Update 서비스 비활성화

Windows Update 서비스를 비활성화하는 것은 권장하지 않습니다. 보안 업데이트 수신이 중단되어 해킹이나 악성코드 감염 위험에 노출되기 때문입니다. 서비스 비활성화는 다른 방법으로 시스템의 정상 작동을 복구할 수 없을 때 사용하는 임시 조치로만 활용해야 합니다.

서비스 관리 콘솔(services.msc)을 열고 Windows Update 서비스를 찾아 중지한 후, 시작 유형을 '사용 안 함'으로 변경합니다. 변경 사항을 저장하고 컴퓨터를 재시작합니다.

다음 달 둘째 주 화요일에는 반드시 사용 중인 Windows 10 빌드에 맞는 새로운 누적 업데이트를 수동으로 다운로드하여 설치하고, wuauserv 서비스를 다시 활성화하세요. 새 업데이트에서 문제가 해결되었을 가능성이 있습니다.