Delen via


Problemen met hoog CPU-gebruik van WMI oplossen

In dit artikel wordt beschreven hoe u problemen met hoog CPU-gebruik van Windows Management Instrumentation (WMI) op elk Windows-besturingssysteem kunt vaststellen.

Het probleem identificeren

In de meeste scenario's wordt de CPU verbruikt door het WmiPrvse.exe proces en er zijn een paar gevallen waarin svchost.exe het hosten van de WMI-service (Winmgmt) een hoog CPU-gebruik verbruikt.

Bekijk het deelvenster Processen van Taakbeheer of het deelvenster Details om het exacte proces te identificeren

Bepaal of het proces is WmiPrvse.exe of svchost.exe (die als host fungeert voor de WMI-service Winmgmt) en identificeer de proces-id.

Notitie

Mogelijk moet u de PID-kolom handmatig toevoegen om de proces-id van alle processen in Taakbeheer weer te geven.

Dit is een voorbeeld. Ga naar Taakbeheerdetails> en sorteer op Naam en zoek het WmiPrvse.exe proces dat een hoog CPU-gebruik verbruikt. Noteer de proces-id (PID).

In deze schermopname ziet u meerdere exemplaren van WMI Provider Host (het WmiPrvse.exe-proces ) als actief en het CPU-gebruik.

Schermopname van het proces via taakbeheer.

In deze schermopname ziet u Services Host: Windows Management Instrumentation (svchost.exe die als host fungeert voor de Winmgmt-service) en het CPU-gebruik.

Schermopname van de details via taakbeheer.

Ga naar Task Manager>Services, sorteer op naam en zoek de Winmgmt-service. Noteer de PID. Klik met de rechtermuisknop op de service en selecteer Ga naar details om het svchost.exe proces als volgt te vinden:

Schermopname van de services via taakbeheer.

In het voorbeeld bevindt PID 3648 zich uit drie WmiPrvse.exe exemplaren, die ongeveer 25% van het CPU-gebruik verbruikt. Winmgmt wordt gehost onder het svchost.exe proces met PID 2752.

Inzicht in het CPU-verbruik

Dit omvat voornamelijk het observeren van het totale CPU-verbruik en de geïdentificeerde PID. Het is belangrijk om te weten wanneer, hoe en de frequentie van het CPU-verbruik.

Evalueer de situatie door te begrijpen of het CPU-verbruik gedurende een bepaalde tijd hoog is. Controleer of er activiteit is, zoals het uitvoeren van specifieke taken of services die actief zijn, het uitvoeren van bewakingstoepassingen of het uitvoeren van scripts die leiden tot WmiPrvse.exe of Hoge CPU van Winmgmt.

Begrijpen of er een patroon is, wat betekent dat het CPU-gebruik consistent, inconsistent, willekeurig, sporadisch of regelmatig pieken heeft.

Identificeer de frequentie van het CPU-verbruik. Controleer of deze alleen plaatsvindt tijdens productieuren, buiten kantooruren of een willekeurige tijd van de dag. Het kan ook optreden tijdens een specifieke activiteit, zoals het aanmelden of afmelden van gebruikers.

U kunt Taakbeheer gebruiken en visueel noteren hoe het CPU-gebruikspatroon is.

Hier volgt een voorbeeld waarin wordt getoond hoe u het hulpprogramma Prestatiemeter (Perfmon) gebruikt om de exacte exemplaren van WmiPrvse.exe te identificeren met de door u geïdentificeerde PID. U kunt ook een grafische weergave krijgen van het CPU-verbruik van elk proces (WmiPrvse.exe of svchost.exe die als host fungeert voor de WMI-service).

  1. Open een opdrachtprompt met verhoogde bevoegdheid en voer Perfmon in.

  2. Selecteer Prestatiemeter in het linkerdeelvenster en selecteer het plusteken (+) in het rechterdeelvenster om het venster Tellers toevoegen te openen.

  3. Vouw Proces uit en selecteer ID-proces. Selecteer alle WmiPrvse#-exemplaren en selecteer vervolgens OK toevoegen>.

    Schermopname van het toevoegen van id-procestellers.

    Schermopname van de details van de id-procestellers.

  4. Vouw in het venster Tellers proces uit en selecteer %Processortijd. Selecteer WmiPrvse# die overeenkomt met het PID dat hoog CPU-gebruik verbruikt en selecteer vervolgens OK toevoegen>.

    Schermopname die laat zien hoe u %Processor Time-tellers toevoegt.

    Schermopname van de details van de meteritems voor %Processor Time.

  5. Voor de teller Id-proces vertegenwoordigen de laatste, gemiddelde, minimum en maximum alle de PID van het respectieve WmiPrvse.exe proces. Zodra u hebt vastgesteld welk exemplaar een hoog CPU-gebruik verbruikt, kunt u de resterende exemplaren van WmiPrvse#-exemplaren uit de lijst verwijderen door op Delete te drukken.

In het voorbeeld wordt opgemerkt dat WmiPrvse.exe PID 556 hoog CPU-gebruik verbruikt en WmiPrvse #1 dat overeenkomt met PID 556 in Prestatiemeter.

Vervolgens wordt %Processor Time van WmiPrvse#1 toegevoegd om een live grafische weergave te zien van het CPU-gebruik van dit proces. In het voorbeeld wordt de kleur %ProcessorTijd van WmiPrvse#1 gewijzigd van geel in rood.

De stappen zijn hetzelfde voor het vinden van de juiste svchost# in Performance Monitor in het geval van een hoog CPU-gebruik door svchost.exe de Wmimgmt-service te hosten.

Als u merkt dat een svchost.exe proces dat als host fungeert voor de WMI-service een hoog CPU-gebruik veroorzaakt en vermoedt dat WMI bijdraagt aan het probleem, kunt u controleren of de PID van het svchost.exe proces als host fungeert voor de WMI-service door de volgende opdracht uit te voeren:

tasklist /svc /fi "Services eq Winmgmt"

Als het svchost.exe proces meerdere services bevat, kunt u de WMI-service opsplitsen in een eigen svchost.exe proces door de volgende stappen uit te voeren:

  1. Open een opdrachtprompt met verhoogde bevoegdheden.

  2. Voer de volgende opdracht uit:

    sc config Winmgmt type= own
    
  3. Start de WMI-service opnieuw.

Nadat u de service opnieuw hebt opgestart, kunt u de Tasklist /svc opdracht uitvoeren om te controleren of de Winmgmt-service wordt uitgevoerd onder een eigen svchost.exe proces.

Nadat u het probleem hebt opgelost of de service niet meer in een eigen svchost.exe proces hoeft te staan, kunt u het weer in het gedeelde svchost.exe proces plaatsen. U kunt de actie uitvoeren door de volgende opdracht uit te voeren vanaf een opdrachtprompt en vervolgens de WMI-service opnieuw te starten:

sc config Winmgmt type= share

WmiPrvse.exe vaststellen

Tot nu toe hebt u alleen de exacte PID van WmiPrvse.exe die een hoog CPU-gebruik verbruikt. Verzamel vervolgens zoveel mogelijk informatie over deze PID. Dit helpt u bij het beoordelen van de situatie of het identificeren van iets dat het probleem kan veroorzaken. Verzamel informatie over ander resourcegebruik of identificeer de exacte WMI-provider (DLL) die wordt gehost door de WmiPrvse.exe geïdentificeerde PID.

Ander resourcegebruik, zoals geheugen, ingangen, threads en gebruikersnaam

Verzamel informatie over ander resourcegebruik, zoals geheugen, ingangen, threads en gebruikersnaam, op het moment van hoog CPU-gebruik. U kunt het tabblad Details in Taakbeheer gebruiken, de exacte PID selecteren en controleren.

Notitie

Voeg indien nodig extra kolommen toe.

Schermopname van de service voor hoog CPU-gebruik in Taakbeheer.

De exacte WMI-provider (DLL) identificeren die wordt gehost door de WmiPrvse.exe geïdentificeerde PID

Er zijn meerdere methoden om de provider(s) te identificeren die in het WmiPrvSE.exe proces zijn geladen.

  1. Scripts gebruiken : vermeld alle actieve WMI-providers om alle WMI-providers (Windows Management Instrumentation) uit te voeren.

  2. Process Explorer kan u helpen bij het identificeren van de exacte providers die worden gehost in de geïdentificeerde PID. Volg vervolgens deze stappen:

    1. Voer Process Explorer uit als beheerder. Zoek de geïdentificeerde WmiPrvse.exe PID, ga naar de eigenschappen en selecteer het tabblad WMI-providers .

    2. In het volgende voorbeeld bevindt WmiPrvse.exe PID 556 zich en is het hosten gevonden:

      • WMI-provider: MS_NT_EVENTLOG_PROVIDER
      • Naamruimte: root\CIMV2
      • DLL-pad: %systemroot%\system32\wbem\ntevt.dll

      Schermopname met de eigenschappen WmiPrvSE.exe:556.

  3. In de meeste gevallen is er mogelijk meer dan één provider geladen. Het kan een van de providers zijn die tijd doorbrengen in de CPU, wat leidt tot een hoog CPU-probleem.

Als het probleem af en toe of onregelmatig is, kan de WmiPrvse.exe die het probleem veroorzaakt, na verloop van tijd worden beëindigd. Wanneer het probleem zich opnieuw voordoet, is het mogelijk dezelfde provider(s) in een nieuw WmiPrvse.exe exemplaar. Wanneer u de provider(s) hebt genoteerd, voert u in dit geval de volgende cmdlet uit om de huidige PID van het WmiPrvse.exe proces met die provider weer te geven:

tasklist /m <Provider DLL>

Hier volgt een voorbeeld:

tasklist /m ntevt.dll 

Schermopname van de uitvoer van de takenlijst van het ntevt.dll-bestand.

Daarom is het belangrijk om te begrijpen welke providers in het WmiPrvse.exe proces worden geladen en elke keer een notitie maken van de PID van het WmiPrvse.exe-proces .

Zodra u de provider(s) hebt die in de WmiPrvse.exe een hoog CPU-gebruik veroorzaken, kunt u begrijpen of er taken worden verwerkt.

Taken kunnen de binnenkomende WMI-query's zijn die door het clientproces worden verzonden naar de WMI-service, die vervolgens wordt toegewezen aan het juiste WMI-providerproces. In het voorbeeld wordt de taak verzonden naar de MS_NT_EVENTLOG_PROVIDER provider. De volgende stap is dus het bestuderen van de binnenkomende query's en taken naar de MS_NT_EVENTLOG_PROVIDER provider.

De binnenkomende query's analyseren

Het onderzoeken van binnenkomende query's omvat:

  • Het identificeren van WMI-query('s) die worden verwerkt door WMI-providers die een hoog CPU-gebruik veroorzaken.
  • WMI-klasse(es)-query's.
  • Een gekoppelde gebruiker.
  • Een clientproces dat de query initieert.

De bovenstaande informatie kan worden verzameld met behulp van de openbaar beschikbare WMIMon- of WMI-Activity Operationele logboeken en WMI-Tracing beschikbaar onder Logboeken.

Operationele logboeken: Microsoft-Windows-WMI-Activity/Operational

De binnenkomende query's worden geregistreerd als operationele gebeurtenissen in het Microsoft-Windows-WMI-Activity/Operational-logboek, dat beschikbaar is onder:

Logboeken Applications and Services Logs>Microsoft>Windows>WMI-Activity>

Er zijn verschillende soorten gebeurtenissen vastgelegd.

Als het WmiPrvse.exe proces met een hoog CPU-gebruik van tijd tot tijd wordt beëindigd en u al weet welke provider(s) zijn geladen, kan de volgende gebeurtenis helpen bij het bepalen van het momenteel actieve WmiPrvse.exe proces dat als host fungeert voor de betreffende provider.

Log Name:      Microsoft-Windows-WMI-Activity/Operational
Source:        Microsoft-Windows-WMI-Activity
Event ID:      5857
Task Category: None
User:          NETWORK SERVICE
Description:
MS_NT_EVENTLOG_PROVIDER provider started with result code 0x0. HostProcess = wmiprvse.exe; ProcessID = 556; ProviderPath = %systemroot%\system32\wbem\ntevt.dll

Analyse- en foutopsporingslogboeken inschakelen voor het inschakelen van WMI-tracering

Selecteer in Logboeken Weergave>analytische logboeken en foutopsporingslogboeken weergeven om de foutopsporing en tracering voor WMI-Activity in te schakelen.

Schermopname van Operational in Logboeken.

Foutopsporing en tracering zijn standaard uitgeschakeld en elk ervan kan handmatig worden ingeschakeld door met de rechtermuisknop op Trace of Fouten opsporen te klikken en vervolgens Logboek inschakelen te selecteren.

Notitie

Als u analytische logboeken en foutopsporingslogboeken weergeven inschakelt, kunt u fouten opsporen en traceren voor bijna alle gebeurtenisbronnen en extra logboekregistratie maken. Daarom moet dit worden uitgeschakeld zodra het onderzoek is voltooid en niet meer in gebruik is.

Deze tracering kan worden ingeschakeld terwijl u een hoog CPU-verbruik bekijkt door het WmiPrvse.exe proces of lang genoeg om het gedrag van hoog CPU-gebruik vast te leggen om de logboeken schoon en gemiddeld te houden voor eenvoudigere analyse van traceringen.

  1. Exporteer de traceringen door met de rechtermuisknop op Traceren te klikken en Alle gebeurtenissen opslaan als... te selecteren.

  2. Selecteer .xml of .csv typ Opslaan als.

    Notitie

    U kunt desgewenst andere vertrouwde indelingen .EVTX kiezen.

  3. Kies de gewenste taal van het traceringsbestand.

  4. U kunt er ook voor kiezen om de operationele WMI-Activity-gebeurtenissen afzonderlijk op te slaan, in de gewenste indeling die u kunt controleren en analyseren.

Controleer de WMI-traceringsbestanden

Binnen de WMI-tracering zijn er meerdere belangrijke bewerkingen opgenomen, die allemaal deel uitmaken van binnenkomende WMI-query's. De bewerkingen worden beschreven in de IWbemServices-interface (wbemcli.h).

Enkele belangrijke bewerkingen zijn:

  • IWbemServices::ExecQuery methode (wbemcli.h)
  • IWbemServices::ExecMethod methode (wbemcli.h)
  • IWbemServices::ExecQueryAsync methode (wbemcli.h)

Hier volgt een van de logboekvermeldingen uit het CSV-bestand WMI-tracering dat is opgeslagen:

Niveau Datum en tijd Bron Gebeurtenis-id Taakcategorie Beschrijving
Informatie 05-05-23 14:48 Microsoft-Windows-WMI-Activity 11 Geen CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30693; OperationId = 30694; Operation = Start IWbemServices::ExecQuery - root\cimv2: select * in Win32_Product; ClientMachine = 21H2W10M; Gebruiker = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520

Een vergelijkbare gebeurtenis in XML-indeling ziet er als volgt uit:

 <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
<System> 
<Provider Name="Microsoft-Windows-WMI-Activity" Guid="{1418ef04-b0b4-4623-bf7e-d74ab47bbdaa}"/> 
<EventID>11</EventID> 
<Version>0</Version> 
<Level>4</Level> 
<Task>0</Task> 
<Opcode>0</Opcode> 
<Keywords>0x8000000000000000</Keywords> 
<TimeCreated SystemTime="2023-05-05T13:09:18.7442455Z"/> 
<EventRecordID>112</EventRecordID> 
<Correlation ActivityID="{eddc1bfb-0000-0000-0000-18b6cabf5949}"/> 
<Execution ProcessID="2752" ThreadID="4132"/> 
<Channel>Microsoft-Windows-WMI-Activity/Trace</Channel> 
<Computer>21H2W10M.contoso.com</Computer> 
<Security UserID="S-1-5-18"/> 
</System> 
<UserData> 
<Operation_New xmlns="http://manifests.microsoft.com/win/2006/windows/WMI"> 
<CorrelationId>{345E5566-0000-0000-0000-67343241D901}</CorrelationId> 
<GroupOperationId>28089</GroupOperationId> 
<OperationId>28090</OperationId> 
<Operation>Start IWbemServices::ExecQuery - root\cimv2 : select * from Win32_Product</Operation> 
<ClientMachine>21H2W10M</ClientMachine> 
<ClientMachineFQDN>21H2W10M.contoso.com</ClientMachineFQDN> 
<User>CONTOSO\<UserName></User> 
<ClientProcessId>5484</ClientProcessId> 
<ClientProcessCreationTime>133277000000783520</ClientProcessCreationTime> 
<NamespaceName>\\.\root\cimv2</NamespaceName> 
<IsLocal>true</IsLocal> 
</Operation_New> 
</UserData> 
<RenderingInfo Culture="en-US"> 
<Message>CorrelationId = {345E5566-0000-0000-0000-67343241D901}; GroupOperationId = 28089; OperationId = 28090; Operation = Start IWbemServices::ExecQuery - root\cimv2 : select * from Win32_Product; ClientMachine = 21H2W10M; User = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520</Message> 
<Level>Information</Level> 
<Task/> 
<Opcode>Info</Opcode> 
<Channel/> 
<Provider>Microsoft-Windows-WMI-Activity</Provider> 
<Keywords/> 
</RenderingInfo> 
</Event> 

In de uitvoer van de bovenstaande voorbeeldbewerking kunt u de volgende informatie ophalen en begrijpen:

  • Er is een query gestart op: 2023-05-05 om 13:09:18
  • Op machine: 21H2W10M,
  • Vanaf een client-PID: 5484
  • Bewerkings-id: 28089
  • Vraag: select * from Win32_Product
  • Naamruimte: \\.\root\cimv2
  • Operatie: IWbemServices::ExecQuery

Hier volgt nog een logboek:

Niveau Datum en tijd Bron Gebeurtenis-id Taakcategorie Beschrijving
Informatie 05-05-23 14:47 Microsoft-Windows-WMI-Activity 12 Geen ProviderInfo voor GroupOperationId = 30641; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER: Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Pad = %systemroot%\system32\wbem\ntevt.dll

Dezelfde gebeurtenis in XML-indeling:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
<System> 
<Provider Name="Microsoft-Windows-WMI-Activity" Guid="{1418ef04-b0b4-4623-bf7e-d74ab47bbdaa}"/> 
<EventID>12</EventID> 
<Version>0</Version> 
<Level>4</Level> 
<Task>0</Task> 
<Opcode>0</Opcode> 
<Keywords>0x8000000000000000</Keywords> 
<TimeCreated SystemTime="2023-05-05T13:09:18.8438242Z"/> 
<EventRecordID>120</EventRecordID> 
<Correlation ActivityID="{2a353ead-0000-0000-0000-256f9de5fabd}"/> 
<Execution ProcessID="2752" ThreadID="4348"/> 
<Channel>Microsoft-Windows-WMI-Activity/Trace</Channel> 
<Computer>21H2W10M.contoso.com</Computer> 
<Security UserID="S-1-5-21-0000000000-0000000000-00000000-1103"/> 
</System> 
<UserData> 
<Operation_Provider_Info_New xmlns="http://manifests.microsoft.com/win/2006/windows/WMI"> 
<GroupOperationId>28096</GroupOperationId> 
<Operation>Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent</Operation> 
<HostId>556</HostId> 
<ProviderName>MS_NT_EVENTLOG_PROVIDER</ProviderName> 
<ProviderGuid>{FD4F53E0-65DC-11d1-AB64-00C04FD9159E}</ProviderGuid> 
<Path>%systemroot%\system32\wbem\ntevt.dll</Path> 
</Operation_Provider_Info_New> 
</UserData> 
<RenderingInfo Culture="en-US"> 
<Message>ProviderInfo for GroupOperationId = 28096; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Path = %systemroot%\system32\wbem\ntevt.dll</Message> 
<Level>Information</Level> 
<Task/> 
<Opcode>Info</Opcode> 
<Channel/> 
<Provider>Microsoft-Windows-WMI-Activity</Provider> 
<Keywords/> 
</RenderingInfo> 
</Event> 

In de uitvoer van de bewerking van het tweede voorbeeld kunt u de volgende informatie ophalen en begrijpen:

  • Bewerking CreateInstanceEnum wordt gestart namens de gebruiker met SID: UserID="S-1-5-21-000000000000-000000000000000-00000000-1103"
  • Op 2023-05-05 om 13:09 uur
  • Exacte bewerking: Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent
  • Host-id: 556
  • Providernaam: MS_NT_EVENTLOG_PROVIDER
  • Pad provider: %systemroot%\system32\wbem\ntevt.dll

Zoek de client-PID's die een hoog CPU-gebruik veroorzaken

Het idee van het controleren van dit logboekbestand is het weergeven van de bewerkingen die zijn gekoppeld aan de geïdentificeerde WmiPrvse.exe PID die een hoog CPU-gebruik verbruikt, inzicht in de binnenkomende query's en wie deze initieert (het clientproces).

In het bovenstaande voorbeeld is het de PID 552 die een hoog CPU-gebruik veroorzaakt.

In het tweede voorbeeld van de logboekuitvoer wordt de bewerking CreateInstanceEnum geïnitieerd voor specifieke WMI-klasse Win32_NTLogEvent.

Zie Win32_NTLogEvent voor meer informatie, waaronder de WMI-providergegevens die zijn gekoppeld aan de WMI-klasse.

U weet nu de exacte WMI-provider die wordt gehost (MS_NT_EVENTLOG_PROVIDER) in de WmiPrvse.exe die een hoog CPU-gebruik, de host-id (552) en de WMI-klasse (Win32_NTLogEvent) veroorzaakt die door een bepaald clientproces wordt opgevraagd.

Afhankelijk van het hulpprogramma dat u gebruikt om de traceringsbestanden te controleren, kunt u de benodigde filters toepassen om alleen de bewerkingen te controleren die betrekking hebben Win32_NTLogEvent op of WmiPrvse.exe PID 552 of host-id 552 of ntevt.dll.

Met het filter worden alleen de regels of bewerkingen weergegeven die 'Win32_NTLogEvent' bevatten, zijn de resultaten:

Niveau Bron Gebeurtenis-id Beschrijving
Informatie Microsoft-Windows-WMI-Activity 11 CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30641; OperationId = 30642; Operation = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent; ClientMachine = 21H2W10M; Gebruiker = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Gegevens Microsoft-Windows-WMI-Activity 12 ProviderInfo voor GroupOperationId = 30641; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER: Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Pad = %systemroot%\system32\wbem\ntevt.dll
Gegevens Microsoft-Windows-WMI-Activity 11 CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30697; OperationId = 30698; Operation = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent; ClientMachine = 21H2W10M; Gebruiker = CONTOSO\<UserName>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Gegevens Microsoft-Windows-WMI-Activity 12 ProviderInfo voor GroupOperationId = 30697; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER: Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Pad = %systemroot%\system32\wbem\ntevt.dll

Via de bovenstaande bewerkingen kunt u de volgende aanvullende informatie krijgen:

  • Tijdstempel
  • Bewerkings-id: 30642;
  • De exacte bewerking = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent;
  • Clientcomputer = 21H2W10M
  • Gebruiker = CONTOSO\<UserName>
  • PID van client die de query heeft geïnitieerd: 5484

Ten slotte hebt u de PID van een clientproces 5484, dat een query initieert.Win32_NTLogEvent Dat wordt verwerkt door provider MS_NT_EVENTLOG_PROVIDER en gehost onder WmiPrvse.exe PID 552, wat een hoog CPU-gebruik veroorzaakt.

Zodra u de client-PID's hebt beperkt, gebruikt u een van de volgende hulpprogramma's om de procesnaam te vinden.

Meer informatie over WmiMon

WMImon.exe is een krachtig bewakingsprogramma waarmee systeem gebeurtenissen en het resourcegebruik van de WMI-service kunnen worden bijgehouden en bewaakt.

Het dient de belangrijke functie van het identificeren van de WMI-aanroepen en query's die door andere processen zijn gedaan, evenals het verstrekken van informatie over de queryfrequentie, het gebruikersaccount dat wordt gebruikt voor de query's en de aangevraagde informatie.

Deze gegevens kunnen nuttig zijn voor systeembeheerders die prestatieproblemen moeten oplossen.

Als u deze gegevens wilt verzamelen en analyseren, kunt u de stapsgewijze instructies volgen:

  1. Identificeer de PID van de WmiPrvSE.exe die het CPU-gebruik verbruikt met behulp van de hierboven beschreven methoden.
  2. Download het hulpprogramma WMIMon.exe van GitHub - luctalpe/WMIMon. Het hulpprogramma is het bewaken van WMI-activiteiten in Windows.
  3. Pak de inhoud van het bestand WMIMon_Binaries.zip uit naar een map op uw computer.
  4. Open een opdrachtprompt als beheerder en ga naar de map waarin u de WMIMon-bestanden hebt uitgepakt.
  5. Voer het WMIMon.exe bestand uit door de opdrachtprompt in te voeren WMIMon.exe en op Enter te drukken.
  6. WMIMon begint nu met het bewaken van de WMI-aanroepen die door processen op het systeem worden uitgevoerd, inclusief de aanroep die in stap 1 is geïdentificeerd.
  7. WMIMon geeft informatie weer, zoals de clientproces-id, de WMI-naamruimte die wordt aangeroepen door de bewerking, de WMI-klassenaam en het gebruikersaccount dat wordt gebruikt om de aanvraag te maken.
  8. Analyseer de uitvoer van WMIMon om te bepalen welke processen vaak WMI-aanroepen maken en mogelijk een hoog CPU-gebruik veroorzaken.

Door deze stappen te volgen, kunt u effectief WMIMon.exe gebruiken om WMI-activiteit op uw systeem te bewaken en prestatie- of beveiligingsproblemen te identificeren die worden veroorzaakt door overmatig WMI-gebruik.

Hier volgt een voorbeeld:

Schermopname van de gegevens die zijn vastgelegd door WMIMon.

Notitie

U kunt de gegevens die door WMIMon zijn vastgelegd, exporteren naar een tekstbestand door de WMIMon.exe > Data.txt opdracht uit te voeren in de opdrachtprompt. Druk op Ctrl + C om de gegevensopname te stoppen.

Er kunnen lastige situaties zijn waarbij het beperken van een specifieke client-PID, toepassing of EXE onmogelijk is. In dergelijke gevallen kan het nuttig zijn om een gemeenschappelijke entiteit, zoals een gebruikersnaam of computer die is gekoppeld, te overwegen.

Dat wil weten of de gebruiker die de query initieert een serviceaccount is of is gekoppeld aan een specifieke toepassing.

Andere oplossingen

Zodra u de verdachte hebt voltooid, kunt u overwegen om de service tijdelijk uit te schakelen of de bijbehorende toepassing te verwijderen en te controleren of het probleem met hoog CPU-gebruik wordt opgelost.

Hier volgen enkele scenario's waarin het uitschakelen van uw waarnemingen kan valideren.

  • Toepassingen en services bewaken
  • System Center Configuration Manager (SCCM) (policyhost.exe of Monitoringhost.exe)
  • Powershell.exe uitvoeren van scripts met WMI-query's
  • Elke toepassing van derden

Gegevens verzamelen

Als u hulp nodig hebt van Microsoft Ondersteuning, raden we u aan de informatie te verzamelen door de stappen te volgen die worden vermeld in Gegevens verzamelen met behulp van TSS voor problemen met de gebruikerservaring.

  1. Download TSS.zip en pak de inhoud uit.

  2. Start de tracering door de volgende cmdlet uit te voeren vanaf een PowerShell-opdrachtprompt met verhoogde bevoegdheid. Houd de tracering actief wanneer de computer een hoog CPU-probleem ondervindt of het probleem reproduceert.

    .\TSS.ps1 -UEX_WMIBase -WIN_Kernel -ETWflags 1 -WPR CPU -Perfmon UEX_WMIPrvSE -PerfIntervalSec 1 -noBasicLog
    

    Notitie

    Houd de tracering langer dan twee minuten actief. Zorg ervoor dat het probleem tijdens dit venster wordt gereproduceerd.

  3. Stop de tracering door de instructies in de PowerShell-opdrachtprompt te volgen volgens de TSS-toolset.

Het script maakt een zip-bestand met de resultaten van alle traceringen en de diagnostische gegevens. Nadat een ondersteuningsaanvraag is gemaakt, kan dit bestand worden geüpload naar de beveiligde werkruimte voor analyse.