많은 Windows 사용자가 컴퓨터 속도가 느려져 답답함을 호소합니다. 이는 대부분 설치된 여러 응용 프로그램을 실행하는 과정에서 CPU가 과도한 메모리를 소모하기 때문입니다. 그중에서도 SearchIndexer.exe라는 프로그램이 막대한 양의 RAM과 CPU를 잠식하는 사례가 자주 보고되고 있습니다.
임시 조치로는 작업 관리자에서 해당 서비스를 비활성화하거나, 프로세스 선호도(Affinity)를 설정해 프로그램이 사용할 수 있는 시스템 코어 수를 제한하는 방법이 있습니다. 이러한 방법은 근본적인 해결책은 아니지만, 당장의 문제를 일시적으로 완화하는 데는 충분히 효과적일 수 있습니다.
searchindexer.exe는 문서 색인(indexing)을 담당하는 Windows 내장 서비스입니다. 이 서비스는 파일 탐색기부터 시작 메뉴 검색 상자, 라이브러리 기능에 이르기까지 Windows의 모든 검색 기능을 구동하는 Windows Search의 핵심 엔진 역할을 합니다.
본 가이드를 따라 하기 전에 한 가지 참고할 점이 있습니다. 문제가 막 시작된 경우라면 몇 시간 정도 기다려 보세요. 서비스가 대량의 파일 색인 작업을 처리 중일 수 있으며, 이 경우 자연스럽게 해결됩니다. 만약 6~7시간이 지나도 개선되지 않는다면 아래 단계를 진행하세요.
이 가이드에서는 searchindexer.exe로 인한 높은 CPU 사용량을 해결하는 것으로 입증된 방법들을 살펴보겠습니다.
방법 1: Windows Search 서비스 재시작
Windows 키 + R을 눌러 실행 창을 연 후, services.msc를 입력하고 확인을 클릭합니다.

서비스 목록에서 Windows Search를 찾아 마우스 오른쪽 버튼으로 클릭하고 속성(Properties)을 선택합니다.

중지(Stop) 버튼을 클릭한 뒤, 시작 유형 드롭다운 메뉴에서 사용 안 함(Disable)을 선택합니다.

완료되면 시스템을 재부팅합니다. 재부팅 후 다시 services.msc에 접속하여 해당 서비스를 오른쪽 클릭하고 속성을 열어 시작 유형을 자동(지연된 시작)으로 변경한 후 서비스를 시작합니다.
잠시 기다린 후 searchindexer.exe의 CPU 사용량이 정상 수준으로 떨어졌는지 확인합니다. 정상이라면 문제가 해결된 것이며, 그렇지 않다면 방법 2로 넘어갑니다.
방법 2: korwbrkr.dll 파일 이름 변경
먼저 방법 1과 동일하게 Windows Search 서비스를 중지합니다. 그다음 시작 메뉴에서 CMD를 검색하고, cmd를 마우스 오른쪽 버튼으로 클릭하여 관리자 권한으로 실행을 선택합니다. 명령 프롬프트에 다음을 입력합니다.
cd C:\windows\system32
Enter 키를 누른 후, 다음 명령어를 입력합니다.
ren korwbrkr.dll korwbrkr.bak
Windows Search 서비스를 다시 시작하고 PC를 재부팅하면 문제가 해결됩니다.
방법 3: 프로세스 덤프(DUMP) 생성 및 분석
위 방법들로 해결되지 않는다면 이 방법이 도움이 됩니다. 실제로 방법 2도 이 분석 과정에서 도출된 결과입니다. 이 방법에서는 searchindexer.exe 프로세스의 덤프 파일을 생성한 뒤, 이를 열어 높은 CPU 사용량을 유발하는 특정 파일을 분석합니다.
먼저 Windows 키 + R을 누르고 실행 창에 taskmgr을 입력한 후 확인을 클릭합니다. 프로세스 탭에서 SearchIndexer.exe를 찾아 마우스 오른쪽 버튼으로 클릭하고 덤프 파일 만들기(Create DUMP File)를 선택합니다.
완료되면 덤프 파일의 저장 위치를 기록해 둡니다. 이후 디버거 도구로 파일을 열어 분석하거나, 직접 분석이 어렵다면 wikisend.com 등에 업로드한 링크를 전문가에게 보내 분석을 의뢰할 수 있습니다. 아래는 실제 덤프 분석 출력 예시로, 방법 2에서 언급한 원인 파일(korwbrkr)을 파악하는 데 활용된 내용입니다. korwbrkr.dll은 한국어 형태소 분석 관련 파일로, 필수적이지 않지만 Windows 업데이트 과정에서 함께 설치되면서 문제를 일으켰던 사례입니다.
Loading Dump File [S:\Tools\SearchIndexer.exe.dmp] User Mini Dump File with Full Memory: Only application data is available Symbol search path is: *** Invalid *** **************************************************************************** * Symbol loading may be unreliable without a symbol search path. * * Use .symfix to have the debugger choose a symbol path. * * After setting your symbol path, use .reload to refresh symbol locations. * **************************************************************************** Executable search path is: Windows 8 Version 9200 MP (8 procs) Free x64 Product: WinNt, suite: SingleUserTS Built by: 6.2.9200.16384 (win8_rtm.120725-1247) Machine Name: Debug session time: Sun Nov 4 22:01:24.000 2012 (UTC - 7:00) System Uptime: 0 days 10:09:39.102 Process Uptime: 0 days 0:54:31.000 .................................................. Loading unloaded module list .......... *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll - *** ERROR: Symbol file could not be found. Defaulted to export symbols for KERNELBASE.dll - ntdll!NtWaitForSingleObject+0xa: 000007fc`5b172c2a c3 ret
또한 Process Hacker로 문제 스레드를 검토한 결과, 다음과 같은 스택(stack)이 확인되었습니다. korwbrkr.dll이 반복적으로 호출되고 있는 것을 볼 수 있습니다.
0, ntoskrnl.exe!SeAccessCheck+0x1ef 1, ntoskrnl.exe!KeDelayExecutionThread+0xc32 2, ntoskrnl.exe!KeWaitForSingleObject+0x1cf 3, ntoskrnl.exe!_misaligned_access+0x809 4, ntoskrnl.exe!SeAccessCheck+0x280 5, ntoskrnl.exe!SeAccessCheck+0x4d1 6, korwbrkr.dll!DllUnregisterServer+0x2f48 7, korwbrkr.dll!DllUnregisterServer+0x243e 8, korwbrkr.dll+0x12173 9, korwbrkr.dll!DllUnregisterServer+0x1696 10, korwbrkr.dll!DllUnregisterServer+0x62f9 11, korwbrkr.dll!DllUnregisterServer+0x6117 12, korwbrkr.dll!DllUnregisterServer+0x5db9 13, korwbrkr.dll!DllUnregisterServer+0x5882 14, korwbrkr.dll!DllUnregisterServer+0x6fa0 15, mssrch.dll!DllGetClassObject+0x3feba 16, mssrch.dll+0x19425 17, kernel32.dll!BaseThreadInitThunk+0x1a 18, ntdll.dll!RtlUserThreadStart+0x21
주의할 점은, 파일 이름을 변경하거나 수정하기 전에 반드시 해당 파일을 건드려도 안전한지 먼저 확인해야 한다는 것입니다. 간단한 구글 검색만으로도 파일의 용도를 알 수 있습니다. 이 방법은 시스템 파일을 직접 다루므로 숙련된 고급 사용자에게만 권장됩니다.