Azure Uygulama Hizmeti için En İyi UygulamalarBest Practices for Azure App Service

Bu makalede Azure App Servicekullanımı için en iyi yöntemler özetlenmektedir.This article summarizes best practices for using Azure App Service.

Birlikte bulundurmaColocation

Bir Web uygulaması ve bir veritabanı gibi bir çözüm oluşturan Azure kaynakları farklı bölgelerde bulunuyorsa, aşağıdaki etkilere sahip olabilir:When Azure resources composing a solution such as a web app and a database are located in different regions, it can have the following effects:

  • Kaynaklar arasındaki iletişimde artan gecikme süresiIncreased latency in communication between resources
  • Azure fiyatlandırma sayfasındabelirtildiği gibi giden veri aktarımı çapraz bölgesi için parasal ücretler.Monetary charges for outbound data transfer cross-region as noted on the Azure pricing page.

Aynı bölgedeki birlikte bulundurma, Web uygulaması, içerik veya verileri tutmak için kullanılan bir veritabanı veya depolama hesabı gibi bir çözüm oluşturan Azure kaynakları için idealdir.Colocation in the same region is best for Azure resources composing a solution such as a web app and a database or storage account used to hold content or data. Kaynak oluştururken, bunların aynı Azure bölgesinde olduklarından emin olun, aksi takdirde bunların belirli bir iş veya tasarım nedeninden olmaması gerekir.When creating resources, make sure they are in the same Azure region unless you have specific business or design reason for them not to be. Premium App Service plan uygulamaları için mevcut olan App Service kopyalama özelliğini kullanarak, App Service bir uygulamayı veritabanınızdan aynı bölgeye taşıyabilirsiniz.You can move an App Service app to the same region as your database by using the App Service cloning feature currently available for Premium App Service Plan apps.

Uygulamalar beklenenden daha fazla bellek tükettiği zamanWhen apps consume more memory than expected

Bir uygulamanın, izleme veya hizmet önerileri aracılığıyla beklendiği gibi beklenenden daha fazla bellek tükettiğini fark ettiğinizde, App Service otomatik düzeltme özelliğinigöz önünde bulundurun.When you notice an app consumes more memory than expected as indicated via monitoring or service recommendations, consider the App Service Auto-Healing feature. Otomatik düzeltme özelliğinin seçeneklerinden biri, bir bellek eşiğine göre özel eylemleri ele alır.One of the options for the Auto-Healing feature is taking custom actions based on a memory threshold. İşlemler, çalışan işlemini geri dönüşüme göre, bellek dökümü aracılığıyla bellek dökümü aracılığıyla araştırma yapmak için e-posta bildirimlerinin spektrumu üzerine yayılıyor.Actions span the spectrum from email notifications to investigation via memory dump to on-the-spot mitigation by recycling the worker process. Otomatik Düzeltme web.config aracılığıyla ve App Service destek site uzantısıiçin bu blog gönderisine açıklandığı gibi kolay bir kullanıcı arabirimi aracılığıyla yapılandırılabilir.Auto-healing can be configured via web.config and via a friendly user interface as described at in this blog post for the App Service Support Site Extension.

Uygulamalar beklenenden daha fazla CPU tüketirWhen apps consume more CPU than expected

Bir uygulamanın beklenenden daha fazla CPU tükettiğini veya izleme ya da hizmet önerileri aracılığıyla gösterildiği gibi yinelenen CPU artışlarına yönelik olduğunu fark ettiğinizde, App Service planını ölçeklendirin veya ölçeklendirerek ölçeği değerlendirin.When you notice an app consumes more CPU than expected or experiences repeated CPU spikes as indicated via monitoring or service recommendations, consider scaling up or scaling out the App Service plan. Uygulamanızın durum bilgisi varsa yalnızca ölçeği artırma tek seçenektir, ancak uygulamanız durum bilgisiz ise ölçeği genişletme, daha fazla esneklik ve daha yüksek ölçekli potansiyel bir değer sağlar.If your application is stateful, scaling up is the only option, while if your application is stateless, scaling out gives you more flexibility and higher scale potential.

"Durum bilgisi olan" vs "durum bilgisiz" uygulamaları hakkında daha fazla bilgi için, bu videoyu izleyebilirsiniz: Azure App Service üzerinde ölçeklenebilir uçtan uca çok katmanlı bir uygulama planlama.For more information about “stateful” vs “stateless” applications you can watch this video: Planning a Scalable End-to-End Multi-Tier Application on Azure App Service. App Service ölçeklendirme ve otomatik ölçeklendirme seçenekleri hakkında daha fazla bilgi için bkz. Azure App Service bir Web uygulamasını ölçeklendirme.For more information about App Service scaling and autoscaling options, see Scale a Web App in Azure App Service.

Yuva kaynakları tükendiğindeWhen socket resources are exhausted

Giden TCP bağlantılarının tüketilmesinin yaygın bir nedeni, TCP bağlantılarını yeniden kullanmak için uygulanmayan veya HTTP-Keep-Alive gibi daha üst düzey bir protokol kullanılmayan istemci kitaplıklarının kullanılmasının yaygın bir nedenidir.A common reason for exhausting outbound TCP connections is the use of client libraries, which are not implemented to reuse TCP connections, or when a higher-level protocol such as HTTP - Keep-Alive is not used. Dışarı giden bağlantıların verimli bir şekilde yeniden kullanılması için kodunuzda yapılandırılmış veya erişilebilir olduklarından emin olmak için App Service planınızdaki uygulamalar tarafından başvurulan her bir kitaplıkların belgelerini gözden geçirin.Review the documentation for each of the libraries referenced by the apps in your App Service Plan to ensure they are configured or accessed in your code for efficient reuse of outbound connections. Ayrıca, bağlantı sızıntısına engel olmak için uygun oluşturma ve yayınlama ya da temizleme için kitaplık belge kılavuzunu izleyin.Also follow the library documentation guidance for proper creation and release or cleanup to avoid leaking connections. Bu tür istemci kitaplıkları araştırmalar devam ederken, etki çok örneğe ölçeklendirerek etki azaltılabilir.While such client libraries investigations are in progress, impact may be mitigated by scaling out to multiple instances.

Node.js ve giden http istekleriNode.js and outgoing http requests

Node.js ve çok sayıda giden http isteği ile çalışırken HTTP-Keep-Alive ile ilgilenirken önemli olur.When working with Node.js and many outgoing http requests, dealing with HTTP - Keep-Alive is important. npm Kodunuzu daha kolay hale getirmek için agentkeepalive paketini kullanabilirsiniz.You can use the agentkeepalive npm package to make it easier in your code.

httpİşleyicide hiçbir şey yapsanız bile her zaman yanıtı işleyin.Always handle the http response, even if you do nothing in the handler. Yanıtı doğru bir şekilde işlemezseniz, daha fazla yuva kullanılamadığından uygulamanız sonunda takılmalıdır.If you don't handle the response properly, your application gets stuck eventually because no more sockets are available.

Örneğin, http veya https paketiyle çalışırken:For example, when working with the http or https package:

const request = https.request(options, function(response) {
    response.on('data', function() { /* do nothing */ });
});

Birden çok çekirdekli bir makinede Linux üzerinde App Service çalıştırıyorsanız, uygulamanızı yürütmek üzere birden çok Node.js işlemini başlatmak için PM2 kullanılması en iyi uygulamadır.If you are running on App Service on Linux on a machine with multiple cores, another best practice is to use PM2 to start multiple Node.js processes to execute your application. Bunu, kapsayıcınıza bir başlangıç komutu belirterek yapabilirsiniz.You can do it by specifying a startup command to your container.

Örneğin, dört örneği başlatmak için:For example, to start four instances:

pm2 start /home/site/wwwroot/app.js --no-daemon -i 4

Uygulama yedeğiniz başarısız olmaya başladığındaWhen your app backup starts failing

Uygulama yedeklemenin başarısız olmasının en yaygın iki nedeni şunlardır: Geçersiz depolama ayarları ve geçersiz veritabanı yapılandırması.The two most common reasons why app backup fails are: invalid storage settings and invalid database configuration. Bu arızalar genellikle depolama veya veritabanı kaynaklarında yapılan değişiklikler ya da bu kaynaklara erişim için değişiklikler (örneğin, yedekleme ayarlarında seçilen veritabanı için güncelleştirilmiş kimlik bilgileri) olduğunda meydana gelir.These failures typically happen when there are changes to storage or database resources, or changes for how to access these resources (for example, credentials updated for the database selected in the backup settings). Yedeklemeler genellikle bir zamanlamaya göre çalışır ve depolama alanına (Yedeklenen dosyaların çıktısını almak için) ve veritabanlarına (yedeklemeye dahil edilecek içeriği kopyalamak ve okumak için) erişim gerektirir.Backups typically run on a schedule and require access to storage (for outputting the backed-up files) and databases (for copying and reading contents to be included in the backup). Bu kaynaklardan birine erişim başarısız olma sonucu, tutarlı yedekleme hatası olacaktır.The result of failing to access either of these resources would be consistent backup failure.

Yedekleme hataları oluştuğunda, hangi tür hataların olduğunu anlamak için en son sonuçları gözden geçirin.When backup failures happen, review most recent results to understand which type of failure is happening. Depolama erişimi hatalarında, yedekleme yapılandırmasında kullanılan depolama ayarlarını gözden geçirin ve güncelleştirin.For storage access failures, review and update the storage settings used in the backup configuration. Veritabanı erişimi hatalarında, uygulama ayarlarının parçası olarak bağlantı dizelerinizi gözden geçirin ve güncelleştirin; ardından, gerekli veritabanlarını düzgün şekilde içerecek şekilde yedekleme yapılandırmanızı güncelleştirmeye devam edin.For database access failures, review and update your connections strings as part of app settings; then proceed to update your backup configuration to properly include the required databases. Uygulama yedeklemeleri hakkında daha fazla bilgi için bkz. Azure App Service bir Web uygulamasını yedekleme.For more information on app backups, see Back up a web app in Azure App Service.

Yeni Node.js uygulamalar dağıtıldığında Azure App ServiceWhen new Node.js apps are deployed to Azure App Service

Node.js uygulamalar için Azure App Service varsayılan yapılandırma, en yaygın uygulamaların ihtiyaçlarını en iyi şekilde karşılayacak şekilde hazırlanmıştır.Azure App Service default configuration for Node.js apps is intended to best suit the needs of most common apps. Node.js uygulamanızın yapılandırması, performansı artırmak veya CPU/bellek/ağ kaynakları için kaynak kullanımını iyileştirmek üzere kişiselleştirilmiş ayarlama avantajlarından yararlanacaksa, bkz. Azure App Service üzerindeki düğüm uygulamaları Için en iyi uygulamalar ve sorun giderme kılavuzu.If configuration for your Node.js app would benefit from personalized tuning to improve performance or optimize resource usage for CPU/memory/network resources, see Best practices and troubleshooting guide for Node applications on Azure App Service. Bu makalede, Node.js uygulamanız için yapılandırmanız gerekebilecek ıısnode ayarları açıklanmakta, uygulamanızın karşılaştığı çeşitli senaryolar veya sorunlar açıklanmakta ve bu sorunların nasıl ele alınacağını gösterilmektedir.This article describes the iisnode settings you may need to configure for your Node.js app, describes the various scenarios or issues that your app may be facing, and shows how to address these issues.

Sonraki AdımlarNext Steps

En iyi uygulamalar hakkında daha fazla bilgi için App Service tanılama ' yı ziyaret ederek kaynağına özgü eyleme dönüştürülebilir en iyi yöntemleri bulabilirsiniz.For more information on best practices, visit App Service Diagnostics to find out actionable best practices specific to your resource.

  • Azure PortalWeb uygulamanıza gidin.Navigate to your Web App in the Azure portal.
  • App Service Tanılama ' yı açan sol gezinmede sorunları Tanıla ve çöz ' e tıklayın.Click on Diagnose and solve problems in the left navigation, which opens App Service Diagnostics.
  • En Iyi Yöntemler giriş sayfası kutucuğu seçin.Choose Best Practices homepage tile.
  • En iyi yapılandırma uygulamalarına göre uygulamanızın geçerli durumunu görüntülemek için en iyi yapılandırmanın kullanılabilirlik & performansı veya en iyi uygulamaları Için en iyi yöntemler ' e tıklayın.Click Best Practices for Availability & Performance or Best Practices for Optimal Configuration to view the current state of your app in regards to these best practices.

Bu bağlantıyı, kaynağınız için App Service tanılamayı doğrudan açmak için de kullanabilirsiniz: https://ms.portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot .You can also use this link to directly open App Service Diagnostics for your resource: https://ms.portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot.