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.
In deze schermopname ziet u Services Host: Windows Management Instrumentation (svchost.exe waarop de Winmgmt-service wordt gehost) en het CPU-gebruik.
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:
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).
Open een opdrachtprompt met verhoogde bevoegdheid en voer Perfmon in.
Selecteer Prestatiemeter in het linkerdeelvenster en selecteer het plusteken (+) in het rechterdeelvenster om het venster Tellers toevoegen te openen .
Vouw Proces uit en selecteer Id-proces. Selecteer alle WmiPrvse#-exemplaren en selecteer vervolgens OK toevoegen>.
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.
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:
Open een opdrachtprompt met verhoogde bevoegdheden.
Voer de volgende opdracht uit:
sc config Winmgmt type= own
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.
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:
Voer Process Explorer uit als beheerder. Zoek de geïdentificeerde WmiPrvse.exe PID, ga naar de eigenschappen en selecteer het tabblad WMI-providers .
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
- WMI-provider:
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
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.
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.
Exporteer de traceringen door met de rechtermuisknop op Traceren te klikken en Alle gebeurtenissen opslaan als... te selecteren.
Selecteer
.xml
of.csv
in Opslaan als type.Opmerking
U kunt desgewenst andere vertrouwde indelingen
.EVTX
kiezen.Kies de gewenste taal van het traceringsbestand.
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:
- Identificeer de PID van de WmiPrvSE.exe die het CPU-gebruik verbruikt met behulp van de hierboven beschreven methoden.
- Download het hulpprogrammaWMIMon.exe van GitHub - luctalpe/WMIMon. Het hulpprogramma is om WMI-activiteit in Windows te bewaken.
- Pak de inhoud van het WMIMon_Binaries.zip-bestand uit in een map op uw computer.
- Open een opdrachtprompt als beheerder en ga naar de map waarin u de WMIMon-bestanden hebt uitgepakt.
- Voer het WMIMon.exe-bestand uit door de opdrachtprompt in te voeren
WMIMon.exe
en op Enter te drukken. - 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.
- 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.
- 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:
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:
Download WMI-Collect.zip en pak het uit in een map, zoals C:\temp.
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.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor