갑자기 컴퓨터가 느려지고 svchost가 CPU를 100% 점유할 때
http://support.microsoft.com/kb/932494/ko
해당 hotfix를 설치하시면 됩니다. (sankim님 감사합니다...^^)
최근에 제가 svchost.exe가 cpu를 점유하는 현상을 발견했습니다.
해당 svchost는 wuauctl.exe(윈도우즈 업데이트 서비스)를 호스팅하는 실행 파일이였습니다.
(process explorer 를 통해 확인)
해당 문제점을 Fix 하기 위해서 C:\WINDOWS\SoftwareDistribution\DataStore\DataStore.edb 를 eseutil 을 이용하는 방법이 있지만 간단하게 해당 파일과 로그를 삭제하는 방법도 있긴 합니다.
다음 글은 제가 해당 문제점을 발견하고 Fix 한 내역입니다...^________^
[원인]
Windows Update Service 가 사용하는 EDB 데이터 베이스 깨짐 현상으로 인한 해당 EDB에 대한 잘못된 I/O발생
문제 Data 파일 : Datastore.edb ( Installer , Window Update , WSUS , SMS ITMU , MBSA , WMI , WSH Host Script 기반 Update 검색 프로그램 류에서 모두 사용중 )
즉 Software Distribution 의 EDB를 사용하는 모든 프로그램들이 동일 장애를 발생시켰을 것으로 추정 됨
더불어 말씀 드리자면 해당 edb가 깨진 원인을 알 수 없으나, 과거 Msxml 관련 업데이트 장애로 인해 자꾸 업데이트를 진행했던 부분이 의심 스럽습니다.
해당 유저들이 특정 16진수 문자열 값으로 된 폴더들이 지속적으로 생성 되고 있는지 확인 부탁드리겠습니다.
[해결 방법]
- Windows Update 관련 DLL 재 등록
1. 시작-> 실행
2. "REGSVR32 WUAPI.DLL" 실행
3. "DllRegisterServer in WUAPI.DLL 성공" 메시지 출력
4. 시작-> 실행을 누르고 다음 항목을 실행
REGSVR32 WUAUENG.DLL
REGSVR32 WUAUENG1.DLL
REGSVR32 ATL.DLL
REGSVR32 WUCLTUI.DLL
REGSVR32 WUPS.DLL
REGSVR32 WUPS2.DLL
REGSVR32 WUWEB.DLL
- 재 부팅을 실행
1. 시작->실행을 누르시고 " cmd"를 입력합니다. cmd 창이 열리면 다음을 입력
net stop WuAuServ
2. C:\windows\SoftwareDistribution 폴더 이름 변경
Ex) SoftwareDistribution에서 SoftwareDistribution_ 으로 변경
- 재 부팅 한 후 경과를 관찰
[분석 내역]
1. 입출력되는 DLL의 EXPORT 내용의 분석
2. Register 되는 항목 분석
3. Microsoft EDB Database ( 업데이트및 패치의 적용사항이 저장되는 윈도우상의 내장 DB)의 변동 내용 분석
4. Window Update Loging 기능 활성 화로 업데이트 과정 로그 생성및 분석
---> 관련 키값
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Trace
(gives extensive tracing in WindowsUpdate.log)
Flags REG_DWORD 7
Level REG_DWORD 4
[분석 결과]
1. 문제 분석 과정에서 SoftwareDistribution/DataStore DataStore database 에 데이터 입출력 과정에서 특정 조건에서 SvcHost가 비정상으로 동작 하는 부분을 발견
2. SvcHost가 90-100%의 사용율을 보일때 Svchost에 연관된 Dll에서 IN/EXPort 되는 내용 없었고 RegMonitor 프로그램상에서 레지스트리상에 등록되는 항목이 없음을 확인
3. 1번과 2번을 미루어 본 결과 해당 Software Update가 사용하는 EDB의 손상이 주원인이 될 것으로 추정