Udostępnij za pośrednictwem


Przewodnik scenariusza: Rozwiązywanie problemów z przekroczeniem limitu przydziału WmiPrvse.exe

Ten artykuł pomaga rozwiązać problemy z przekroczeniem limitu przydziału procesu WmiPrvse.exe .

Może wystąpić co najmniej jeden z następujących problemów:

  • Co najmniej jedna aplikacja zgłasza kody błędów lub komunikaty związane z błędami dostawcy instrumentacji zarządzania Windows (WMI) wymienionymi w stałej błędu usługi WMI.

  • Proces WmiPrvse.exe regularnie lub sporadycznie osiąga określoną pamięć, uchwyt lub wątek, a ostatecznie kończy działanie lub kończy działanie.

  • Następujące zdarzenia są rejestrowane w dzienniku zdarzeń aplikacji regularnie lub sporadycznie.

    Uwaga 16.

    Oto dwa przykłady zdarzeń. Opis zdarzenia może ulec zmianie w zależności od problemu związanego z procesem WmiPrvse.exe i zaangażowanymi dostawcami usługi 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
    

Jeśli wystąpi co najmniej jeden z powyższych problemów (szczególnie identyfikator zdarzenia 5612), oznacza to, że jeden z procesów dostawcy usługi WMI (WmiPrvse.exe) przekroczył wstępnie zdefiniowaną wartość zasobu i że usługa WMI jawnie zatrzymała ją jako proces.

Zapytanie obsługiwane przez zatrzymany proces WmiPrvse.exe i aplikacja, która inicjuje proces, zakończy się niepowodzeniem.

Co to jest WmiPrvse.exe?

WmiPrvse.exe jest procesem w systemie operacyjnym Windows, który może hostować co najmniej jednego dostawcę WMI. Jest ona zarządzana przez usługę WMI. Każdy dostawca WMI zawiera przede wszystkim plik DLL dostawcy WMI i plik MOF dostawcy WMI. Dostawca WMI jest częścią infrastruktury usługi WMI, która akceptuje zadania z usługi WMI w celu adresowania lub obsługi zapytań WMI inicjowanych przez klientów lokalnych lub zdalnych.

Każdy proces WmiPrvse.exe ma wstępnie zdefiniowany próg lub limit przydziału zasobów, którego może używać, gdy jest aktywny. Na przykład:

  • HandlesPerHost
  • MemoryAllHosts
  • MemoryPerHost
  • ProcessLimitAllHosts
  • ThreadsPerHost

Wartości są definiowane jako wystąpienia w __ProviderHostQuotaConfiguration klasy WMI.

Identyfikator zdarzenia 5612

Identyfikator zdarzenia 5612 jest jednym z najbardziej opisowych i przydatnych komunikatów ostrzegawczych. W pierwszym przykładzie zdarzenia zgłaszają, że zasób PrivatePageCount przekroczył limit przydziału 536870912 i osiągnął wartość 538353664.

Gdy wszystkie zasoby osiągną limit przydziału lub przekroczą wartość, usługa WMI, zgodnie z projektem, jawnie zatrzyma proces z dalszego zużycia.

W tym przykładzie zasób to PrivatePageCount, jedna z jednostek pamięci, która jest ograniczona na host przez MemoryPerHost właściwość .

Zdarzenie zawiera również listę różnych dostawców WMI hostowanych w zatrzymanych WmiPrvse.exe procesie.

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

Wszyscy dostawcy wymienieni powyżej są nagle zatrzymani ze względu na problem.

Diagnozowanie problemu

Następujące scenariusze mogą powodować zdarzenie o identyfikatorze 5612:

  • Aplikacja kliencka wykonuje nietypowe, nieefektywne lub duże zapytania.
  • Proces WmiPrvse.exe nie zwalnia zasobów zgodnie z oczekiwaniami podczas przetwarzania zapytania usługi WMI, co prowadzi do przecieku pamięci i zatrzymuje proces WmiPrvse.exe.
  • Skala maszyny lub konfiguracji środowiska jest duża.

Analizowanie zapytań przychodzących może pomóc w ustaleniu początkowej przyczyny i rozwiązaniu problemu. W przeciwnym razie wymagane jest dokładniejsze badanie przez otwarcie zgłoszenia do pomocy technicznej firmy Microsoft.

Aby zdiagnozować problem, wykonaj następujące kroki:

  1. Omówienie wzorca problemu.

    Przejrzyj dzienniki zdarzeń aplikacji i filtruj identyfikator zdarzenia 5612, aby zrozumieć częstotliwość, historię i wzorzec.

  2. Zidentyfikuj typowych dostawców usługi WMI wymienionych w zdarzeniu.

    Dostawcy wymienieni mogą być tacy sami we wszystkich zdarzeniach. Inną możliwością jest to, że jeden z dostawców zużywa więcej zasobów, powodując ten problem i zakłócając innych dostawców usługi WMI. W takim przypadku celem jest diagnozowanie i identyfikowanie problematycznego dostawcy.

  3. Zidentyfikuj obecnie aktywnych dostawców usługi WMI hostowania tej samej listy dostawców usługi WMI.

  4. Przeanalizuj zapytania przychodzące obsługiwane przez proces WmiPrvse.exe wymieniony w identyfikatorze zdarzenia 5612.

    Zapoznaj się z krokami wymienionymi w sekcjach "Analizowanie zapytań przychodzących", "Przeglądanie plików śledzenia usługi WMI" i "Znajdowanie identyfikatorów PID klienta powodujących wysokie użycie procesora CPU" w temacie Rozwiązywanie problemów z wysokim użyciem procesora CPU w usłudze WMI. Następnie możesz zidentyfikować następujące elementy:

    • Proces klienta (es)
      • Zapytanie prowadzące do problemu
      • Częstotliwość zapytania

Aplikacja kliencka wykonuje nietypowe, nieefektywne lub duże zapytania

Gdy aplikacja kliencka wykonuje nieprawidłowe, nieefektywne lub duże zapytania, może prowadzić do korzystania z dużych ilości zasobów przez dostawcę usługi WMI.

  • Przejrzyj i dowiedz się, dlaczego aplikacja wykonuje to zapytanie i czy jest to konieczne. Jeśli nie jest to konieczne w danym środowisku, usuń aplikację lub zatrzymaj wykonywanie zapytania. Powinno to pomóc w rozwiązaniu problemu. To zachowanie można rozwiązać z dostawcą aplikacji.

  • Jeśli aplikacja jest znana lub oczekiwana do wykonania zapytań WMI, które prowadzą do procesu WmiPrvse.exe intensywnie zużywają jakiekolwiek zasoby, i nie ma pamięci ani nie ma przecieku obsługi z procesu WmiPrvse.exe, zwiększenie domyślnego limitu przydziału w celu dwukrotnego zwiększenia wartości domyślnej powinno rozwiązać tę sytuację.

    Uwaga

    • Ta zmiana jest skuteczna tylko wtedy, gdy nie ma wycieku żadnych zasobów. W przeciwnym razie problem (identyfikator zdarzenia 5612) zostanie opóźniony tylko przez pewien czas, a następnie rozpocznie się cyklicznie.
    • Ta zmiana zostanie zastosowana do wszystkich dostawców usługi WMI w systemie. Oznacza to, że wszystkie procesy WmiPrvse.exe zaczną zużywać zasoby zgodnie z zastosowanym nowym limitem przydziału.

    Zwiększenie domyślnego limitu przydziału może prowadzić do większego zużycia zasobów, takich jak pamięć, dojścia lub procesor CPU. W związku z tym nie zalecamy zwiększenia limitu przydziału bez wcześniejszego zbadania i zrozumienia problemu.

    Aby zwiększyć limit przydziału, wykonaj następujące kroki:

    1. Otwórz narzędzie Instrumentacja zarządzania Windows (WBEMTEST) jako administrator, wybierz pozycję Połącz i połącz się z przestrzenią nazw "root".

      Zrzut ekranu przedstawiający okno Tester instrumentacji zarządzania Windows pokazujące sposób nawiązywania połączenia z główną przestrzenią nazw.

    2. Wybierz pozycję Wystąpienia wyliczenia, wpisz __ProviderHostQuotaConfiguration w oknie dialogowym Informacje o klasie, a następnie wybierz przycisk OK. Zostanie wyświetlone okno Wynik zapytania. Następnie kliknij dwukrotnie pierwszy wynik, aby edytować obiekty.

      Zrzut ekranu przedstawiający okno Wynik zapytania z wybranym pierwszym wynikiem.

    3. W sekcji Właściwości przewiń w dół do listy wymienionej poniżej i zwiększ zasoby, modyfikując wartości tych właściwości.

      Zrzut ekranu przedstawiający okno Edytor obiektów z wybranymi właściwościami wystąpienia.

    4. W oknie Edytor obiektów wybierz pozycję Zapisz obiekt, zamknij okno Wynik zapytania, a następnie zamknij okno WBEMTEST.

    5. Uruchom ponownie usługę WMI (Winmgmt), aby zmiany zaczęły obowiązywać.

Proces WmiPrvse.exe nie zwalnia zasobów zgodnie z oczekiwaniami

Jeśli proces WmiPrvse.exe nie zwalnia zasobów zgodnie z oczekiwaniami podczas przetwarzania zapytania usługi WMI, prowadzi do przecieku pamięci i zatrzymuje proces WmiPrvse.exe. Sprawdź przetworzone zapytanie i stos procesu WmiPrvse.exe , który powoduje problem.

  • Badanie zapytań przychodzących pomaga zrozumieć zachowanie procesu WmiPrvse.exe .

  • Jeśli problem nie powoduje żadnych aplikacji klienckich lub usług, sprawdź działanie procesu WmiPrvse.exe hostowanie dostawców zidentyfikowanych w identyfikatorze zdarzenia 5612.

  • Użyj Eksploratora procesów, aby przejrzeć wątki i stosy.

    1. Uruchom Eksploratora procesów jako administrator i znajdź proces WmiPrvse.exe przy użyciu techniki wymienionej w sekcji Diagnozowanie problemu .

    2. Przejdź do pozycji Właściwości i wybierz kartę Wątki .

      Zrzut ekranu przedstawiający WmiPrvse.exe 5180 okno Właściwości z wybranym identyfikatorem wątku 4016.

    3. Dla każdego wątku możesz przejrzeć stos i określić, czy znajdziesz jakiekolwiek pliki binarne lub pliki inne niż Microsoft.

Możesz zauważyć pliki binarne z oprogramowania, takiego jak oprogramowanie antywirusowe, oprogramowanie do monitorowania i oprogramowanie ochrony przed zagrożeniami. Mimo że te aplikacje oprogramowania korzystają ze środowiska, mogą czasami przerywać i powodować takie problemy. W związku z tym można je tymczasowo odinstalować i sprawdzić, czy problem występuje.

Jeśli usunięcie zidentyfikowanego produktu innego niż Microsoft pomoże rozwiązać ten problem, możesz rozwiązać to zachowanie produktu u dostawcy produktu.

Jeśli nie, skontaktuj się z specjalistami pomocy technicznej firmy Microsoft, aby przeanalizować śledzenie dziennika śledzenia zdarzeń (ETL) i przejrzeć zrzut dostawców usługi WMI.

Zbieranie danych

Przed otwarciem zgłoszenia do pomocy technicznej w celu dalszego zbadania problemu możesz zebrać informacje, wykonując kroki opisane w temacie Zbieranie informacji przy użyciu przewodnika rozwiązywania problemów z środowiskiem użytkownika.

  1. Pobierz TSS.zip i wyodrębnij zawartość.

  2. Uruchom śledzenie, uruchamiając następujące polecenie cmdlet z wiersza polecenia programu PowerShell z podwyższonym poziomem uprawnień.

    .\TSS.ps1 -UEX_WMIAdvanced -noBasicLog
    
  3. Zachowaj śledzenie do momentu odtworzenia błędu lub nawet identyfikatora lub zidentyfikowany problem WmiPrvSE.exe pojawi się. Nie uruchamiaj śledzenia przez ponad dwie do trzech minut.

  4. Zatrzymaj śledzenie, postępując zgodnie z instrukcjami w wierszu polecenia programu PowerShell zgodnie z zestawem narzędzi TSS.

Skrypt utworzy plik zip zawierający wszystkie wyniki śledzenia i informacje diagnostyczne. Po utworzeniu zgłoszenia do pomocy technicznej ten plik można przekazać do bezpiecznego obszaru roboczego na potrzeby analizy.