Aracılığıyla paylaş


Senaryo kılavuzu: WMI performans sorunlarını giderme

Bu makalede, Windows Yönetim Araçları (WMI) performans sorunlarını çözmek için bellek sızıntılarını incelemenin veya sızıntıları işlemenin farklı yolları ve ek bilgilerin nasıl toplandığı açıklanmaktadır.

Aşağıdaki senaryolarla veya sorunlarla karşılaşabilirsiniz:

  • Makine yavaş çalışıyor.
  • msinfo32.exe veya compmgmt.msc gibi tasklist komutları çalıştırmak veya açmak uzun sürer veya uygun sonuçları göstermez.
  • WMI'ye bağlı uygulamalar veya istemciler bilgileri getirirken veya görüntülerken sorunlarla karşılaşır veya sonunda başarısız olur.
  • WMI sorguları WBEM_E_INVALID_CLASS veya WBEM_E_NOT_FOUND gibi hatalarla başarısız olur.
  • WMI hizmeti (Winmgmt) yanıt vermiyor.
  • Makinenin toplam belleği %100'e ulaşır.

Ayrıca svchost.exe (Winmgmt hizmetini barındırma) veya WmiPrvse.exe işlemlerinden birinin yüksek bellek tüketiyor veya görev yöneticisinde herhangi bir zamanda yüksek tanıtıcı sayısına sahip olduğunu fark edeceksiniz. Makine veya Winmgmt hizmeti yeniden başlatılırsa veya sorunlu WmiPrvse.exe işlemi el ile sonlandırılırsa, yüksek bellek durumu geçici olarak giderilir. Ancak sorun bir süre sonra yeniden ortaya çıkar.

Bellek sızıntısının veya tutamaç sızıntısının olası nedenleri

WMI hizmeti veya WmiPrvse.exe işlemi belleği veya tanıtıcıları tüketiyorsa ve zaman içinde tutamaçları azaltmıyor veya serbest vermiyorsa, sırasıyla bellek sızıntısı veya işleme sızıntısı olarak kabul edilir.

Sızıntının nedeni senaryolara bağlı olarak değişir, ancak bunun nedeni genellikle:

  • Bir uygulama veya hizmet tarafından yapılan sorunlu, verimsiz veya büyük WMI sorguları.
  • Yüksek sorgu sıklığı.
  • Microsoft dışı ürünlerin müdahalesi.
  • Sorgulanan WMI sınıfıyla ilişkili nesne.

Bellek veya işleme sızıntılarını araştırmak için sorguların ayrıntılı analizi ve WMI hizmetinin veya WmiPrvse.exe işleminin hata ayıklama dökümlerinin incelenmesi gerekse de, ilk sorun giderme adımları sorunu daraltmaya veya çözmeye yardımcı olabilir.

WMI sorgusu gerçekleştirmenin yaşam döngüsü aşağıdadır:

  1. İstemci sorguyu gönderir.
  2. WMI hizmeti sorguyu belleğinde "arbitrator arabellek belleği" adlı bir görev olarak depolar.
  3. WMI hizmeti sorguyu yürütmek için uygun WMI sağlayıcısını çağırır.
  4. WMI sağlayıcısı sorgu sonuçlarını WMI hizmetine döndürür ve sonuçları arabelleğe depolar.
  5. İstemci sorgu sonuçlarını alır.
  6. Sorgu ve sonuçlar, hakem arabelleğinden serbest bırakılır.

WMI hizmeti belleği veya tanıtıcı sızıntısı oluşursa, ara sunucu arabelleği çok fazla görev veya sorgu sonucuyla doldurulabilir ve diğer sorgular için daha fazla alan bırakılamaz.

  • Windows Server 2016'dan önceki bir işletim sistemi (OS) sürümünü kullanıyorsanız, WMI hizmeti diğer hizmetlerle birlikte paylaşılan svchost.exe kapsayıcısı altında çalışır.
  • svchost.exe kapsayıcısı bellek veya tanıtıcı sızdırıyorsa, önce bu sızıntının WMI hizmetinden mi yoksa svchost.exe kapsayıcıdaki diğer hizmetlerden mi kaynaklanmadığını belirlemeniz gerekir.

Bunu belirlemek için şu adımları izleyin:

  1. komutuyla WMI hizmetini kendi svchost.exe kapsayıcısıyla yalıtın SC Config WINMGMT Type= Own .
  2. Winmgmt hizmetini yeniden başlatın.
  3. Komut, tasklist /svc her svchost.exe kapsayıcısı altında barındırılan tüm çalışan işlemlerin ve hizmetlerin listesini gösterir. Komut düzgün çalışıyorsa Winmgmt hizmetinin ayrı bir yalıtılmış svchost.exe kapsayıcısı altında çalıştığını görmeniz gerekir.
  4. Belleğini izlemeye veya kullanımı işlemeye devam edin. Zaman içinde artmaya devam ederse ve hiç azalmazsa, belleği veya tanıtıcıları sızdıran winmgmt hizmetidir. Aksi takdirde, diğer hizmet sızıntısı belleğini veya tanıtıcılarını barındıran başka bir svchost.exe kapsayıcısı görebilirsiniz.
  5. Değişiklikleri geri almak için komutunu çalıştırın SC Config WINMGMT Type= Share .

Sızıntı genellikle sorunlu istemci davranışından veya sorgular ile ilgili görev nesnelerinin düzgün yayımlanmasını engelleyen bir bağlantı sorunundan kaynaklanır.

Sorunlu bir istemcinin söz konusu olup olmadığını belirlemek için sızıntının desenini anlamanız ve belleğin belirli bir zamanda mı yoksa herhangi bir uygulamanın belirli bir eylemi sırasında mı arttığını görmek için Görev Yöneticisi'ni gözden geçirmeniz gerekir. Örneğin, Windows güncelleştirmeleri her yüklendiğinde WMI hizmeti bellek tüketimi artar.

Performans İzleyicisi (Perfmon) kullanarak herhangi bir işlemin (WMI hizmeti veya WmiPrvse.exe işlemi) bellek kullanımını veya sayısını izlemek için şu adımları izleyin:

  1. Winmgmt hizmetini içeren svchost.exe işlem kimliğine (PID) veya bellek veya tanıtıcı sızdıran WmiPrvse.exe işlemine dikkat edin.

  2. Performans İzleyicisi açmak için Çalıştır penceresine Perfmon girin.

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

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

    Tüm WmiPrvse# örneklerini ve svchost# örneklerini gösteren ekran görüntüsü.

  5. Listedeki her öğe için Last, Average ve Minimum değerlerinin aynı olduğunu ve bu işlemin PID değeri olduğunu görürsünüz.

    Aynı Last, Average ve Minimum değerine sahip öğenin işlemin PID değeri olduğunu gösteren ekran görüntüsü.

  6. Listedeki tüm öğeleri inceleyin ve Winmgmt hizmetinin PID'sini veya bellek veya tanıtıcı sızdıran WmiPrvse.exe işlemini bulun. Ardından tam svchost# veya WmiPrvse# örneğini not edin.

  7. Listedeki tüm öğeleri kaldırın.

  8. Sayaç Ekle'yi yeniden seçin ve ardından İşlem'in altında İşle Sayısı, Özel Baytlar, İş Parçacığı Sayısı ve Çalışma Kümesi'ne tıklayın.

  9. Doğru svchost# veya WmiPrvse# örneğini seçin ve Ekle'yi seçin. Bu, seçili işlemler tarafından kullanılan kaynakların grafik gösterimini gösterir.

    WmiPrvse# örneğinin seçili olduğu Sayaç Ekle penceresinin ekran görüntüsü.

  10. Bellek veya tanıtıcı sayısının belirli zaman aralıklarında mı yoksa günün belirli saatlerinde mi yoksa herhangi bir eylemle mi arttığı sonucuna varın. Sızıntı desenini anladıktan sonra, bellekteki veya tanıtıcılardaki artışla ilgili gelen sorguları analiz edin.

  11. Çok büyük, sık veya görev üzerinde çok uzun süre kalan sorguları arayın.

    Not

    Gelen sorguları gözden geçirmek, sorunlu sorgular gerçekleştirebilecek veya anormal davranabilecek bir veya daha fazla istemci işlemini belirlemektir.

  12. Şüpheli bir istemciniz olduğunda, geçici olarak kaldırıp devre dışı bırakarak ve ardından WMI hizmetini yeniden başlatarak bu istemciyi test edebilirsiniz.

Bellek sızıntısı olmazsa, sorunun nedeni tanımlanan istemci işlemidir.

Depo şişirilmiş

C:\Windows\System32\wbem\Repository altında depolanan WMI deposunun boyutunu gözden geçirin. Deponun boyutunu anlama veya belirleme:

  • Deponun boyutu, makinedeki kaynaklar ve yük, makinede yüklü etkin hizmetler ve uygulamalar ve ortam (örneğin, bir kümeye mi yoksa SQL sunucusuna mı ait olduğu) gibi birden çok faktöre bağlıdır.
  • Sunucu işletim sistemi için iyi durumdaki bir depo boyutu birkaç yüz MB ile 1,5 GB arası olabilir. İstemci işletim sistemi için boyut birkaç yüz MB olabilir. Deponun belirli bir boyutta kalması gerekmez ve yazılı bir sınır yoktur.
  • Büyük bir boyut (1 GB'tan fazla) genellikle yalnızca makine bu makalenin başında açıklanan sorunlarla veya belirtilerle karşılaşıyorsa şüpheli kabul edilir.
  • Depo boyutu anormal derecede büyük veya zaman içinde büyür. Bu durumda depo büyük olasılıkla şişkindir.

Şişirilmiş bir depo, tam nedenini belirlemek için özel araçlar kullanılarak incelenmelidir. Yakalanan verilerle bir Microsoft destek olayı açabilirsiniz.

Ancak çoğu durumda, şişirilmiş bir WMI deposuna İlke Sonuç Kümesi (RSoP) günlüğü veya Microsoft System Center Configuration Manager (SCCM) gibi izleme uygulamaları neden olur.

RSoP günlük sorunları için bkz . Windows veya Windows Server'da büyük WMI deposunun neden olduğu beklenmedik yavaş oturum açma.

Çözümü uyguladıktan sonra bile boyutunu küçültmek için WMI deposunun sıfırlanması gerekir. Microsoft destek uzmanlarının önceden yönergeleri olmadan WMI deposunu sıfırlamanızı önermiyoruz.

Yukarıdaki adımlar sorunu çözemiyorsa, veri toplama bölümünde belirtildiği gibi izlemeleri ve dökümleri toplamanız ve daha ayrıntılı araştırma için Microsoft destek uzmanlarına göndermeniz gerekir.

WmiPrvse.exe işlemi tutamaçları veya belleği sızdırıyor

WmiPrvse.exe işlemi tanıtıcıları veya belleği sızdırıyorsa, büyük olasılıkla aşağıdaki durumlardan biridir:

  • İstemci uygulaması anormal, verimsiz veya büyük sorgular gerçekleştirir.
  • WmiPrvse.exe işlemi, bir WMI sorgusu işlenirken kaynakları beklendiği gibi bırakmaz ve bu da bellek sızıntısına neden olur ve WmiPrvse.exe işlemini durdurur.
  • Makinenin ölçeği veya ortam kurulumu büyüktür.

Bu durumlar için bkz. "Senaryo kılavuzu: Sorunları veya senaryoları aşan WmiPrvse.exe kota sorunlarını giderme."

Veri toplama

Daha fazla araştırma için bir destek olayı açmak için, Kullanıcı Deneyimi sorunları için TSS'yi kullanarak veya yakın zamanda sorunla karşılaşan makinede WMI-Collect aracını kullanarak bilgi toplama başlığında belirtilen adımları izleyerek bilgileri toplayabilirsiniz. Adımlar aşağıdaki gibidir:

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

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

    C:\temp\WMI-Collect.ps1 -Logs
    
  3. "Yakalamayı durdurmak için ENTER tuşuna basın:" iletisiyle PowerShell komut istemini açık tutun.

  4. 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. Bir destek olayı oluşturulduktan sonra bu dosya analiz için güvenli çalışma alanına yüklenebilir.