Aracılığıyla paylaş


Azure App Service'te yavaş performans sorunlarını giderme

Bu makale, Azure Uygulaması Hizmeti'nde 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ındaki Azure uzmanlarına başvurabilirsiniz. Alternatif olarak, bir Azure desteği olayı da kaydedebilirsiniz. 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.

Neden

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 size ç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 kullanıma açar. Hizmetin durumunu Azure portalından izleyebilirsiniz. Daha fazla bilgi için bkz . Hizmet durumunu izleme.

Uygulamanızı izleme

Bu seçenek, uygulamanızın herhangi bir sorun yaşanı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, web URL'lerinin yanıt süresini ve çalışma süresini test eden coğrafi olarak dağıtılmış konumlardan web testlerini yapılandırır. 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ç nokta kullanılabilir olarak kabul edilir.

Ayarlamak için bkz. Azure Uygulaması Hizmeti'nde uygulamaları izleme.

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

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 kod düzenleyicileri.
  • Bir uygulamaya bağlı MySQL veritabanı gibi bağlı kaynaklar için yönetim araçları.

Azure Uygulaması lication Insights, ayrıca 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ı olarak 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 bilgileri günlüğe kaydetmek için tanılama işlevi sağlar. Bilgiler, web sunucusu tanılama ve uygulama tanılamalarına 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ı artırmaya 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 kullanışlıdır.

Uygulama tanılamasını etkinleştirme

App Service'ten uygulama performansı verilerini toplamak, Visual Studio'dan canlı olarak uygulamanızın profilini oluşturma veya uygulama kodunuzu değiştirerek daha fazla bilgi ve izleme kaydetmek 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 Profiler'ı 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 öncesine kadar yakalanan izlemelere erişebilirsiniz. Azure portalında uygulamanın Application Insights kaynağına erişiminiz olduğu sürece bu seçeneği belirleyebilirsiniz.

Application Insights Profiler, 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 App Service uygulaması bazen yavaş olabilir. Buna örnek olarak paralel ve istenmeyen veritabanı kilidi çekişmelerinde çalıştırılabilir 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 tespit etmek zordur. Application Insights Profiler tarafından toplanan izlemeler, uygulamayı yavaşlatan ve App Service uygulamaları için bu zorluğun üstesinden gelen kod satırlarını belirlemeye yardımcı olur.

Daha fazla bilgi için bkz. Application Insights ile Azure Uygulaması Hizmetinde canlı uygulamaların profilini oluşturma.

Uzak Profil Oluşturma kullanma

Azure Uygulaması Hizmeti'nde web uygulamaları, API uygulamaları, mobil arka uçlar ve Web İşleri uzaktan profili 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 Uygulaması Hizmetinde 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 oluşturulan 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 Uygulaması Hizmeti'nde 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ı olmak için 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 gidermeniz ve çözmeniz için sizi doğru bilgilere yönlendirmenin yanlış olduğunu gösterir.

App Service tanılamalarına erişmek için Azure portalında App Service uygulamanıza veya App Service Ortamı gidin. Sol gezinti bölmesinde Sorunları tanılama ve çözme'ye tıklayın.

Kudu Hata Ayıklama Konsolunu kullanma

App Service, hata ayıklama, dosyaları keşfetme, karşıya yükleme 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.

Bu panoya erişmek için https://< Uyguladınız.scm.azurewebsites.net/> bağlantısına gidebilirsiniz.

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 kullanışlı özelliği, 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 hafifletin

Uygulamayı ölçeklendirin

Azure Uygulaması Hizmeti'nde 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 Uygulaması Hizmeti'nde bir uygulamayı ö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'ı kullanın

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ından her zaman yeniden başlatabilirsiniz ancak AutoHeal bunu sizin için otomatik olarak yapar. Tek yapmanız gereken uygulamanızın kök web.config dizinine 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şlatın

Yeniden başlatma genellikle tek seferlik sorunlardan kurtulmanın en kolay yoludur. Azure portalında, 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