Problemen met hoog CPU-gebruik van WMI oplossen

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

Het probleem identificeren

In de meeste scenario's wordt de CPU verbruikt door het WmiPrvse.exe proces en zijn er enkele 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 isWmiPrvse.exe of svchost.exe (host van de WMI-service Winmgmt) en identificeer de proces-id.

Opmerking

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

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

Deze schermopname toont 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 waarop de Winmgmt-service wordt gehost) en het CPU-gebruik.

Schermopname van de details via taakbeheer.

Ga naar Taakbeheerservices>, 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 op 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 noteren wanneer, hoe en de frequentie van het CPU-verbruik.

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

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

Bepaal de frequentie van het CPU-verbruik. Controleer of dit alleen gebeurt tijdens productieuren, buiten kantooruren of een willekeurig tijdstip van de dag. Dit kan ook gebeuren 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 dat laat zien hoe u het hulpprogramma Prestatiemeter (Perfmon) gebruikt om de exacte exemplaren van WmiPrvse.exe te identificeren met de PID die u hebt geïdentificeerd. U kunt ook een grafische weergave krijgen van het CPU-verbruik van een proces (WmiPrvse.exe of svchost.exe hosting 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 die laat zien hoe u id-procestellers toevoegt.

    Schermopname van de details van de id-procestellers.

  4. Vouw in het venster Tellers toevoegende optie Proces uit en selecteer %Processortijd. Selecteer de WmiPrvse# die overeenkomt met de PID die hoog CPU-gebruik verbruikt en selecteer vervolgens Toevoegen>OK.

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

    Schermopname van de details van de %Processor Time-tellers.

  5. Voor de teller 'ID-proces' vertegenwoordigen de laatste, gemiddelde, minimum en maximum alle de PID van het respectieve WmiPrvse.exe proces. Zodra u het exacte exemplaar hebt geïdentificeerd dat 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 een hoog CPU-gebruik verbruikte en dat WmiPrvse#1 overeenkomt met PID 556 in Prestatiemeter.

Vervolgens wordt de teller %Processortijd 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 hoog CPU-gebruik door svchost.exe de Wmimgmt-service te hosten.

Als u ziet 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 gestart, 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 niet langer vereist dat de service zich in een eigen svchost.exe proces bevindt, kunt u deze 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

Diagnose WmiPrvse.exe

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 bij 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 PID geïdentificeerd.

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 deze controleren.

Opmerking

Voeg indien nodig extra kolommen toe.

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

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

Process Explorer kan u helpen bij het identificeren van de exacte providers die worden gehost in de geïdentificeerde PID. Volg 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 wordt als host beschouwd:

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

    Schermopname van de eigenschappen WmiPrvSE.exe:556.

In de meeste gevallen kan er meer dan één provider zijn geladen. Het kan een van de providers zijn die tijd in de CPU doorbrengen, waardoor problemen met een hoog CPU-gebruik worden veroorzaakt.

Soms, als het probleem onregelmatig of onregelmatig is, kan de WmiPrvse.exe die het probleem veroorzaakt, na verloop van tijd worden beëindigd. Wanneer het probleem zich opnieuw voordoet, zijn het mogelijk dezelfde provider(s) in een nieuw WmiPrvse.exe exemplaar. In deze situatie voert u, zodra u de provider(s) hebt genoteerd, de volgende cmdlet uit om de huidige PID weer te geven van het WmiPrvse.exe proces dat die provider bevat:

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 te maken van de PID van het WmiPrvse.exe proces.

Zodra u de provider(s) hebt die zijn geladen in de WmiPrvse.exe die een hoog CPU-gebruik veroorzaken, kunt u begrijpen of het taken uitvoert.

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 voor de MS_NT_EVENTLOG_PROVIDER provider.

De binnenkomende query's analyseren

Het onderzoeken van binnenkomende query's omvat:

  • WMI-query('s) identificeren die worden verwerkt door WMI-providers die een hoog CPU-gebruik veroorzaken.
  • WMI-klasse(es) query's.
  • Een gekoppelde gebruiker.
  • Een clientproces waarmee de query wordt gestart.

De bovenstaande informatie kan worden verzameld met behulp van het openbaar beschikbare hulpprogramma 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 logboek Microsoft-Windows-WMI-Activity/Operational, dat beschikbaar is onder:

> Logboeken Toepassings- en serviceslogboeken>Microsoft>Windows>WMI-Activity

Er zijn verschillende soorten gebeurtenissen vastgelegd.

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

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 de WMI-tracering

Selecteer in LogboekenWeergeven>Analyse- en foutopsporingslogboeken weergeven om de foutopsporing en tracering voor WMI-activiteit in te schakelen.

Schermopname van Operationeel in Logboeken.

Foutopsporing en tracering zijn standaard uitgeschakeld en elk van hen kan handmatig worden ingeschakeld door met de rechtermuisknop op Traceren of Foutopsporing te klikken en vervolgens Logboek inschakelen te selecteren.

Opmerking

Als u Analyse- 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 zal zijn.

Deze tracering kan worden ingeschakeld terwijl u een hoog CPU-verbruik observeert door het WmiPrvse.exe proces of lang genoeg om het gedrag van hoog CPU-gebruik vast te leggen om de logboeken schoon te houden en een gemiddeld formaat 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 in Opslaan als type.

    Opmerking

    U kunt desgewenst andere vertrouwde indelingen .EVTX kiezen.

  3. Kies de gewenste taal van het traceringsbestand.

  4. U kunt ervoor kiezen om de WMI-Activity Operationele gebeurtenissen ook afzonderlijk op te slaan, in de gewenste indeling, zodat u deze kunt bekijken en analyseren.

De WMI-traceringsbestanden controleren

In 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)

Dit is een van de logboekvermeldingen uit het WMI-Tracing CSV-bestand dat is opgeslagen:

Niveau Datum en tijd Source 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; Bewerking = Start IWbemServices::ExecQuery - root\cimv2 : selecteer * in Win32_Product; ClientMachine = 21H2W10M; Gebruiker = CONTOSO\<Gebruikersnaam>; 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> 

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

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

Hier volgt nog een logboek:

Niveau Datum en tijd Source Gebeurtenis-id Taakcategorie Beschrijving
Informatie 05-05-23 14:47 Microsoft-Windows-WMI-Activity 12 Geen ProviderInfo voor GroupOperationId = 30641; Bewerking = 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> 

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

  • Bewerking CreateInstanceEnum wordt geïnitieerd namens de gebruiker met SID: UserID="S-1-5-21-00000000000-000000000-00000000-1103"
  • Op 05-05-2023 om 13:09
  • Exacte bewerking: Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent
  • Host-id: 556
  • Providernaam: MS_NT_EVENTLOG_PROVIDER
  • Providerpad: %systemroot%\system32\wbem\ntevt.dll

De client-PID's zoeken die een hoog CPU-gebruik veroorzaken

Het idee van het controleren van dit logboekbestand is om de bewerkingen weer te geven die zijn gekoppeld aan de geïdentificeerdeWmiPrvse.exe PID die een hoog CPU-gebruik verbruikt, inzicht te hebben 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 gestart voor specifieke WMI-klasse Win32_NTLogEvent.

Zie Win32_NTLogEvent voor meer informatie, met daarin 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 veroorzaakt, de host-id (552) en de WMI-klasse (Win32_NTLogEvent) die wordt opgevraagd door een clientproces.

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 op Win32_NTLogEvent of WmiPrvse.exe PID 552 of host-id 552 of ntevt.dll.

Als het filter alleen de regels of bewerkingen weergeeft die 'Win32_NTLogEvent' bevatten, zijn de resultaten:

Niveau Source Gebeurtenis-id Omschrijving
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\<Gebruikersnaam>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Informatie Microsoft-Windows-WMI-Activity 12 ProviderInfo voor GroupOperationId = 30641; Bewerking = 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
Informatie 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\<Gebruikersnaam>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Informatie Microsoft-Windows-WMI-Activity 12 ProviderInfo voor GroupOperationId = 30697; Bewerking = 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

Uit de bovenstaande bewerkingen kunt u de volgende aanvullende informatie ophalen:

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

Ten slotte hebt u de PID van een clientproces 5484, waarmee een query wordt gestart naar Win32_NTLogEvent. Dat wordt verwerkt door de 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 systeemevenementen en het resourcegebruik van de WMI-service kunnen worden bijgehouden en bewaakt.

Het dient de belangrijke functie voor het identificeren van de WMI-aanroepen en -query's die door andere processen worden uitgevoerd, evenals het verstrekken van informatie over de queryfrequentie, het gebruikersaccount dat voor de query's wordt gebruikt 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 hulpprogrammaWMIMon.exe van GitHub - luctalpe/WMIMon. Het hulpprogramma is om WMI-activiteit in Windows te bewaken.
  3. Pak de inhoud van het WMIMon_Binaries.zip-bestand uit in 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 worden gedaan door processen op het systeem, inclusief de aanroepen die in stap 1 zijn geïdentificeerd.
  7. WMIMon geeft informatie weer, zoals de proces-id van de client, de WMI-naamruimte die door de bewerking wordt aangeroepen, de WMI-klassenaam en het gebruikersaccount dat is gebruikt om de aanvraag uit te voeren.
  8. Analyseer de uitvoer van WMIMon om te bepalen welk proces(en) regelmatig WMI-aanroepen doet en mogelijk een hoog CPU-gebruik veroorzaakt.

Door deze stappen te volgen, kunt u WMIMon.exe effectief gebruiken om WMI-activiteiten 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.

Opmerking

U kunt de gegevens die met 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 overwegen van een algemene entiteit, zoals een gebruikersnaam of computer die is gekoppeld, nuttig zijn.

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 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 uw waarnemingen kan valideren.

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

Gegevensverzameling

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

U kunt ook informatie verzamelen met behulp van het hulpprogramma WMI-Collect. Dit doet u als volgt:

  1. Download WMI-Collect.zip en pak het uit in een map, zoals C:\temp.

  2. Voer vanaf een PowerShell-opdrachtprompt met verhoogde bevoegdheid hetWMI-Collect.ps1-script uit vanuit de map waarin het script is opgeslagen. Bijvoorbeeld:

    C:\temp\WMI-Collect.ps1 -Logs -Trace -Activity -Kernel -WPR -PerfMonWMIPrvSE
    

    Opmerking

    • Houd de PowerShell-opdrachtprompt geopend met het bericht 'Druk op Enter om de opname te stoppen:' en zorg ervoor dat het WmiPrvse.exe proces of het probleem met hoog CPU-gebruik van de WMI-service wordt gereproduceerd.
    • Houd tracering niet langer dan één minuut ingeschakeld.
  3. Stop de tracering door op Enter te drukken.

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