Azure App Service yavaş uygulama performansı sorunlarını giderme

Bu makale, Azure App Service yavaş uygulama performansı sorunlarını gidermenize yardımcı olur.

Bu makalenin herhangi bir noktasında daha fazla yardıma ihtiyacınız varsa MSDN Azure ve Stack Overflow forumlarında Azure uzmanlarına başvurabilirsiniz. Alternatif olarak, Azure desteği olayı da oluşturabilirsiniz. Azure Destek sitesine gidin ve Destek Al'a tıklayın.

Belirti

Uygulamaya göz attığınızda sayfalar yavaş yüklenir ve bazen zaman aşımına neden olur.

Nedeni

Bu sorun genellikle aşağıdakiler gibi uygulama düzeyindeki sorunlara neden olur:

  • ağ istekleri uzun sürüyor
  • uygulama kodu veya veritabanı sorguları verimsiz
  • yüksek bellek/CPU kullanan uygulama
  • bir özel durum nedeniyle uygulama kilitleniyor

Sorun giderme adımları

Sorun giderme, sıralı olarak üç ayrı görev olarak ayrılabilir:

  1. Uygulama davranışını gözlemleme ve izleme
  2. Veri toplama
  3. Sorunu azaltma

App Service her adımda çeşitli seçenekler sunar.

1. Uygulama davranışını gözlemleme ve izleme

Hizmet durumu izleme

Microsoft Azure, her hizmet kesintisi veya performans düşüşü olduğunda genel olarak kullanıma salar. Hizmetin durumunu Azure portal izleyebilirsiniz. Daha fazla bilgi için bkz. Hizmet durumunu izleme.

Uygulamanızı izleme

Bu seçenek, uygulamanızın herhangi bir sorun yaşayıp yaşamadiğini öğrenmenizi sağlar. Uygulamanızın dikey penceresinde İstekler ve hatalar kutucuğuna tıklayın. Ölçüm dikey penceresi, ekleyebileceğiniz tüm ölçümleri gösterir.

Uygulamanız için izlemek isteyebileceğiniz ölçümlerden bazıları şunlardır:

  • Ortalama bellek çalışma kümesi
  • Yanıt süresi
  • CPU süresi
  • Bellek çalışma kümesi
  • İstekler

uygulama performansını izleme

Daha fazla bilgi için bkz.

Web uç noktası durumunu izleme

Uygulamanızı Standart fiyatlandırma katmanında çalıştırıyorsanız, App Service üç coğrafi konumdan iki uç noktayı izlemenize olanak tanır.

Uç nokta izleme, yanıt süresini ve web URL'lerinin çalışma süresini test eden coğrafi olarak dağıtılmış konumlardan web testlerini yapılandırıyor. Test, her konumdan yanıt süresini ve çalışma süresini belirlemek için web URL'sinde bir HTTP GET işlemi gerçekleştirir. Yapılandırılan her konum beş dakikada bir bir test çalıştırır.

Çalışma süresi HTTP yanıt kodları kullanılarak izlenir ve yanıt süresi milisaniye cinsinden ölçülür. HTTP yanıt kodu 400'den büyük veya buna eşitse veya yanıt 30 saniyeden uzun sürüyorsa izleme testi başarısız olur. İzleme testleri belirtilen tüm konumlardan başarılı olursa uç noktanın kullanılabilir olduğu kabul edilir.

Ayarlamak için bkz. Azure App Service uygulamaları izleme.

Ayrıca uç nokta izleme ile ilgili bir video için bkz. Azure Web Sitelerini yukarıda tutma ve Uç Nokta İzleme - Stefan Schackow ile.

Uzantıları kullanarak uygulama performansı izleme

Site uzantısını kullanarak uygulama performansınızı da izleyebilirsiniz.

Her App Service uygulaması, site uzantısı olarak dağıtılan güçlü bir araç kümesi kullanmanıza olanak tanıyan genişletilebilir bir yönetim uç noktası sağlar. Uzantılar şunlardır:

  • Azure DevOps gibi kaynak kodu düzenleyicileri.
  • Bir uygulamaya bağlı MySQL veritabanı gibi bağlı kaynaklar için yönetim araçları.

Azure Uygulaması Insights, aynı zamanda kullanılabilen bir performans izleme sitesi uzantısıdır. Application Insights'ı kullanmak için kodunuzu bir SDK ile yeniden oluşturursunuz. Ek verilere erişim sağlayan bir uzantı da yükleyebilirsiniz. SDK, uygulamanızın kullanımını ve performansını daha ayrıntılı izlemek için kod yazmanızı sağlar. Daha fazla bilgi için bkz. Web uygulamalarında performansı izleme.

2. Veri toplama

App Service, hem web sunucusundan hem de web uygulamasından gelen bilgileri günlüğe kaydetmek için tanılama işlevi sağlar. Bilgiler web sunucusu tanılaması ve uygulama tanılaması olarak ayrılır.

Web sunucusu tanılamasını etkinleştirme

Aşağıdaki günlük türlerini etkinleştirebilir veya devre dışı bırakabilirsiniz:

  • Ayrıntılı Hata Günlüğü - Hata belirten HTTP durum kodları için ayrıntılı hata bilgileri (durum kodu 400 veya üzeri). Bu, sunucunun hata kodunu neden döndürdüğünü belirlemeye yardımcı olabilecek bilgiler içerebilir.
  • Başarısız İstek İzleme - İsteği işlemek için kullanılan IIS bileşenlerinin bir izlemesi ve her bileşende geçen süre de dahil olmak üzere başarısız isteklerle ilgili ayrıntılı bilgiler. Uygulama performansını iyileştirmeye veya belirli bir HTTP hatasına neyin neden olduğunu yalıtmaya çalıştığınızda bu yararlı olabilir.
  • Web Sunucusu Günlüğü - W3C genişletilmiş günlük dosyası biçimini kullanan HTTP işlemleri hakkında bilgi. Bu, işlenen istek sayısı veya belirli bir IP adresinden gelen istek sayısı gibi genel uygulama ölçümlerini belirlerken yararlıdır.

Uygulama tanılamayı etkinleştirme

App Service uygulama performansı verilerini toplamak, Visual Studio'dan uygulamanızın profilini oluşturma veya daha fazla bilgi ve izleme günlüğe kaydetmek için uygulama kodunuzu değiştirmek için çeşitli seçenekler vardır. Uygulamaya ne kadar erişiminiz olduğunu ve izleme araçlarından neleri gözlemlediğinize bağlı olarak seçenekleri belirleyebilirsiniz.

Application Insights Profil Oluşturucu'larını kullanma

Ayrıntılı performans izlemelerini yakalamaya başlamak için Application Insights Profiler'ı etkinleştirebilirsiniz. Geçmişte gerçekleşen sorunları araştırmanız gerektiğinde beş gün önce yakalanan izlemelere erişebilirsiniz. Azure portal'da uygulamanın Application Insights kaynağına erişiminiz olduğu sürece bu seçeneği belirleyebilirsiniz.

Application Insights Profil Oluşturucu, her web çağrısı için yanıt süresiyle ilgili istatistikler ve yavaş yanıtlara hangi kod satırının neden olduğunu gösteren izlemeler sağlar. Bazı kodlar yüksek performanslı bir şekilde yazılmadığı için bazen App Service uygulaması yavaş olabilir. Buna örnek olarak paralel ve istenmeyen veritabanı kilidi çekişmelerinde çalıştırılabilen sıralı kod verilebilir. Koddaki bu performans sorunlarının kaldırılması uygulamanın performansını artırır, ancak ayrıntılı izlemeler ve günlükler ayarlamadan bunları algılamak zordur. Application Insights Profiler tarafından toplanan izlemeler, uygulamayı yavaşlatan kod satırlarını belirlemeye ve App Service uygulamalar için bu zorluğun üstesinden gelmeye yardımcı olur.

Daha fazla bilgi için bkz. Application Insights ile Azure App Service'da canlı uygulamaların profilini oluşturma.

Uzaktan Profil Oluşturmayı Kullanma

Azure App Service web uygulamaları, API uygulamaları, mobil arka uçlar ve Web İşleri uzaktan profil oluşturulabilir. Uygulama kaynağına erişiminiz varsa ve sorunun nasıl yeniden üretileceğini biliyorsanız veya performans sorununun oluştuğu tam zaman aralığını biliyorsanız bu seçeneği belirleyin.

Uzaktan Profil Oluşturma, işlemin CPU kullanımı yüksekse ve işleminiz beklenenden daha yavaş çalışıyorsa veya HTTP isteklerinin gecikme süresi normalden yüksekse, işleminizin profilini uzaktan oluşturabilir ve işlem etkinliğini ve kod sık erişimli yollarını analiz etmek için CPU örnekleme çağrı yığınlarını alabilirsiniz.

Daha fazla bilgi için bkz. Azure App Service'da Uzaktan Profil Oluşturma desteği.

Tanılama izlemelerini el ile ayarlama

Web uygulaması kaynak koduna erişiminiz varsa, Uygulama tanılaması bir web uygulaması tarafından üretilen bilgileri yakalamanıza olanak tanır. ASP.NET uygulamalar, bilgileri uygulama tanılama günlüğüne kaydetmek için sınıfını kullanabilir System.Diagnostics.Trace . Ancak, kodu değiştirmeniz ve uygulamanızı yeniden dağıtmanız gerekir. Uygulamanız bir test ortamında çalışıyorsa bu yöntem önerilir.

Uygulamanızı günlüğe kaydetme için yapılandırma hakkında ayrıntılı yönergeler için bkz. Azure App Service'da uygulamalar için tanılama günlüğünü etkinleştirme.

Tanılama aracını kullanma

App Service, yapılandırma gerektirmeden uygulamanızın sorunlarını gidermenize yardımcı olacak akıllı ve etkileşimli bir deneyim sağlar. Uygulamanızla ilgili sorunlarla karşılaştığınızda, tanılama aracı sorunu daha kolay ve hızlı bir şekilde gidermek ve çözmek için sizi doğru bilgilere yönlendirmenin yanlış olduğunu gösterir.

App Service tanılamaya erişmek için App Service uygulamanıza veya Azure portal App Service Ortamı gidin. Sol gezinti bölmesinde Sorunları tanıla ve çöz'e tıklayın.

Kudu Hata Ayıklama Konsolunu Kullanma

App Service, hataları ayıklamak, dosyaları keşfetmek, karşıya yüklemek ve ortamınız hakkında bilgi almak için JSON uç noktaları için kullanabileceğiniz bir hata ayıklama konsoluyla birlikte gelir. Bu konsol, uygulamanız için Kudu Konsolu veya SCM Panosu olarak adlandırılır.

Https:// Uyguladınız.scm.azurewebsites.net/<> bağlantısına giderek bu panoya erişebilirsiniz.

Kudu'nun sağladığı şeylerden bazıları şunlardır:

  • uygulamanız için ortam ayarları
  • günlük akışı
  • tanılama dökümü
  • PowerShell cmdlet'lerini ve temel DOS komutlarını çalıştırabileceğiniz hata ayıklama konsolu.

Kudu'nun bir diğer yararlı özelliği de uygulamanızın ilk şans özel durumları oluşturması durumunda bellek dökümleri oluşturmak için Kudu ve SysInternals aracı Procdump'u kullanabilmenizdir. Bu bellek dökümleri işlemin anlık görüntüleridir ve genellikle uygulamanızla ilgili daha karmaşık sorunları gidermenize yardımcı olabilir.

Kudu'daki özellikler hakkında daha fazla bilgi için bkz. Bilmeniz gereken Azure DevOps araçları.

3. Sorunu azaltma

Uygulamayı ölçeklendirme

Azure App Service'da daha yüksek performans ve aktarım hızı için uygulamanızı çalıştırdığınız ölçeği ayarlayabilirsiniz. Bir uygulamanın ölçeğini artırmak için iki ilgili eylem gerekir: App Service planınızı daha yüksek bir fiyatlandırma katmanına değiştirme ve daha yüksek fiyatlandırma katmanına geçtikten sonra belirli ayarları yapılandırma.

Ölçeklendirme hakkında daha fazla bilgi için bkz. Azure App Service'da uygulama ölçeklendirme.

Ayrıca, uygulamanızı birden fazla örnekte çalıştırmayı seçebilirsiniz. Ölçeğin genişletilmesi yalnızca daha fazla işleme özelliği sağlamakla kalmaz, aynı zamanda bir miktar hataya dayanıklılık da sağlar. İşlem bir örnekte kapanırsa, diğer örnekler isteklere hizmet etmeye devam eder.

Ölçeklendirmeyi El ile veya Otomatik olarak ayarlayabilirsiniz.

AutoHeal kullanma

AutoHeal, seçtiğiniz ayarlara (yapılandırma değişiklikleri, istekler, bellek tabanlı sınırlar veya isteği yürütmek için gereken süre gibi) bağlı olarak uygulamanızın çalışan işlemini geri dönüştürür. Çoğu zaman, bir sorundan kurtulmanın en hızlı yolu süreci geri dönüştürmektir. Uygulamayı doğrudan Azure portal içinden her zaman yeniden başlatabilirsiniz ancak AutoHeal bunu sizin için otomatik olarak yapar. Tek yapmanız gereken, uygulamanız için kök web.config bazı tetikleyiciler eklemektir. Uygulamanız bir .NET uygulaması olmasa bile bu ayarlar aynı şekilde çalışır.

Daha fazla bilgi için bkz. Azure Web Sitelerini Otomatik Düzeltme.

Uygulamayı yeniden başlatma

Yeniden başlatma genellikle tek seferlik sorunlardan kurtulmanın en kolay yoludur. Azure portal uygulamanızın dikey penceresinde uygulamanızı durdurma veya yeniden başlatma seçenekleriniz vardır.

performans sorunlarını çözmek için uygulamayı yeniden başlatma

Uygulamanızı Azure PowerShell kullanarak da yönetebilirsiniz. Daha fazla bilgi için bkz. Azure PowerShell'i Azure Resource Manager ile kullanma.

Diğer kaynaklar

Öğretici: Bir web uygulamasında performans sorunlarını belirlemek için yük testi çalıştırma