다음을 통해 공유


시나리오 가이드: WmiPrvse.exe 할당량 초과 문제 해결

이 문서는 WmiPrvse.exe 프로세스 할당량 초과 문제를 해결하는 데 도움이 됩니다.

다음 문제 중 하나 이상이 발생할 수 있습니다.

  • 하나 이상의 애플리케이션은 WMI 오류 상수에 나열된 WMI(Windows Management Instrumentation) 공급자 오류와 관련된 오류 코드 또는 메시지를 보고합니다.

  • WmiPrvse.exe 프로세스는 정기적으로 또는 간헐적으로 특정 메모리, 핸들 또는 스레드에 도달하고 결국 종료되거나 종료됩니다.

  • 다음 이벤트는 애플리케이션 이벤트 로그에 정기적으로 또는 간헐적으로 기록됩니다.

    참고 항목

    다음은 두 가지 이벤트 예제입니다. 이벤트에 대한 설명은 WmiPrvse.exe 프로세스 및 관련된 WMI 공급자가 직면한 문제에 따라 변경될 수 있습니다.

    Log Name:      Application
    Source:        Microsoft-Windows-WMI
    Date:          <DateTime>
    Event ID:      5612
    Task Category: None
    Level:         Warning
    Keywords:
    User:          NETWORK SERVICE
    Computer:      <MachineName>
    Description:
    Windows Management Instrumentation has stopped WMIPRVSE.EXE because a quota reached a warning value. Quota: PrivatePageCount  Value: 538353664 Maximum value: 536870912 WMIPRVSE PID: 18524 Providers hosted in this process: %systemroot%\system32\wbem\ntevt.dll, %SystemRoot%\System32\wbem\cluswmi.dll, %SystemRoot%\System32\wbem\cluswmi.dll, %systemroot%\system32\wbem\cimwin32.dll
    
    Log Name:      Application
    Source:        Microsoft-Windows-WMI
    Date:          <DateTime>
    Event ID:      5612
    Task Category: None
    Level:         Warning
    Keywords: 
    User:          SYSTEM
    Computer:      <MachineName>
    Description:
    Windows Management Instrumentation has stopped WMIPRVSE.EXE because a quota reached a warning value. Quota: HandleCount Value: 4099 Maximum value: 4096 WMIPRVSE PID: 4468 Providers hosted in this process: C:\Windows\System32\wbem\WmiPerfClass.dll, %systemroot%\system32\wbem\wmiprov.dll
    

위의 문제 중 하나 이상(특히 이벤트 ID 5612)이 발생하면 WMI 공급자 프로세스(WmiPrvse.exe) 중 하나가 미리 정의된 리소스 값을 초과했으며 WMI 서비스가 프로세스로 실행되지 않도록 명시적으로 중지했음을 의미합니다.

중지된 WmiPrvse.exe 프로세스에서 처리되는 쿼리와 프로세스를 시작하는 애플리케이션이 실패합니다.

WmiPrvse.exe란?

WmiPrvse.exe 하나 이상의 WMI 공급자를 호스트할 수 있는 Windows OS(운영 체제)의 프로세스입니다. WMI 서비스에서 관리됩니다. 각 WMI 공급자는 주로 WMI 공급자 DLL 파일 및 WMI 공급자 MOF 파일을 포함합니다. WMI 공급자는 WMI 서비스의 작업을 수락하여 로컬 또는 원격 클라이언트에서 시작한 WMI 쿼리를 처리하거나 처리하는 WMI 인프라의 일부입니다.

WmiPrvse.exe 프로세스에는 활성 상태일 때 사용할 수 있는 미리 정의된 임계값 또는 리소스 할당량이 있습니다. 예를 들면 다음과 같습니다.

  • HandlesPerHost
  • MemoryAllHosts
  • MemoryPerHost
  • ProcessLimitAllHosts
  • ThreadsPerHost

값은 WMI 클래스 __ProviderHostQuotaConfiguration 인스턴스로 정의됩니다.

이벤트 ID 5612

이벤트 ID 5612는 가장 설명적이고 유용한 경고 메시지 중 하나입니다. 첫 번째 이벤트 예제에서 이벤트는 리소스 PrivatePageCount 가 536870912 할당량을 초과하여 538353664 값에 도달했다고 보고합니다.

리소스가 할당량 한도에 도달하거나 값을 초과하면 WMI 서비스는 의도적으로 프로세스를 추가 사용에서 명시적으로 중지합니다.

이 예제에서 리소스는 PrivatePageCount메모리 엔터티 중 하나이며 속성에 의해 MemoryPerHost 호스트당 제한됩니다.

또한 이 이벤트는 중지된 WmiPrvse.exe 프로세스에서 호스트되는 다른 WMI 공급자를 나열합니다.

  • %systemroot%\system32\wbem\ntevt.dll
  • %SystemRoot%\System32\wbem\cluswmi.dll
  • %SystemRoot%\System32\wbem\cluswmi.dll
  • %systemroot%\system32\wbem\cimwin32.dll

위에 나열된 모든 공급자는 문제로 인해 갑자기 중지됩니다.

문제 진단

다음 시나리오에서는 이벤트 ID 5612를 발생시킬 수 있습니다.

  • 클라이언트 애플리케이션은 비정상적이거나 비효율적이거나 큰 쿼리를 수행합니다.
  • WmiPrvse.exe 프로세스는 WMI 쿼리를 처리하는 동안 리소스를 예상대로 해제하지 않으므로 메모리 누수로 이어져 WmiPrvse.exe 프로세스가 중지됩니다.
  • 컴퓨터 또는 환경 설정의 규모가 큽니다.

들어오는 쿼리를 분석하면 초기 원인을 확인하고 문제를 해결하는 데 도움이 될 수 있습니다. 그렇지 않으면 Microsoft 지원 사례를 열어 더 심층적인 조사가 필요합니다.

문제를 진단하려면 다음 단계를 수행합니다.

  1. 문제의 패턴을 이해합니다.

    애플리케이션 이벤트 로그를 검토하고 이벤트 ID 5612를 필터링하여 빈도, 기록 및 패턴을 파악합니다.

  2. 이벤트에 나열된 일반적인 WMI 공급자를 식별합니다.

    나열된 공급자는 모든 이벤트에서 동일할 수 있습니다. 또 다른 가능성은 공급자 중 하나가 더 많은 리소스를 소비하여 이 문제를 일으키고 다른 WMI 공급자를 방해할 수 있다는 것입니다. 이 경우 목표는 문제가 있는 공급자를 진단하고 식별하는 것입니다.

  3. 동일한 WMI 공급자 목록을 호스팅하는 현재 활성 WMI 공급자를 식별합니다.

  4. 이벤트 ID 5612에 나열된 WmiPrvse.exe 프로세스에서 처리하는 들어오는 쿼리를 분석합니다.

    WMI 높은 CPU 사용량 문제 해결 섹션에서 "들어오는 쿼리 분석", "WMI 추적 파일 검토" 및 "높은 CPU 사용량을 유발하는 클라이언트 PID 찾기" 섹션에 설명된 단계를 진행합니다. 그런 다음 다음을 식별할 수 있습니다.

    • 클라이언트 프로세스
      • 이슈로 이어지는 쿼리
      • 쿼리 빈도

클라이언트 애플리케이션이 비정상적이거나 비효율적이거나 큰 쿼리를 수행합니다.

클라이언트 애플리케이션이 비정상적이거나 비효율적이거나 큰 쿼리를 수행하는 경우 WMI 공급자가 많은 양의 리소스를 소비하게 될 수 있습니다.

  • 애플리케이션이 이 쿼리를 수행하는 이유와 필요한 경우를 검토하고 이해합니다. 사용자 환경에서 필요하지 않은 경우 애플리케이션을 제거하거나 쿼리를 수행하지 못하도록 중지합니다. 이렇게 하면 문제를 해결하는 데 도움이 됩니다. 애플리케이션 공급업체에서 이 동작을 해결할 수 있습니다.

  • 애플리케이션이 리소스를 많이 소비하는 WmiPrvse.exe 프로세스로 이어지는 WMI 쿼리를 수행하는 것으로 알려져 있거나 예상되는 경우 WmiPrvse.exe 프로세스에서 메모리나 핸들 누수가 없으면 기본 할당량 제한을 두 배로 늘려 기본값을 두 배로 늘려 상황을 해결해야 합니다.

    주의

    • 이 변경은 리소스가 누출되지 않는 경우에만 적용됩니다. 그렇지 않으면 문제(이벤트 ID 5612)가 잠시 지연된 후 되풀이되기 시작합니다.
    • 이 변경 내용은 시스템의 모든 WMI 공급자에 적용됩니다. 즉, 모든 WmiPrvse.exe 프로세스가 적용된 새 할당량 제한에 따라 리소스 사용을 시작합니다.

    기본 할당량 한도를 늘리면 메모리, 핸들 또는 CPU와 같은 리소스를 더 많이 사용할 수 있습니다. 따라서 문제에 대한 사전 조사 및 이해 없이 할당량 한도를 늘리지 않는 것이 좋습니다.

    할당량 한도를 늘리려면 다음 단계를 수행합니다.

    1. WBEMTEST(Windows Management Instrumentation Tester)를 관리자 권한으로 열고, 연결을 선택하고, "루트" 네임스페이스에 연결합니다.

      루트 네임스페이스에 연결하는 방법을 보여 주는 Windows Management Instrumentation Tester 창의 스크린샷

    2. 열거형 인스턴스를 선택하고 클래스 정보 대화 상자에 __ProviderHostQuotaConfiguration입력한 다음 확인을 선택합니다. 쿼리 결과 창이 표시됩니다. 그런 다음 첫 번째 결과를 두 번 클릭하여 개체를 편집합니다.

      첫 번째 결과가 선택된 쿼리 결과 창의 스크린샷

    3. 속성 섹션에서 아래에 설명된 목록까지 아래로 스크롤하고 이러한 속성의 값을 수정하여 리소스를 늘입니다.

      인스턴스의 속성이 선택된 개체 편집기 창의 스크린샷

    4. 개체 편집기 창에서 개체 저장을 선택하고 쿼리 결과 창을 닫은 다음 WBEMTEST를 종료합니다.

    5. 변경 내용을 적용하려면 WMI 서비스(Winmgmt)를 다시 시작합니다.

WmiPrvse.exe 프로세스는 예상대로 리소스를 해제하지 않습니다.

WmiPrvse.exe 프로세스가 WMI 쿼리를 처리하는 동안 리소스를 예상대로 해제하지 않으면 메모리 누수로 이어져 WmiPrvse.exe 프로세스가 중지됩니다. 처리된 쿼리와 문제를 일으키는 WmiPrvse.exe 프로세스의 스택을 검사합니다.

  • 들어오는 쿼리를 검토하면 WmiPrvse.exe 프로세스 동작을 이해하는 데 도움이 됩니다.

  • 문제를 일으키는 클라이언트 애플리케이션 또는 서비스가 없는 경우 이벤트 ID 5612에서 식별된 공급자를 호스팅하는 WmiPrvse.exe 프로세스 작업을 추가로 확인합니다.

  • 프로세스 탐색기를 사용하여 스레드 및 스택을 검토합니다.

    1. 프로세스 탐색기를 관리자로 실행하고 문제 진단 섹션에 설명된 기술을 사용하여 WmiPrvse.exe 프로세스를 찾습니다.

    2. 속성으로 이동하여 스레드 탭을 선택합니다.

      스레드 ID 4016이 선택된 WmiPrvse.exe 5180 속성 창 스크린샷

    3. 각 스레드에 대해 스택을 검토하고 타사 이진 파일 또는 파일을 찾을 수 있는지 식별할 수 있습니다.

바이러스 백신 소프트웨어, 모니터링 소프트웨어 및 위협 방지 소프트웨어와 같은 소프트웨어의 이진 파일을 확인할 수 있습니다. 이러한 소프트웨어 애플리케이션은 환경에 도움이 되지만 때때로 이러한 문제를 방해하고 발생할 수 있습니다. 따라서 일시적으로 제거하여 문제를 확인할 수 있습니다.

식별된 비 Microsoft 제품을 제거하면 문제를 해결하는 데 도움이 되는 경우 제품 공급업체에서 제품의 이 동작을 해결할 수 있습니다.

그렇지 않은 경우 Microsoft 지원 전문가에게 문의하여 ETL(이벤트 추적 로그) 추적을 분석하고 WMI 공급자의 덤프를 검토해야 합니다.

데이터 수집

문제를 자세히 조사하기 위해 지원 사례를 열기 전에 사용자 환경 문제에 대해 TSS를 사용하여 정보 수집에 언급된 단계에 따라 정보를 수집할 수 있습니다.

  1. TSS.zip 다운로드하고 콘텐츠를 추출합니다.

  2. 관리자 권한 PowerShell 명령 프롬프트에서 다음 cmdlet을 실행하여 추적을 시작합니다.

    .\TSS.ps1 -UEX_WMIAdvanced -noBasicLog
    
  3. 검색한 오류 또는 ID가 재현되거나 식별된 WmiPrvSE.exe 문제가 나타날 때까지 추적을 계속합니다. 추적을 2~3분 이상 계속 실행합니다.

  4. TSS 도구 집합에 따라 PowerShell 명령 프롬프트의 지침에 따라 추적을 중지합니다.

스크립트는 모든 추적 결과 및 진단 정보를 포함하는 zip 파일을 만듭니다. 지원 사례를 만든 후 이 파일을 분석을 위해 보안 작업 영역에 업로드할 수 있습니다.