Azure'da Web Apps için uygulama performansı hakkında SSS

Not

Aşağıdaki yönergelerden bazıları yalnızca Windows veya Linux Uygulama Hizmetleri üzerinde çalışabilir. Örneğin, Linux App Services varsayılan olarak 64 bit modunda çalışır.

Bu makalede, Azure App Service Web Apps özelliğiyle ilgili uygulama performansı sorunları hakkında sık sorulan soruların (SSS) yanıtları bulunur.

Bu makalede Azure sorununuz giderilmediyse MSDN ve Stack Overflow'daki Azure forumlarını ziyaret edin. Sorununuzu bu forumlara gönderebilir veya Twitter'da @AzureSupport gönderebilirsiniz. Ayrıca bir Azure desteği isteği gönderebilirsiniz. Destek isteği göndermek için Azure desteği sayfasında Destek al'ı seçin.

tüm Web Apps durdurulduğunda bile App Service Planım neden CPU/Bellek kullanımını görüntülüyor?

Azure App Service, güvenlik güncelleştirmeleri, SCM konsolunun kullanılabilirliği, uygulama izleme, kimlik doğrulaması ve Web Uygulamanızın diğer birçok önemli özelliği gibi çeşitli platform işlemlerini ve özelliklerini işleyen sürekli sistem işlemleri gerektirir.

Çalışan Web Apps olmasa veya App Service Planı Web Apps içermese bile sistem işlemleri App Service Planlarında çalıştırılır.

Platform işlemleri en az miktarda kaynak (CPU, Bellek ve Disk alanı gibi) tüketir ve aynı durum bir App Service Planının kapasite planlaması, izleme ve otomatik ölçeklendirme tetikleyici yapılandırması sırasında hesaba katılmalıdır.

Uygulamam neden yavaş?

Yavaş uygulama performansına birden çok faktör katkıda bulunabilir. Ayrıntılı sorun giderme adımları için bkz. Yavaş web uygulaması performansı sorunlarını giderme.

Yüksek CPU tüketimi senaryosunda sorun giderme Nasıl yaparım??

Bazı yüksek CPU tüketimi senaryolarında uygulamanız gerçekten daha fazla bilgi işlem kaynağı gerektirebilir. Bu durumda, uygulamanın ihtiyaç duyduğu tüm kaynakları alması için daha yüksek bir hizmet katmanına ölçeklendirmeyi göz önünde bulundurun. Diğer durumlarda, yüksek CPU tüketimi hatalı bir döngüden veya bir kodlama uygulamasından kaynaklanabilir. Artan CPU tüketimini neyin tetiklemesiyle ilgili içgörü elde etme, iki bölümden oluşan bir işlemdir. İlk olarak bir işlem dökümü oluşturun ve ardından işlem dökümünü analiz edin. Daha fazla bilgi için bkz. Web Apps için yüksek CPU tüketimi için döküm dosyasını yakalama ve analiz etme.

Yüksek bellek tüketimi senaryosunda sorun giderme Nasıl yaparım??

Bazı yüksek bellek tüketimi senaryolarında uygulamanız gerçekten daha fazla bilgi işlem kaynağı gerektirebilir. Bu durumda, uygulamanın ihtiyaç duyduğu tüm kaynakları alması için daha yüksek bir hizmet katmanına ölçeklendirmeyi göz önünde bulundurun. Diğer durumlarda, koddaki bir hata bellek sızıntısına neden olabilir. Kodlama uygulaması bellek tüketimini de artırabilir. Yüksek bellek tüketimini neyin tetiklemesiyle ilgili içgörü elde etme, iki bölümden oluşan bir işlemdir. İlk olarak bir işlem dökümü oluşturun ve ardından işlem dökümünü analiz edin. Azure Site Uzantısı Galerisi'nden Kilitlenme Tanılayıcısı bu iki adımı da verimli bir şekilde gerçekleştirebilir. Daha fazla bilgi için bkz. Web Apps için aralıklı yüksek bellek için döküm dosyasını yakalama ve analiz etme.

PowerShell kullanarak App Service web uygulamalarını otomatikleştirmek Nasıl yaparım??

App Service web uygulamalarını yönetmek ve bakımını yapmak için PowerShell cmdlet'lerini kullanabilirsiniz. PowerShell kullanarak Azure App Service'de barındırılan web uygulamalarını otomatikleştirme blog gönderimizde, yaygın görevleri otomatikleştirmek için Azure Resource Manager tabanlı PowerShell cmdlet'lerinin nasıl kullanılacağını açıklıyoruz. Blog gönderisinde çeşitli web uygulamaları yönetim görevleri için örnek kod da bulunur. Tüm App Service web uygulamaları cmdlet'lerinin açıklamaları ve söz dizimi için bkz. Az.Websites.

Web uygulamamın olay günlüklerini Nasıl yaparım? görüntüleyemiyor musunuz?

Web uygulamanızın olay günlüklerini görüntülemek için:

  1. Kudu web sitenizde (https://*yourwebsitename*.scm.azurewebsites.net) oturum açın.
  2. Menüden Konsol >CMD'sinde Hata Ayıklama'yıseçin.
  3. LogFiles klasörünü seçin.
  4. Olay günlüklerini görüntülemek için eventlog.xmlöğesinin yanındaki kalem simgesini seçin.
  5. Günlükleri indirmek için PowerShell cmdlet'ini Save-AzureWebSiteLog -Name webappnameçalıştırın.

Web uygulamamın kullanıcı modu bellek dökümünü Nasıl yaparım? yakalayın?

Web uygulamanızın kullanıcı modu bellek dökümünü yakalamak için:

  1. Kudu web sitenizde (https://*yourwebsitename*.scm.azurewebsites.net) oturum açın.
  2. İşlem Gezgini menüsünü seçin.
  3. w3wp.exe işlemine veya Web İşi işleminize sağ tıklayın.
  4. Bellek Dökümü Tam Dökümünü>İndir'i seçin.

Web uygulamam için işlem düzeyi bilgileri Nasıl yaparım? görüntülensin mi?

Web uygulamanız için işlem düzeyi bilgilerini görüntülemek için iki seçeneğiniz vardır:

  • Azure portal:
    1. Web uygulaması için İşlem Gezgini'ni açın.
    2. Ayrıntıları görmek için w3wp.exe işlemini seçin.
  • Kudu konsolunda:
    1. Kudu web sitenizde (https://*yourwebsitename*.scm.azurewebsites.net) oturum açın.
    2. İşlem Gezgini menüsünü seçin.
    3. w3wp.exe işlemi için Özellikler'i seçin.

Uygulamama göz attığımda "Hata 403 - Bu web uygulaması durduruldu" iletisini görüyorum. Bunu Nasıl yaparım? çözebilirsiniz?

Bu hataya üç koşul neden olabilir:

  • Web uygulaması bir faturalama sınırına ulaştı ve siteniz devre dışı bırakıldı.
  • Web uygulaması portalda durduruldu.
  • Web uygulaması, Ücretsiz veya Paylaşılan ölçek hizmeti planı için geçerli olabilecek bir kaynak kotası sınırına ulaştı.

Hataya neyin neden olduğunu görmek ve sorunu çözmek için Web Apps'deki adımları izleyin: "Hata 403 – Bu web uygulaması durduruldu".

Çeşitli App Service planları için kotalar ve sınırlar hakkında nereden daha fazla bilgi edinebilirim?

Kotalar ve sınırlar hakkında bilgi için bkz. App Service sınırları.

Boşta kalma süresinden sonra ilk isteğin yanıt süresini azaltmak Nasıl yaparım??

Varsayılan olarak, belirli bir süre boşta kalan web uygulamaları kaldırılır. Bu şekilde sistem kaynakları korur. Bunun dezavantajı, web uygulamasının yüklenmesine ve yanıt vermeye başlamasına izin vermek için web uygulaması kaldırıldıktan sonra ilk isteğe verilen yanıtın daha uzun olmasıdır. Temel ve Standart hizmet planlarında, uygulamanın her zaman yüklü kalmasını sağlamak için AlwaysOn ayarını açabilirsiniz. Bu, uygulama boşta kaldığında daha uzun yükleme sürelerini ortadan kaldırır. AlwaysOn ayarını değiştirmek için:

  1. Azure portal web uygulamanıza gidin.
  2. Yapılandırma'ya tıklayın
  3. Genel ayarlar'ı seçin.
  4. Always On içinAçık'ı seçin.

Başarısız istek izlemeyi Nasıl yaparım? açabilirsiniz?

Başarısız istek izlemeyi açmak için şu adımları izleyin:

  1. Azure portal web uygulamanıza gidin.

  2. Tüm Ayarlar>Tanılama Günlükleri'ne tıklayın.

  3. Başarısız İstek İzleme için Açık'ı seçin.

  4. Kaydet'i seçin.

  5. Web uygulaması dikey penceresinde Araçlar'ı seçin.

  6. Visual Studio Online'ı seçin.

  7. Ayar Açık değilse Açık'ı seçin.

  8. Git'i seçin.

  9. Web.configöğesini seçin.

  10. system.webServer'da aşağıdaki yapılandırmayı ekleyin (belirli bir URL'yi yakalamak için):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*api*" />
    <add path="*api*">
    <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  11. Yavaş performans sorunlarını gidermek için bu yapılandırmayı ekleyin (yakalama isteği 30 saniyeden uzun sürüyorsa):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*" />
    <add path="*">
    <traceAreas> <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions timeTaken="00:00:30" statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  12. Başarısız istek izlemelerini indirmek için portalda web sitenize gidin.

  13. Araçlar>Kudu Go'yu> seçin.

  14. Menüden Konsol >CMD'sinde Hata Ayıklama'yıseçin.

  15. LogFiles klasörünü seçin ve ardından W3SVC ile başlayan bir adla klasörü seçin.

  16. XML dosyasını görmek için kalem simgesini seçin.

"Çalışan İşlemi 'Bellek Yüzdesi' sınırı nedeniyle geri dönüşüm istedi" iletisini görüyorum. Bu sorun Nasıl yaparım? giderildi?

32 bit işlem için kullanılabilir bellek miktarı üst sınırı (64 bit işletim sisteminde bile) 2 GB'tır. Varsayılan olarak, çalışan işlemi App Service (eski web uygulamalarıyla uyumluluk için) 32 bit olarak ayarlanır.

Web Çalışanı rolünüzdeki ek belleklerden yararlanmak için 64 bit işlemlere geçmeyi göz önünde bulundurun. Bu eylem bir web uygulamasının yeniden başlatılmasını tetikler, dolayısıyla uygun şekilde zamanlayın.

Ayrıca, 64 bitlik bir ortamın Temel veya Standart hizmet planı gerektirdiğini unutmayın. Ücretsiz ve Paylaşılan planlar her zaman 32 bitlik bir ortamda çalışır.

Daha fazla bilgi için bkz. App Service'de web uygulamalarını yapılandırma.

İsteğim neden 230 saniye sonra zaman aşımına uğrar?

Azure Load Balancer dört dakikalık varsayılan boşta kalma zaman aşımı ayarına sahiptir. Bu ayar genellikle bir web isteği için makul bir yanıt süresi sınırıdır. App Service, uygulamanız yaklaşık 240 saniye içinde (Windows uygulamasında 230 saniye, Linux uygulamasında 240 saniye) bir yanıt döndürmezse istemciye bir zaman aşımı döndürür. Web uygulamanız arka plan işleme gerektiriyorsa Azure Web İşleri'nin kullanılmasını öneririz. Azure web uygulaması Web İşleri'ni çağırabilir ve arka plan işleme tamamlandığında bildirim alabilir. Kuyruklar ve tetikleyiciler de dahil olmak üzere Web İşleri'ni kullanmak için birden çok yöntem arasından seçim yapabilirsiniz.

Web İşleri arka plan işleme için tasarlanmıştır. Web İşi'nde istediğiniz kadar arka plan işlemi yapabilirsiniz. Web İşleri hakkında daha fazla bilgi için bkz. Web İşleri ile arka plan görevlerini çalıştırma.

App Service'da barındırılan ASP.NET Core uygulamalar bazen yanıt vermeyi durdurur. Bu sorunu Nasıl yaparım? düzeltebilirsiniz?

Önceki Kestrel sürümüyle ilgili bilinen bir sorun, App Service'de barındırılan bir ASP.NET Core 1.0 uygulamasının zaman zaman yanıt vermeyi durdurmasına neden olabilir. Şu iletiyi de görebilirsiniz: "Belirtilen CGI Uygulaması bir hatayla karşılaştı ve sunucu işlemi sonlandırdı."

Bu sorun Kestrel sürüm 1.0.2'de düzeltildi. Bu sürüm ASP.NET Core 1.0.3 güncelleştirmesine dahildir. Bu sorunu çözmek için uygulama bağımlılıklarınızı Kestrel 1.0.2 kullanacak şekilde güncelleştirdiğinizden emin olun. Alternatif olarak, App Service web uygulamalarında 1.0 yavaş performans sorunları ASP.NET Core blog gönderisinde açıklanan iki geçici çözümden birini kullanabilirsiniz.

Günlük dosyalarımı web uygulamamın dosya yapısında bulamıyorum. Onları nasıl bulabilirim?

App Service Yerel Önbellek özelliğini kullanırsanız, App Service örneğinin LogFiles ve Data klasörlerinin klasör yapısı etkilenir. Yerel Önbellek kullanıldığında, depolama LogFiles ve Veri klasörlerinde alt klasörler oluşturulur. Alt klasörler"benzersiz tanımlayıcı" + zaman damgası adlandırma desenini kullanır. Her alt klasör, web uygulamasının çalıştığı veya çalıştırıldığı bir VM örneğine karşılık gelir.

Yerel Önbellek kullanıp kullanmadığınızı belirlemek için App Service Uygulama ayarları sekmenizi denetleyin. Yerel Önbellek kullanılıyorsa, uygulama ayarı WEBSITE_LOCAL_CACHE_OPTION olarak Alwaysayarlanır.

Yerel Önbellek kullanmıyorsanız ve bu sorunla karşılaşıyorsanız bir destek isteği gönderin.

"Erişim izinleri tarafından bir yuvaya erişim yasaklı bir şekilde erişim girişiminde bulunuldu" iletisini görüyorum. Bu hatayı Nasıl yaparım? düzeltebilirsiniz?

Bu hata genellikle VM örneğindeki giden TCP bağlantıları tükendiğinde oluşur. App Service'de, her VM örneği için yapılabilecek en fazla giden bağlantı sayısı için sınırlar uygulanır. Daha fazla bilgi için bkz. VM'ler arası sayısal sınırlar.

Uygulamanızdan yerel bir adrese erişmeye çalıştığınızda da bu hata oluşabilir. Daha fazla bilgi için bkz. Yerel adres istekleri.

Web uygulamanızdaki giden bağlantılar hakkında daha fazla bilgi için Azure web sitelerine giden bağlantılar hakkındaki blog gönderisine bakın.

App Service web uygulamamda uzaktan hata ayıklamak için Visual Studio Nasıl yaparım??

Visual Studio kullanarak web uygulamanızda hata ayıklamayı gösteren ayrıntılı bir kılavuz için bkz. App Service web uygulamanızda uzaktan hata ayıklama.

Yardım için bize ulaşın

Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.