Aracılığıyla paylaş


IIS uygulama havuzunda Yüksek CPU sorunlarını giderme

Şunlar için geçerlidir: Internet Information Services

Bu sorun giderici bir Internet Information Services (IIS) uygulama havuzunda sürekli yüksek CPU'nun nedenini belirlemenize yardımcı olur. Bir web uygulaması isteklere hizmet ettikçe CPU kullanımının artmasının normal olduğunu unutmayın. Ancak CPU'nun uzun süreler boyunca sürekli olarak yüksek düzeyde (%80 veya daha yüksek) kaldığını görürseniz uygulamanızın performansı düşer. Bu nedenle, mümkünse ele alınabilmesi ve düzeltilebilmesi için sürekli yüksek CPU'nun nedenini anlamak önemlidir.

Senaryo

IIS'deki bir uygulama havuzu % 90'ı aşan uzun bir yüksek CPU süresiyle karşılaşıyor. Uygulama test edildiğinde hiçbir sorunla karşılaşılmamaktadır. Ancak, uygulama gerçek kullanıcı yüküyle karşılaştığında CPU yüksek bir yüzdeye tırmanıp kalır. Kurtarmak için uygulama havuzunun yeniden başlatılması gerekir, ancak bunu yaptıktan sonra CPU yeniden yüksek bir düzeye tırmanıyor.

Araçlar

Veri toplama

Yüksek CPU kullanımı sorunlarıyla karşılaştığınızda yapmanız gereken ilk şey, CPU kullanan işlemi belirlemektir. Bunu yapmak için Görev Yöneticisi'ndeki İşlemler sekmesini kullanabilirsiniz. Tüm kullanıcılardan işlemleri göster onay kutusunu seçtiğinizden emin olun. Aşağıdaki görüntüde bu kutu işaretlidir ve yüksek düzeyde CPU kullanan işlemi (IIS uygulama havuzunu barındıran işlem) gösterilmektedir w3wp.exe .

Windows Görev Yöneticisi'nin ekran görüntüsü. C P U sütununun altında, w 3 w p yürütülebilir satırda 85 vurgulanır. Tüm kullanıcılardan gelen işlemleri göster seçilidir.

CPU kullanan işlemi belirlemek için Performans İzleyicisi de kullanabilirsiniz. Performans İzleyicisi kullanma hakkında daha fazla bilgi için bkz. Performans verilerini çözümleme.

İpucu

Belirli bir w3wp.exe işlemiyle ilişkili uygulama havuzunu belirlemeniz gerekiyorsa, bir Yönetim Komut İstemi açın, klasörüne %windir%\System32\inetsrvcd %windir%\System32\inetsrv geçin ve komutunu çalıştırın appcmd list wp. Bu, w3wp.exe işleminin işlem tanımlayıcısını (PID) tırnak içinde gösterir. Bu PID'yi Görev Yöneticisi'nde bulunan PID ile eşleştirebilirsiniz.

bir w3wp.exe işleminin yüksek CPU ile karşılaştığını onayladıktan sonra, soruna neyin neden olduğunu belirlemek için aşağıdaki bilgileri toplamanız gerekir:

  • Performans İzleyicisi veri toplayıcı kümesi.
  • w3wp.exe işleminin kullanıcı modu bellek dökümü.

Bunların her ikisinin de yüksek CPU olayı sırasında toplanması gerekir.

Performans İzleyicisi veri toplayıcı kümesi toplama

Performans İzleyicisi verileri genellikle yüksek CPU sorunlarının nedenini belirlemede kritik önem taşır. Uygulamanızın performansının "büyük resim" görünümünü almak da son derece yararlı olabilir.

Perfmon verileri gerçek zamanlı olarak görüntülenebilir veya daha sonra gözden geçirilebilen bir veri toplayıcı kümesinde toplanabilir. Yüksek CPU sorununu gidermek için bir veri toplayıcı kümesi toplamamız gerekir. Yüksek CPU sorunlarını gidermeye yönelik bir veri toplayıcı kümesi oluşturmak için aşağıdaki adımları izleyin.

  1. Windows Denetim Masası'den Yönetim Araçları'nı açın.
  2. Performans İzleyicisi çift tıklayın.
  3. Veri Toplayıcı Kümeleri düğümünü genişletin.
  4. Kullanıcı Tanımlı'ya sağ tıklayın ve Yeni ->Veri ToplayıcıKümesi'ni seçin.
  5. Veri toplayıcı kümesinin adı olarak Yüksek CPU girin.
  6. El ile Oluştur (Gelişmiş)'i seçin.
  7. İleri'yi seçin.
  8. Veri Günlükleri Oluştur'u seçin.
  9. Performans Sayacı onay kutusunu seçin.
  10. İleri'yi seçin.
  11. Ekle'yi seçin. Uygulamanız ASP.NET bir uygulama değilse 19. Adıma geçin.
  12. Sayaç listesinin en üstüne kaydırın ve .NET CLR Belleği'ni seçin.
  13. Örnek listesinde tüm örnekleri> seçin<.
  14. Sayaçları eklenen sayaçlar listesine eklemek için Ekle'yi seçin.
  15. Sayaç listesinden ASP.NET ve ardından Ekle'yi seçin.
  16. Sayaç listesinden ASP.NET Uygulamalar'ı seçin.
  17. Örnek listesinden tüm örnekleri> seçin<.
  18. Ekle'yi seçin.
  19. Sayaç listesinden İşlem'i genişletin. (İşlemci'yi değil İşlem'i genişletdiğinizden emin olun.)
  20. İşlem nesnesinden İşlemci Süresi % öğesini seçin.
  21. Örnek listesinden tüm örnekleri> seçin<.
  22. Ekle'yi seçin.
  23. Sayaç listesinden İş Parçacığı'nı genişletin.
  24. İş Parçacığı nesnesinden İşlemci Süresi % öğesini seçin.
  25. Örnek listesinden tüm örnekleri> seçin<.
  26. Ekle'yi seçin.
  27. Örnek listesinden Kimlik İş Parçacığı'nı seçin.
  28. Ekle'yi seçin.

İletişim kutunuz artık aşağıdaki görüntüye benzemelidir.

Veri Toplama 0 1 Özellikler iletişim kutusunu gösteren ekran görüntüsü. Performans Sayaçları sekmesinde I D İş Parçacığı seçilir.

Tamam ->İleri'yi seçin. Veri toplayıcı kümesinin kaydedildiği yeri not edin. (Gerekirse bu konumu değiştirebilirsiniz.) Ardından Son'u seçin.

Veri toplayıcı kümesi henüz çalışmıyor. Başlatmak için Kullanıcı Tanımlı düğümün altındaki Yüksek CPU'ya sağ tıklayın ve menüden Başlat'ı seçin.

Hata Ayıklama Tanılama kuralı oluşturma

Yüksek CPU koşulu oluştuğunda kullanıcı modu işlem dökümlerini toplamanın en kolay yolu Hata Ayıklama Tanılama'yı kullanmaktır.

DebugDiag'ı indirin, sunucunuza yükleyin ve çalıştırın. (Yüklemeden sonra Başlat menüsünde bulabilirsiniz.) DebugDiag'ı çalıştırdığınızda Kural Türü Seç iletişim kutusu görüntülenir. Uygulama havuzunuz için kilitlenme kuralı oluşturmak için şu adımları izleyin:

  1. Performans ->İleri'yi seçin.
  2. Performans Sayaçları ->İleri'yi seçin.
  3. Performans Tetikleyicileri Ekle'yi seçin.
  4. İşlemci (İşlem değil) nesnesini genişletin ve İşlemci Süresi Yüzdesi'ni seçin. Windows Server 2008 R2 kullanıyorsanız ve 64'ten fazla işlemciniz varsa İşlemci nesnesi yerine İşlemci Bilgilerinesnesini seçin .
  5. Örnek listesinde _Total'ı seçin.
  6. Ekle ->Tamam'ı seçin.
  7. Yeni eklenen tetikleyiciyi ve ardından Eşikleri Düzenle'yi seçin. Performans Sayaçlarını Seç iletişim kutusunu gösteren ekran görüntüsü.
  8. Açılan listeden Yukarıdaki'yi seçin.
  9. Eşiği 80 olarak değiştirin.
  10. Saniye sayısı için 20 girin. (Gerekirse bu değeri ayarlayabilirsiniz, ancak hatalı tetikleyicileri önlemek için az sayıda saniye belirtmemeye dikkat edin.)
  11. Tamam'ı seçin.
  12. İleri'yi seçin.
  13. Döküm Hedefi Ekle'yi seçin.
  14. Açılan listeden Web Uygulaması Havuzu'na tıklayın.
  15. Uygulama havuzları listesinden uygulama havuzunuzu seçin.
  16. Tamam'ı seçin.
  17. İleri'yi seçin.
  18. İleri'yi yeniden seçin.
  19. İstersensiniz kuralınız için bir ad girin ve dökümlerin kaydedileceği konumu not edin. İsterseniz bu konumu değiştirebilirsiniz.
  20. İleri'yi seçin.
  21. Kuralı Şimdi Etkinleştir'i ve ardından Son'u seçin.

İpucu

13-15. adımlarda kullanılan tekniği kullanarak birden çok döküm hedefi ekleyerek birden çok uygulama havuzunun dökümlerini oluşturabilirsiniz.

Bu kural 11 döküm dosyası oluşturur. İlk 10, boyutu oldukça küçük olacak "mini dökümler" olacaktır. Son döküm tam bellekli bir döküm olacak ve bu dökümler çok daha büyük olacak.

Yüksek CPU sorunu oluştuktan sonra Perfmon veri toplayıcı kümesinin veri toplamasını durdurmak istersiniz. Bunu yapmak için, Kullanıcı Tanımlı düğüm altında listelenen Yüksek CPU veri toplayıcı kümesine sağ tıklayın ve Durdur'u seçin.

Veri analizi

Yüksek CPU olayından sonra gözden geçirmeniz gereken iki veri kümesi olur; Perfmon veri toplayıcı kümesi ve bellek dökümleri. Perfmon verilerini gözden geçirerek başlayalım.

Performans verilerini analiz etme

Sorununuzun Perfmon verilerini gözden geçirmek için, Kullanıcı Tanımlı düğüm altında listelenen Yüksek CPU veri toplayıcı kümesine sağ tıklayın ve En Son Rapor'a tıklayın. Aşağıdaki ekran görüntüsüne benzer bir rapor görürsünüz.

Performans İzleyicisi penceresini gösteren ekran görüntüsü.

İlk şey, gözden geçirmek istediğiniz açık sayaçları ekleyebilmek için geçerli sayaçların tümünü kaldırmaktır. Listedeki ilk sayacı seçin. Ardından listenin en altına kaydırın ve SHIFT tuşunu basılı tutarken son sayacı seçin. Tüm sayaçları seçtikten sonra, kaldırmak için Delete tuşuna basın.

Şimdi şu adımlarla İşlem / % İşlemci Zamanı sayacını ekleyin:

  1. Perfmon'un sağ bölmesinde herhangi bir yere sağ tıklayın ve Sayaç Ekle'yi seçin.
  2. process nesnesini genişletin.
  3. Listeden İşlemci Zamanı Yüzdesi'ni seçin.
  4. Örnek listesinden tüm örnekleri> seçin<.
  5. Ekle'yi seçin.
  6. Tamam'ı seçin.

Artık, veri toplayıcı kümesinin çalıştığı sırada bilgisayardaki her işlem tarafından kullanılan işlemci süresinin grafiğini gösteren bir görüntüye sahip olacaksınız. En yüksek CPU düzeyini kullanan işlemi yalıtmanın en kolay yolu Perfmon'un vurgulama özelliğini etkinleştirmektir.

Bunu yapmak için listedeki ilk sayacı seçin ve Ctrl + H tuşlarına basın. Bunu yaptıktan sonra, seçili işlem grafikte kalın bir siyah çizgi olarak gösterilir.

En fazla CPU kullanımını gösteren işlemi bulana kadar işlem listesinde aşağı gitmek için klavyenizdeki aşağı oku kullanın. Aşağıdaki ekran görüntüsünde, w3wp.exe işleminin makinede büyük miktarda CPU kullandığını açıkça görebilirsiniz. Bu, IIS uygulama havuzunun bilgisayarda yüksek CPU kullanımına neden olduğunu onaylar.

Performans İzleyicisi penceresini gösteren ekran görüntüsü. Perfmon, w 3 w p yürütülebilir dosyasının C P U kullanımını gösterir.

İpucu

Perfmon, uygulamanızdaki performans sorunlarını belirlemede çok yararlı olabilir. Perfmon günlüğünde toplanan veriler, kaç isteğin yürütülmekte olduğunu (ASP.NET ve ASP.NET Applications nesnelerini kullanarak) gösterebilir ve ayrıca uygulamanızın performansıyla ilgili diğer önemli performans verilerini de gösterebilir.

Yüksek CPU sorununa neyin neden olduğunu öğrenmek için DebugDiag kullanılarak oluşturulan dökümleri gözden geçirelim.

DebugDiag ile döküm analizi

DebugDiag, otomatik döküm analizi yaparak birçok sorunu tanıyabilir. Bu özel sorun için DebugDiag Performans Çözümleyicileri, yüksek CPU sorununun kök nedenini belirlemeye yardımcı olmaya çok uygundur. Çözümleyiciyi kullanmak için şu adımları izleyin

  1. DebugDiag'da Gelişmiş Çözümleme sekmesini seçin.
  2. Performans Çözümleyicileri'ni seçin.
  3. Veri Dosyaları Ekle'yi seçin.
  4. Dökümlerin oluşturulduğu konumun tarayıcısı. Varsayılan olarak, bu C:\Program Files\DebugDiag\Logs klasörünün bir alt klasörü olacaktır.
  5. Dökümlerden birini seçin ve ardından Ctrl + A tuşlarına basarak klasördeki tüm dökümleri seçin.
  6. 'ı seçin.
  7. Çözümlemeyi Başlat'ı seçin.

DebugDiag'ın dökümleri ayrıştırıp analiz sağlaması birkaç dakika sürer. Analizi tamamladığında, aşağıdaki görüntüde gösterilene benzer bir sayfa görürsünüz.

Internet Explorer'ı gösteren ekran görüntüsü. Hata Ayıklama Diag analizi rapor sayfası görüntülenir.

Raporun üst kısmında yüksek CPU algılandığının bildirildiğine dikkat edin. Sağ sütunda, ortalama CPU süresine göre ilk 7 iş parçacığına bağlantı içeren öneriler görürsünüz. Bu bağlantıyı seçtiğinizde en çok cpu kullananların ne yaptığı hakkında bilgi görürsünüz. Örneğin, aşağıdaki ekran görüntüsü bu iş parçacıklarının uygulamamda ne yaptığını gösterir.

Tarayıcıda İşlev İstatistikleri sayfasını gösteren ekran görüntüsü.

Bu örnekte, FastApp uygulamasındaki default.aspx sayfası çalışıyor. Çağrı yığınının (sayfanın en altında) daha aşağıya bakarsanız, bu iş parçacığının dize birleştirmesi yaptığını görebilirsiniz. (Çağrı yığınında çağrısına System.String.Concat dikkat edin.) En üstteki diğer CPU iş parçacıklarını analiz ederseniz aynı deseni görürsünüz.

Sonraki adım, FastApp uygulamasının Page_Loaddefault.aspx sayfasında olayı gözden geçirmektir. Bunu yaptığımda aşağıdaki kodu buluyorum.

htmlTable += "<table>";
for (int x = 0; x < 5000; x++)
{
htmlTable += "<tr>" + "<td>" + "Cell A" + x.ToString() + "</td>";
    htmlTable += "<td>" + "Cell B" + x.ToString() + "</td>" + "</tr>";
}
htmlTable += "</table>";

Bu tür kodlar kesinlikle yüksek CPU'ya neden olur.

Sonuç

Perfmon ve DebugDiag kullanarak, uygulama havuzlarındaki yüksek CPU'nun nedenini belirlemede yardımcı olabilecek verileri kolayca toplayabilirsiniz. Bu teknikleri kullanarak kök nedeni bulamıyorsanız, daha fazla yardım için Microsoft desteğine başvurabilirsiniz. Microsoft destek mühendisleri sorununuzun nedenini belirleme konusunda size yardımcı olabilir. Bir servis talebini açtığınızda Perfmon verilerinin ve dökümlerinin hazır olmasını sağlayarak mühendislerin size yardımcı olması için gereken süreyi önemli ölçüde azaltmış olursunuz.

Diğer kaynaklar