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

Bu makalede kullanmak için en iyi uygulamalar özetlenmektedir Azure App Service.This article summarizes best practices for using Azure App Service.

Birlikte bulundurmaColocation

Farklı bölgelerdeki Azure kaynakları bir web uygulaması ve bir veritabanı gibi bir çözüm oluşturma bulunduğunda, aşağıdaki etkileri 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:

  • Daha yüksek gecikme süresiyle kaynakları arasındaki iletişimIncreased latency in communication between resources
  • Parasal ücretleri için giden veri aktarımı üzerinde belirtildiği gibi bölgeler arası Azure fiyatlandırma sayfasını.Monetary charges for outbound data transfer cross-region as noted on the Azure pricing page.

Birlikte bulundurma aynı bölgedeki bir web uygulaması ve içerik veya verileri tutmak için kullanılan bir veritabanı veya depolama hesabı gibi bir çözüm oluşturma 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. Kaynakları oluşturulurken belirli iş ya da bunları olmayacak biçimde nedeni tasarım sürece, aynı Azure bölgesinde olduğundan emin olun.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. Kullanarak aynı bölgede veritabanı için bir App Service uygulaması taşıyabilirsiniz App Service kopyalama özelliği Premium App Service planı uygulamalar için kullanılabilir.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.

Ne zaman beklenenden daha fazla bellek uygulamalarını kullanmaWhen apps consume more memory than expected

Belirtilen izleme veya hizmet önerileri, bir uygulama olarak beklenenden daha fazla bellek tüketir olduğunu fark, göz önünde bulundurun App Service otomatik olarak onarma özelliği.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üzeltmeyi özelliği için seçeneklerden birini Bellek Eşiği temel alarak özel eylemler sürüyor.One of the options for the Auto-Healing feature is taking custom actions based on a memory threshold. Eylemler, e-posta bildirimleri yelpazesinden şirket--nokta risk azaltma için bellek dökümü aracılığıyla araştırma için çalışan işlemi geri dönüştürerek yayılır.Actions span the spectrum from email notifications to investigation via memory dump to on-the-spot mitigation by recycling the worker process. Otomatik düzeltmeyi yapılandırılabilir web.config aracılığıyla ve kolay bir kullanıcı arabirimi aracılığıyla için bu blog gönderisinde açıklandığı uygulama hizmeti destek Site uzantısı.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.

Ne zaman beklenenden daha fazla CPU uygulamalarını kullanmaWhen apps consume more CPU than expected

Fark, uygulama beklenenden daha fazla CPU kullanan veya artırma veya azaltma App Service planı kullanıma deneyimleri yinelenen CPU'daki ani değişikliklerin izleme veya hizmet önerileri belirtildiği gibi düşünün.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ı durum bilgisi olan, uygulamanız varsa durum bilgisi olmayan, ölçeklendirme çıkış size daha fazla esneklik ve daha yüksek ölçek olası getirirken büyütme tek seçenek ise.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 bilgisi olmayan" uygulamalar hakkında daha fazla bilgi için bu videoyu izleyebilirsiniz: Ölçeklenebilir uçtan uca çok katmanlı uygulaması üzerinde Azure App Service'te 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. Web uygulamasını Azure App Service'te ölçeklendirme.For more information about App Service scaling and autoscaling options, see Scale a Web App in Azure App Service.

Ne zaman yuva kaynakları tükendiWhen socket resources are exhausted

Tükettiğini giden TCP bağlantılarına yaygın bir nedeni, istemci kitaplıklarının hangi TCP bağlantılarını yeniden uygulanmadı veya HTTP - tutma gibi daha üst düzey bir protokol değil kullanıldığında kullanılır.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. App Service yapılandırılmış veya verimli kullanılmasını giden bağlantılar için kodunuza erişir emin olmak için planınızı uygulamalar tarafından başvurulan kitaplıkların her birinde 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 uygun oluşturma ve yayın veya bağlantıları sızdırılmasını önlemek için temizleme kitaplığı belgeleri yönergeleri izleyin.Also follow the library documentation guidance for proper creation and release or cleanup to avoid leaking connections. Bu istemci kitaplıklarını araştırmalar devam ederken, etkisi birden fazla örneğe ölçek genişletilerek azaltılması.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

Birçok giden http isteklerini ve node.js ile çalışırken, HTTP - tutma uğraşmanızı önemlidir.When working with Node.js and many outgoing http requests, dealing with HTTP - Keep-Alive is important. Kullanabileceğiniz agentkeepalive npm kodunuzda kolaylaştırmak için paket.You can use the agentkeepalive npm package to make it easier in your code.

Her zaman işlemek http işleyici, hiçbir şey yapma olsa bile yanıt.Always handle the http response, even if you do nothing in the handler. Yanıt düzgün şekilde işlemez, hiçbir daha fazla yuva kullanılabilir olmadığından, uygulamanızın sonunda takılı.If you don't handle the response properly, your application gets stuck eventually because no more sockets are available.

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

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

Linux üzerinde App Service'te birden çok çekirdeğe sahip bir makine üzerinde çalıştırıyorsanız, başka bir en iyi PM2 uygulamanızı yürütmek için birden çok Node.js işlemlerine başlamak için kullanmaktı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. Kapsayıcı için bir başlangıç komutu belirterek bunu yapabilirsiniz.You can do it by specifying a startup command to your container.

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

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

Ne zaman uygulamanızı yedekleme başarısız başlatırWhen your app backup starts failing

Uygulama yedekleme başarısız neden olan iki en yaygın nedenleri: Geçersiz depolama ayarlarını 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 hatalar genellikle depolama veya veritabanı kaynaklarına değişiklikleri veya bu kaynaklara (örneğin, yedekleme ayarlarında seçili veritabanı için güncelleştirilmiş kimlik) öğrenmek için değişiklikler olduğunda gerçekleşir.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ıştırın ve (için kopyalama ve yedeklemeye dahil edilecek içeriği okunurken) depolama (Yedeklenen dosyaların çıktısı için) ve veritabanlarına 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). Ya da bu kaynakları erişmek başarısız sonucu tutarlı yedekleme başarısız olacaktır.The result of failing to access either of these resources would be consistent backup failure.

Yedekleme hataları meydana geldiğinde, hangi tür hataları olup olmadığını 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şim hataları için gözden geçirin ve yedekleme yapılandırmasında kullanılan depolama ayarlarını güncelleştirin.For storage access failures, review and update the storage settings used in the backup configuration. Veritabanı erişim hataları gözden geçirin ve uygulama ayarlarının bir parçası, bağlantı dizelerini güncelleştirin; ardından yedekleme yapılandırmanızı doğru gerekli veritabanlarını içerecek şekilde güncelleştirmek için 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'te bir web uygulamasını yedekleme.For more information on app backups, see Back up a web app in Azure App Service.

Ne zaman yeni bir Node.js uygulamalarını Azure App Service'e dağıtılırWhen 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ın ihtiyaçlarını en iyi uyacak şekilde yöneliktir.Azure App Service default configuration for Node.js apps is intended to best suit the needs of most common apps. Node.js uygulamanız için yapılandırma kişiselleştirilmiş ayarlama gelen performansını veya CPU/bellek/ağ kaynakları için kaynak kullanımını en iyi duruma görmek için yararlı en iyi yöntemler ve Azure uygulamasında node.js uygulamaları için sorun giderme kılavuzu Hizmet.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 değiştirmeniz gerekebilir, çeşitli senaryolar açıklanmaktadır veya uygulamanızı karşılaşmış ve bu sorunları gidermeye yönelik gösterilmektedir sorunları iisnode ayarları açıklanır.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.