WMI yüksek CPU kullanımı sorunlarını giderme

Bu makale, herhangi bir Windows işletim sisteminde Windows Yönetim Araçları (WMI) yüksek CPU kullanımı sorunlarını tanılamayı kapsar.

Sorunu tanımlama

Çoğu senaryoda CPU, WmiPrvse.exe işlemi tarafından kullanılır ve WMI hizmetini (Winmgmt) barındıran svchost.exe yüksek CPU kullanımı kullandığı birkaç örnek vardır.

Tam işlemi tanımlamak için Görev Yöneticisi'nin İşlemler bölmesini veya Ayrıntılar bölmesini gözden geçirin

İşlemin WmiPrvse.exe veya svchost.exe olup olmadığını belirleyin (WMI hizmeti Winmgmt'yi barındırarak) ve işlem kimliğini belirleyin.

Not

Görev Yöneticisi'ndeki tüm işlemlerin işlem kimliğini görüntülemek için PID sütununu el ile eklemeniz gerekebilir.

İşte bir örnek. Görev Yöneticisi>Ayrıntıları'na gidin, ada göre sıralayın ve yüksek CPU kullanımı kullanan WmiPrvse.exe işlemini bulun. İşlem kimliğini (PID) not edin.

Bu ekran görüntüsünde WMI Sağlayıcı Konağı'nın birden çok örneği ( WmiPrvse.exe işlemi) etkin ve CPU kullanımı olarak gösterilmektedir.

Görev yöneticisi aracılığıyla işlemi gösteren ekran görüntüsü.

Bu ekran görüntüsünde Hizmetler Konağı: Windows Yönetim Araçları (Winmgmt hizmetini barındıransvchost.exe ) ve CPU kullanımı gösterilmektedir.

Görev yöneticisi aracılığıyla ayrıntıları gösteren ekran görüntüsü.

Görev Yöneticisi>Hizmetleri'ne gidin, Ada göre sıralayın ve Winmgmt hizmetini bulun. PID'yi not edin. Hizmete sağ tıklayın ve ayrıntılara git'i seçerek svchost.exe işlemini aşağıdaki gibi bulun:

Görev yöneticisi aracılığıyla hizmetleri gösteren ekran görüntüsü.

Örnekte, üç WmiPrvse.exe örneğinden, CPU kullanımının yaklaşık %25'ini tüketen PID 3648 bulunur. Winmgmt, PID 2752 ile svchost.exe işlemi altında barındırılır.

CPU tüketimini anlama

Bu, temel olarak genel CPU tüketimini ve tanımlanan PID'yi gözlemlemektedir. CPU tüketiminin ne zaman, nasıl ve sıklığına dikkat etmek önemlidir.

Belirli bir süre içinde CPU tüketiminin yüksek olup olmadığını anlayarak durumu değerlendirin. Belirli görevleri veya hizmetleri etkin çalıştırma, izleme uygulamalarını çalıştırma veya WmiPrvse.exe veya Winmgmt yüksek CPU'ya yol açan betikleri çalıştırma gibi herhangi bir etkinlik olup olmadığını denetleyin.

Cpu kullanımının tutarlı, tutarsız, rastgele, düzensiz veya düzenli ani artışlar olduğu anlamına gelen bir desen olup olmadığını anlayın.

CPU tüketiminin sıklığını belirleyin. Bunun yalnızca üretim saatlerinde mi, iş dışı saatlerde mi yoksa günün rastgele saatinde mi gerçekleştiğini denetleyin. Kullanıcı oturum açma veya oturumu kapatma gibi belirli bir etkinlik sırasında da oluşabilir.

Görev Yöneticisi'ni kullanabilir ve CPU kullanım deseninin nasıl olduğunu görsel olarak not alabilirsiniz.

Aşağıda, tanımladığınız PID ileWmiPrvse.exetam örneklerini tanımlamak için Performans İzleyicisi (Perfmon) aracının nasıl kullanılacağını gösteren bir örnek verilmiştir. Ayrıca herhangi bir işlemin CPU tüketiminin grafik görünümünü de alabilirsiniz (WmiPrvse.exe veya WMI hizmetini barındıran svchost.exe ).

  1. Yükseltilmiş bir komut istemi açın ve Perfmon girin.

  2. Sol bölmede Performans İzleyicisi seçin ve sağ bölmedeki artı işaretini (+) seçerek Sayaç Ekle penceresini açın.

  3. İşlem'i genişletin ve Kimlik İşlemi'ne tıklayın. Tüm WmiPrvse# örneklerini ve ardından Tamam Ekle'yi> seçin.

    Kimlik İşlemi sayaçlarının nasıl ekleneceğini gösteren ekran görüntüsü.

    Kimlik İşlemi sayaçlarının ayrıntılarını gösteren ekran görüntüsü.

  4. Sayaç Ekle penceresinde İşlem'i genişletin ve %İşlemci Zamanı'nı seçin. Yüksek CPU kullanımı kullanan PID ile eşleşen WmiPrvse# öğesini ve ardından Tamam Ekle'yi> seçin.

    %İşlemci Zamanı sayaçlarının nasıl ekleneceğini gösteren ekran görüntüsü.

    %İşlemci Zamanı sayaçlarının ayrıntılarını gösteren ekran görüntüsü.

  5. "Kimlik İşlemi" sayacı için Last, Average, Minimum ve Maximum değerlerinin tümü ilgili WmiPrvse.exe işleminin PID'sini temsil eder. Yüksek CPU kullanımı kullanan tam örneği belirledikten sonra, Delete tuşuna basarak wmiprvse# örneklerinin kalan örneklerini listeden kaldırabilirsiniz.

Örnekte, WmiPrvse.exe PID 556'nın yüksek CPU kullanımına sahip olduğu ve Performans İzleyicisi'da PID 556 ile eşleşen WmiPrvse#1 olduğu belirtilmektedir.

Ardından bu işlemin CPU kullanımının canlı grafik görünümünü görmek için %Processor Time of WmiPrvse#1 sayacı eklenir. Örnekte WmiPrvse#1 öğesinin %processor time rengi sarıdan kırmızıya değiştirildi.

Wmimgmt hizmetini barındıransvchost.exeyüksek CPU kullanımı durumunda Performans İzleyicisi doğru svchost# dosyasını bulmak için adımlar aynıdır.

WMI hizmetini barındıran birsvchost.exe işleminin yüksek CPU kullanımına neden olduğunu ve WMI'nın soruna katkıda bulunduğunu düşünüyorsanız, aşağıdaki komutu çalıştırarak svchost.exe işleminin PID'sinin WMI hizmetini barındırıp barındırmadığını onaylayabilirsiniz:

tasklist /svc /fi "Services eq Winmgmt"

svchost.exe işlemi birden çok hizmet içeriyorsa, aşağıdaki adımları izleyerek WMI hizmetini kendi svchost.exe işlemine ayırabilirsiniz:

  1. Yükseltilmiş ayrıcalıklara sahip yükseltilmiş bir komut istemi açın.

  2. Aşağıdaki komutu çalıştırın:

    sc config Winmgmt type= own
    
  3. WMI hizmetini yeniden başlatın.

Hizmeti yeniden başlattıktan sonra, Winmgmt hizmetinin kendi svchost.exe işlemi altında çalıştırılıp çalıştırılamadığını denetlemek için komutunu çalıştırabilirsinizTasklist /svc.

Sorunu çözdükten veya hizmetin artık kendi svchost.exe sürecinde olmasını gerektirmedikten sonra, paylaşılan svchost.exe işlemine geri yerleştirebilirsiniz. Bir komut isteminden aşağıdaki komutu çalıştırıp WMI hizmetini yeniden başlatarak eylemi gerçekleştirebilirsiniz:

sc config Winmgmt type= share

tanılama WmiPrvse.exe

Şimdiye kadar yalnızca yüksek CPU kullanımı kullanan WmiPrvse.exe tam PID'sine sahipsiniz. Ardından, bu PID hakkında mümkün olduğunca fazla bilgi toplayın. Bu, durumu değerlendirmenize veya soruna neden olabilecek bir şeyi belirlemenize yardımcı olur. Diğer kaynak kullanımı hakkında bilgi toplayın veya tanımlanan WmiPrvse.exe PID tarafından barındırılan tam WMI sağlayıcısını (DLL) tanımlayın.

Bellek, tanıtıcılar, iş parçacıkları ve kullanıcı adı gibi diğer kaynak kullanımı

Yüksek CPU kullanımı sırasında bellek, tanıtıcılar, iş parçacıkları ve kullanıcı adı gibi diğer kaynak kullanımı hakkında bilgi toplayın. Görev Yöneticisi'nde Ayrıntılar sekmesini kullanabilir, tam PID'yi seçebilir ve gözden geçirebilirsiniz.

Not

Gerektiğinde ek sütunlar ekleyin.

Görev Yöneticisi'ndeki yüksek CPU kullanım hizmetini gösteren ekran görüntüsü.

Tanımlanan WmiPrvse.exe PID tarafından barındırılan TAM WMI sağlayıcısını (DLL) belirleme

İşlem Gezgini , tanımlanan PID'de barındırılan sağlayıcıları tam olarak belirlemenize yardımcı olabilir. Şu adımları izleyin:

  1. İşlem Gezgini'ni yönetici olarak çalıştırın. Tanımlanan PIDWmiPrvse.exe bulun, özelliklerine gidin ve WMI Sağlayıcıları sekmesini seçin.

  2. Aşağıdaki örnekte, WmiPrvse.exe PID 556 bulunur ve barındırıldığı tespit edilir:

    • WMI sağlayıcısı: MS_NT_EVENTLOG_PROVIDER
    • Ad alanı: root\CIMV2
    • DLL yolu: %systemroot%\system32\wbem\ntevt.dll

    WmiPrvSE.exe:556 özelliklerini gösteren ekran görüntüsü.

Çoğu durumda, birden fazla sağlayıcı yüklenmiş olabilir. Cpu'da zaman harcayan ve yüksek CPU sorunlarına neden olan sağlayıcılardan biri olabilir.

Bazen, sorun aralıklı veya seyrek oluşuyorsa, soruna neden olan WmiPrvse.exe zaman içinde sonlandırılabilir. Sorun yeniden oluştuğunda, yeni bir WmiPrvse.exe örneğindeki sağlayıcılarla aynı olabilir. Bu durumda, sağlayıcıları not aldıktan sonra, sağlayıcıyı içeren WmiPrvse.exe işleminin geçerli PID'sini göstermek için aşağıdaki cmdlet'i çalıştırın:

tasklist /m <Provider DLL>

İşte bir örnek:

tasklist /m ntevt.dll 

ntevt.dll dosyasının görev listesi çıkışını gösteren ekran görüntüsü.

Bu nedenle, WmiPrvse.exe işleminde hangi sağlayıcıların yüklendiğini anlamak ve her seferinde WmiPrvse.exe işleminin PID'sini not almak önemlidir.

yüksek CPU kullanımına neden olan WmiPrvse.exe yüklenen sağlayıcılarınız olduğunda, herhangi bir görevi işlenip işlemediğini anlayabilirsiniz.

Görevler, istemci işlemi tarafından WMI hizmetine gönderilen ve uygun WMI sağlayıcı işlemine atanan gelen WMI sorguları olabilir. Örnekte, görev sağlayıcıya MS_NT_EVENTLOG_PROVIDER gönderilir. Bu nedenle sonraki adım sağlayıcıya gelen sorguları ve görevleri MS_NT_EVENTLOG_PROVIDER incelemek olacaktır.

Gelen sorguları analiz etme

Gelen sorguların incelenmesi şunları içerir:

  • Yüksek CPU kullanımına neden olan WMI sağlayıcıları tarafından işlenen WMI sorgularını tanımlama.
  • WMI sınıfı sorguları.
  • İlişkili bir kullanıcı.
  • Sorguyu başlatan bir istemci işlemi.

Yukarıdaki bilgiler genel kullanıma açık WMIMon aracı veya WMI-Activity İşletim günlükleri kullanılarak toplanabilir ve Olay Görüntüleyicisi altında sağlanan WMI-Tracing.

İşletim günlükleri: Microsoft-Windows-WMI-Etkinliği/İşletimsel

Gelen sorgular, aşağıdakiler altında bulunan Microsoft-Windows-WMI-Activity/Operational günlüğünde işletimsel olaylar olarak günlüğe kaydedilir:

> Olay Görüntüleyicisi Uygulamalar ve Hizmet Günlükleri>Microsoft>Windows>WMI Etkinliği

Günlüğe kaydedilen çeşitli olay türleri vardır.

Yüksek CPU kullanan WmiPrvse.exe işlemi zaman zaman sonlandırılırsa ve hangi sağlayıcıların yüklendiğini zaten biliyorsanız, aşağıdaki olay söz konusu sağlayıcıyı barındıran etkin WmiPrvse.exe işleminin belirlenmesine yardımcı olabilir.

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

WMI izlemeyi etkinleştirmek için "Analiz ve Hata Ayıklama Günlüklerini" etkinleştirme

Olay Görüntüleyicisi'da, WMI Etkinliği için Hata Ayıklama ve İzleme'yi etkinleştirmek içinAnaliz ve Hata Ayıklama GünlükleriniGöster'i> seçin.

Olay Görüntüleyicisi'da İşlem'i gösteren ekran görüntüsü.

Hata Ayıklama ve İzleme varsayılan olarak devre dışı bırakılır ve her biri İzleme veya Hata Ayıkla'ya sağ tıklayıp Günlüğü Etkinleştir'i seçerek el ile etkinleştirilebilir.

Not

Analiz ve Hata Ayıklama Günlüklerini Göster'in etkinleştirilmesi, neredeyse tüm olay kaynakları için hata ayıklama ve izlemeyi etkinleştirir ve ek günlük kaydı oluşturur. Bu nedenle araştırma tamamlandıktan sonra bu devre dışı bırakılmalıdır ve artık kullanımda olmayacaktır.

bu izleme ,WmiPrvse.exe işlemi tarafından yüksek CPU tüketimini gözlemlerken veya izlemelerin daha kolay çözümlenmesi için günlükleri temiz ve orta ölçekli tutmak için yüksek CPU kullanımının davranışını yakalayacak kadar uzun süre etkin tutulabilir.

  1. İzleme'ye sağ tıklayıp Tüm Olayları Farklı Kaydet... seçeneğini belirleyerek izlemeleri dışarı aktarın.

  2. Kayıt türü'nü seçin .xml veya .csv yazın.

    Not

    Gerektiği gibi .EVTX diğer tanıdık biçimleri seçebilirsiniz.

  3. İzleme dosyasının istenen dilini seçin.

  4. WMI-Activity İşlem olaylarını ayrıca gözden geçirmeniz ve analiz etmenizi istediğiniz biçimde kaydetmeyi seçebilirsiniz.

WMI izleme dosyalarını gözden geçirme

WMI izlemesinde, gelen WMI sorgularının bir parçası olan birden çok önemli işlem vardır. İşlemler IWbemServices arabiriminde (wbemcli.h) belgelenmiştir.

Önemli işlemlerden bazıları şunlardır:

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

Kaydedilen WMI-Tracing CSV dosyasındaki günlük girdilerinden biri aşağıdadır:

Düzey Tarih ve saat Kaynak Olay Kimliği Görev kategorisi Açıklama
Bilgi 05-05-23 14:48 Microsoft-Windows-WMI-Etkinliği 11 Yok CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30693; OperationId = 30694; İşlem = Start IWbemServices::ExecQuery - root\cimv2 : select * from Win32_Product; ClientMachine = 21H2W10M; Kullanıcı = CONTOSO\<KullanıcıAdı>; ClientProcessId = 5484; NamespaceName = 133277000000783520

XML biçiminde benzer bir olay şöyle görünür:

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

Yukarıdaki örnek işlem çıkışından aşağıdaki bilgileri alabilir ve anlayabilirsiniz:

  • Şu saatte bir sorgu başlatıldı: 2023-05-05, 13:09:18
  • Makinede: 21H2W10M,
  • İstemci PID'sinden: 5484
  • İşlem Kimliği: 28089
  • Sorgu: select * from Win32_Product
  • Ad alanı: \\.\root\cimv2
  • Işlem: IWbemServices::ExecQuery

Başka bir günlük aşağıdadır:

Düzey Tarih ve saat Kaynak Olay Kimliği Görev kategorisi Açıklama
Bilgi 05-05-23 14:47 Microsoft-Windows-WMI-Etkinliği 12 Yok GroupOperationId = 30641 için ProviderInfo; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Yol = %systemroot%\system32\wbem\ntevt.dll

XML biçiminde aynı olay:

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

İkinci örneğin işlem çıkışından aşağıdaki bilgileri alabilir ve anlayabilirsiniz:

  • CreateInstanceEnum işlemi KULLANıCı adına SID ile başlatıldı: UserID="S-1-5-21-0000000000-0000000000-000000000-1103"
  • On 2023-05-05 at 13:09
  • Tam işlem: Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent
  • Ana Bilgisayar Kimliği: 556
  • Sağlayıcı adı: MS_NT_EVENTLOG_PROVIDER
  • Sağlayıcı yolu: %systemroot%\system32\wbem\ntevt.dll

Yüksek CPU kullanımına neden olan istemci PID'lerini bulma

Bu günlük dosyasını gözden geçirmenin amacı, yüksek CPU kullanımı kullanan tanımlanan WmiPrvse.exe PID ile ilişkili işlemleri listelemek, gelen sorguları anlamak ve bunları kimin başlatdığını (istemci işlemi) bulmaktır.

Yukarıda ele alınan örnekte yüksek CPU kullanımına neden olan PID 552'dir.

Günlük çıkışının ikinci örneğinden CreateInstanceEnum işlemi belirli WMI sınıfı Win32_NTLogEventiçin başlatılır.

Daha fazla bilgi için bkz. WMI sınıfıyla ilişkili WMI sağlayıcısı ayrıntılarını içeren Win32_NTLogEvent.

Artık yüksek CPU kullanımına neden olan WmiPrvse.exe barındırılan WMIMS_NT_EVENTLOG_PROVIDER sağlayıcısını (), bazı istemci işlemleri tarafından sorgulanan ana bilgisayar kimliğini (552) ve WMI sınıfını (Win32_NTLogEvent) biliyorsunuz.

İzleme dosyalarını gözden geçirmek için kullandığınız arace bağlı olarak, yalnızca PID 552 veya Konak Kimliği 552 veyantevt.dllile ilgili Win32_NTLogEvent veya WmiPrvse.exe işlemleri gözden geçirmek için gerekli filtreleri uygulayabilirsiniz .

Filtre yalnızca "Win32_NTLogEvent" içeren satırları veya işlemleri gösterdiğinde sonuçlar şunlardır:

Düzey Kaynak Olay Kimliği Açıklama
Bilgi Microsoft-Windows-WMI-Etkinliği 11 CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30641; OperationId = 30642; İşlem = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent; ClientMachine = 21H2W10M; Kullanıcı = CONTOSO\<KullanıcıAdı>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Bilgi Microsoft-Windows-WMI-Etkinliği 12 GroupOperationId = 30641 için ProviderInfo; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Yol = %systemroot%\system32\wbem\ntevt.dll
Bilgi Microsoft-Windows-WMI-Etkinliği 11 CorrelationId = {345E5566-0000-0000-0000-68343241D901}; GroupOperationId = 30697; OperationId = 30698; İşlem = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent; ClientMachine = 21H2W10M; Kullanıcı = CONTOSO\<KullanıcıAdı>; ClientProcessId = 5484; NamespaceName = 133277000000783520
Bilgi Microsoft-Windows-WMI-Etkinliği 12 GroupOperationId = 30697 için ProviderInfo; Operation = Provider::CreateInstanceEnum - MS_NT_EVENTLOG_PROVIDER : Win32_NTLogEvent; HostID = 556; ProviderName = MS_NT_EVENTLOG_PROVIDER; ProviderGuid = {FD4F53E0-65DC-11d1-AB64-00C04FD9159E}; Yol = %systemroot%\system32\wbem\ntevt.dll

Yukarıdaki işlemlerden aşağıdaki ek bilgileri alabilirsiniz:

  • Zaman damgası
  • İşlem Kimliği: 30642;
  • Tam işlem = Start IWbemServices::CreateInstanceEnum - root\cimv2 : Win32_NTLogEvent;
  • İstemci Makinesi = 21H2W10M
  • Kullanıcı = CONTOSO\<KullanıcıAdı>
  • Sorguyu başlatan İstemci PID'i: 5484

Son olarak, 5484 istemci işleminin PID'sine sahipsiniz ve bu işlem için Win32_NTLogEventbir sorgu başlatıyor. Bu, sağlayıcı MS_NT_EVENTLOG_PROVIDER tarafından işlenir ve yüksek CPU kullanımına neden olan WmiPrvse.exe PID 552 altında barındırılır.

İstemci PID'lerini daraltdıktan sonra işlem adını bulmak için aşağıdaki araçlardan birini kullanın.

WmiMon hakkında daha fazla bilgi

WMImon.exe , sistem olaylarının izlenmesine ve izlenmesine ve WMI hizmetinin kaynak kullanımına olanak tanıyan güçlü bir izleme aracıdır.

Diğer işlemler tarafından yapılan WMI çağrılarını ve sorgularını tanımlamanın yanı sıra sorgu sıklığı, sorgular için kullanılan kullanıcı hesabı ve istenen bilgiler hakkında bilgi sağlamanın önemli işlevine hizmet eder.

Bu veriler, performans sorunlarını gidermesi gereken sistem yöneticileri için yararlı olabilir.

Bu verileri toplamak ve analiz etmek için adım adım yönergeleri izleyebilirsiniz:

  1. Yukarıda açıklanan yöntemleri kullanarak CPU kullanımını kullanan WmiPrvSE.exe PID'sini tanımlayın.
  2. github - luctalpe/WMIMon'danWMIMon.exe aracını indirin. Araç, Windows'ta WMI etkinliğini izlemektir.
  3. WMIMon_Binaries.zip dosyasının içeriğini bilgisayarınızdaki bir klasöre ayıklayın.
  4. Yönetici olarak bir komut istemi açın ve WMIMon dosyalarını ayıkladığınız klasöre gidin.
  5. Komut istemine girip WMIMon.exeEnter tuşuna basarakWMIMon.exedosyasını yürütebilirsiniz.
  6. WMIMon, 1. adımda tanımlanan da dahil olmak üzere sistemdeki işlemler tarafından yapılan WMI çağrılarını izlemeye başlayacaktır.
  7. WMIMon, istemci işlem kimliği, işlem tarafından çağrılan WMI ad alanı, WMI sınıf adı ve isteği yapmak için kullanılan kullanıcı hesabı gibi bilgileri görüntüler.
  8. Hangi işlemlerin sık WMI çağrıları yaptığını ve yüksek CPU kullanımına neden olduğunu belirlemek için WMIMon çıkışını analiz edin.

Bu adımları izleyerek, sisteminizdeki WMI etkinliğini izlemek ve aşırı WMI kullanımının neden olduğu performans veya güvenlik sorunlarını belirlemek içinWMIMon.exeetkili bir şekilde kullanabilirsiniz.

İşte bir örnek:

WMIMon tarafından yakalanan verileri gösteren ekran görüntüsü.

Not

KOMUT isteminde komutunu yürüterek WMIMon.exe > Data.txt WMIMon tarafından yakalanan verileri bir metin dosyasına aktarabilirsiniz. Veri yakalamayı durdurmak için CtrlCtuşlarına + basın.

Belirli bir istemci PID, uygulama veya EXE'yi daraltma işleminin imkansız olduğu karmaşık durumlar olabilir. Bu gibi durumlarda, kullanıcı adı veya makine gibi ortak bir varlığın ilişkilendirilmiş olması yararlı olabilir.

Başka bir ifadeyle, sorguyu başlatan kullanıcının bir hizmet hesabı mı yoksa belirli bir uygulamayla ilişkili mi olduğunu anlayın.

Diğer çözümler

Şüpheliyi sonlandırdıktan sonra, hizmetini geçici olarak devre dışı bırakmayı veya onunla ilişkili uygulamayı kaldırmayı ve yüksek CPU kullanımı sorununun çözülip çözülmediğini denetlemeyi düşünebilirsiniz.

Burada, devre dışı bırakıldığında gözlemlerinizin doğrulanabileceği bazı senaryolar yer alır.

  • Uygulamaları ve hizmetleri izleme
  • System center configuration manager (SCCM) (policyhost.exe veya Monitoringhost.exe)
  • WMI sorguları içeren betikleri çalıştırma Powershell.exe
  • Herhangi bir üçüncü taraf uygulaması

Veri toplama

Microsoft desteğinden yardıma ihtiyacınız varsa, Kullanıcı Deneyimi sorunları için TSS kullanarak bilgi toplama bölümünde belirtilen adımları izleyerek bilgileri toplamanızı öneririz.

Ayrıca WMI-Collect aracını kullanarak da bilgi toplayabilirsiniz. Adımlar şunlardır:

  1. WMI-Collect.zip indirin ve C:\temp gibi bir klasörde ayıklayın.

  2. Yükseltilmiş bir PowerShell komut isteminden, betiğin kaydedildiği klasörden WMI-Collect.ps1 betiğini çalıştırın. Örneğin:

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

    Not

    • "Yakalamayı durdurmak için ENTER tuşuna basın:" iletisiyle PowerShell komut istemini açık tutun ve WmiPrvse.exe işleminin veya WMI hizmetinin yüksek CPU kullanımı sorununun yeniden üretildiğinden emin olun.
    • İzlemeyi bir dakikadan uzun süre etkin tutmayın.
  3. Enter tuşuna basarak izlemeyi durdurun.

Betik, tüm izlemelerin sonuçlarını ve tanılama bilgilerini içeren bir alt klasör oluşturur. Klasörü sıkıştırın. Destek olayı oluşturulduktan sonra bu dosya analiz için güvenli çalışma alanına yüklenebilir.