Azure Uygulaması Hizmeti Yerel Önbelleğine genel bakış

Dekont

Yerel önbellek, Windows Kapsayıcıları veya Linux üzerinde App Service gibi işlev uygulamalarında veya kapsayıcılı App Service uygulamalarında desteklenmez. Bu uygulama türleri için kullanılabilen yerel önbelleğin bir sürümü Uygulama Önbelleği'dir.

Azure Uygulaması Hizmeti içeriği Azure Depolama'da depolanır ve içerik paylaşımı olarak dayanıklı bir şekilde ortaya çıkar. Bu tasarım çeşitli uygulamalarla çalışacak şekilde tasarlanmıştır ve aşağıdaki özniteliklere sahiptir:

  • İçerik, uygulamanın birden çok sanal makine (VM) örneğinde paylaşılır.
  • İçerik dayanıklıdır ve uygulamalar çalıştırılarak değiştirilebilir.
  • Günlük dosyaları ve tanılama veri dosyaları aynı paylaşılan içerik klasörü altında kullanılabilir.
  • Yeni içerik yayımlanması doğrudan içerik klasörünü güncelleştirir. SCM web sitesi ve çalışan uygulama aracılığıyla aynı içeriği hemen görüntüleyebilirsiniz (genellikle ASP.NET gibi bazı teknolojiler, en son içeriği almak için bazı dosya değişikliklerinde uygulama yeniden başlatma işlemi başlatır).

Birçok uygulama bu özelliklerden birini veya tümünü kullansa da, bazı uygulamaların yüksek kullanılabilirlikle çalıştırabilecekleri yüksek performanslı, salt okunur bir içerik deposuna ihtiyacı vardır. Bu uygulamalar, belirli bir yerel önbelleğin VM örneğinden yararlanabilir.

Azure Uygulaması Hizmeti Yerel Önbelleği özelliği, içeriğinizin web rolü görünümünü sağlar. Bu içerik, depolama içeriğinizin zaman uyumsuz olarak yerinde başlatma olarak oluşturulan yazma ama atma önbelleğidir. Önbellek hazır olduğunda, site önbelleğe alınmış içeriğe karşı çalışacak şekilde değiştirilir. Yerel Önbellekte çalışan uygulamaların aşağıdaki avantajları vardır:

  • Azure Depolama'da içeriğe eriştiklerinde oluşan gecikme sürelerine karşı bağışıklıkları vardır.
  • Salt okunur kopya çalışanda önbelleğe alındığından depolamaya bağlantı sorunlarında etkilenmez.
  • Depolama paylaşımı değişiklikleri nedeniyle daha az uygulama yeniden başlatması var.

Dekont

Java (Java SE, Tomcat veya JBoss EAP) kullanıyorsanız java yapıtları--.jar, .war ve .ear dosyaları varsayılan olarak çalışana yerel olarak kopyalanır. Java uygulamanız diğer dosyalara da salt okunur erişime bağımlıysa, bu dosyaların da kopyalanması için olarak ayarlayın JAVA_COPY_ALLtrue . Yerel Önbellek etkinleştirildiyse, bu Java'ya özgü geliştirmeden önceliklidir.

Yerel önbellek App Service'in davranışını nasıl değiştirir?

  • D:\home , uygulama başlatıldığında VM örneğinde oluşturulan yerel önbelleği gösterir. D:\local , geçici VM'ye özgü depolamayı işaret etmeye devam eder.
  • Yerel önbellek, D:\home\site ve D:\home\siteextensions konumunda, paylaşılan içerik deposunun /site ve /siteextensions klasörlerinin tek seferlik bir kopyasını içerir. Dosyalar, uygulama başlatıldığında yerel önbelleğe kopyalanır. Her uygulama için iki klasör boyutu varsayılan olarak 1 GB ile sınırlıdır, ancak 2 GB'a artırılabilir. Önbellek boyutu arttıkça önbelleğin yüklenmesinin daha uzun süreceğini unutmayın. Yerel önbellek sınırını 2 GB'a yükselttiyseniz ve kopyalanan dosyalar en fazla 2 GB boyutu aşıyorsa, App Service yerel önbelleği sessizce yoksayar ve uzak dosya paylaşımından okur.

Önemli

Kopyalanan dosyalar tanımlı Yerel Önbellek boyut sınırını aştığında veya sınır tanımlanmadığında dağıtım ve değiştirme işlemleri bir hatayla başarısız olabilir. Daha fazla bilgi için SSS bölümüne bakın.

  • Yerel önbellek okuma-yazmadır. Ancak, uygulama sanal makineleri taşırken veya yeniden başlatıldığında tüm değişiklikler atılır. görev açısından kritik verileri içerik deposunda depolayan uygulamalar için yerel önbelleği kullanmayın.
  • D:\home\LogFiles ve D:\home\Data günlük dosyalarını ve uygulama verilerini içerir. İki alt klasör VM örneğinde yerel olarak depolanır ve düzenli aralıklarla paylaşılan içerik deposuna kopyalanır. Uygulamalar günlük dosyalarını ve verileri bu klasörlere yazarak kalıcı hale gelebilir. Ancak, paylaşılan içerik deposuna kopya en iyi çabayı gösterir, bu nedenle vm örneğinin aniden kilitlenmesi nedeniyle günlük dosyalarının ve verilerin kaybolması mümkündür.
  • Günlük akışı en iyi çalışma kopyasından etkilenir. Akış günlüklerinde bir dakikaya kadar gecikme olduğunu gözlemleyebilirsiniz.
  • Paylaşılan içerik deposunda, yerel önbelleği kullanan uygulamalar için LogFiles ve Veri klasörlerinin klasör yapısında bir değişiklik vardır. Artık içinde "benzersiz tanımlayıcı" + zaman damgası adlandırma desenini izleyen alt klasörler vardır. Alt klasörlerin her biri, uygulamanın çalıştığı veya çalıştırıldığı bir VM örneğine karşılık gelir.
  • D:\home içindeki diğer klasörler yerel önbellekte kalır ve paylaşılan içerik deposuna kopyalanmaz.
  • Desteklenen herhangi bir yöntem aracılığıyla uygulama dağıtımı doğrudan dayanıklı paylaşılan içerik deposunda yayımlar. Yerel önbellekteki D:\home\site ve D:\home\siteextensions klasörlerini yenilemek için uygulamanın yeniden başlatılması gerekir. Yaşam döngüsünü sorunsuz hale getirmek için bu makalenin devamında yer alan bilgilere bakın.
  • SCM sitesinin varsayılan içerik görünümü, paylaşılan içerik deposununki gibi olmaya devam eder.

App Service'te Yerel Önbelleği Etkinleştirme

Dekont

Yerel Önbellek F1 veya D1 katmanında desteklenmez.

Ayrılmış uygulama ayarlarının bir bileşimini kullanarak Yerel Önbellek'i yapılandırırsınız. Aşağıdaki yöntemleri kullanarak bu uygulama ayarlarını yapılandırabilirsiniz:

Azure portalını kullanarak Yerel Önbelleği yapılandırma

Bu uygulama ayarını kullanarak Web uygulaması başına Yerel Önbellek'i etkinleştirirsiniz: WEBSITE_LOCAL_CACHE_OPTION = Always

Azure portal app settings: Local Cache

Azure Resource Manager kullanarak Yerel Önbelleği yapılandırma

...

{
    "apiVersion": "2015-08-01",
    "type": "config",
    "name": "appsettings",
    "dependsOn": [
        "[resourceId('Microsoft.Web/sites/', variables('siteName'))]"
    ],

    "properties": {
        "WEBSITE_LOCAL_CACHE_OPTION": "Always",
        "WEBSITE_LOCAL_CACHE_SIZEINMB": "1000"
    }
}

...

Yerel Önbellek'te boyut ayarını değiştirme

Varsayılan olarak, yerel önbellek boyutu 1 GB'tır. Bu, içerik deposundan kopyalanan /site ve /siteextensions klasörlerinin yanı sıra yerel olarak oluşturulan günlükleri ve veri klasörlerini içerir. Bu sınırı artırmak için uygulama ayarını WEBSITE_LOCAL_CACHE_SIZEINMBkullanın. Boyutu uygulama başına 2 GB'a (2000 MB) kadar artırabilirsiniz. Boyut arttıkça yerel önbelleğin yüklenmesinin daha uzun süreceğini unutmayın.

App Service Yerel Önbelleğini kullanmaya yönelik en iyi yöntemler

Yerel Önbellek'i Hazırlama Ortamları özelliğiyle birlikte kullanmanızı öneririz.

  • Değeriyle Always yapışkan uygulama ayarını WEBSITE_LOCAL_CACHE_OPTION Üretim yuvanıza ekleyin. kullanıyorsanız WEBSITE_LOCAL_CACHE_SIZEINMB, bunu Üretim yuvanıza yapışkan bir ayar olarak da ekleyin.
  • Bir Hazırlama yuvası oluşturun ve Hazırlama yuvanızda yayımlayın. Üretim yuvası için Yerel Önbellek'in avantajlarından yararlanırsanız, hazırlama için sorunsuz bir derleme-dağıtım-test yaşam döngüsünü etkinleştirmek için genellikle hazırlama yuvasını Yerel Önbellek'i kullanacak şekilde ayarlamazsınız.
  • Sitenizi Hazırlama yuvanızda test edin.
  • Hazır olduğunuzda, Hazırlama ve Üretim yuvalarınız arasında bir değiştirme işlemi oluşturun.
  • Yapışkan ayarlar, adı ve bir yuvaya yapışıklığı içerir. Bu nedenle Hazırlama yuvası Üretim alanına değiştirildiğinde Yerel Önbellek uygulama ayarlarını devralır. Yeni değiştirilmiş Üretim yuvası, birkaç dakika sonra yerel önbellekte çalışır ve değiştirme sonrasında yuva ısınmasının bir parçası olarak ısınır. Bu nedenle yuva değiştirme işlemi tamamlandığında Üretim yuvanız yerel önbellekte çalışır.

Sık sorulan sorular (SSS)

Yerel Önbellek boyut sınırı aşılırsa ne olur?

Kopyalanan dosyalar Yerel Önbellek boyutu sınırını aştığında, uygulama uzak paylaşımdan okur. Ancak dağıtım ve değiştirme işlemleri bir hatayla başarısız olabilir. Boyut sınırları ve sonuçları için aşağıdaki tabloya bakın.

 Yerel Önbellek boyutu Dosyalarla başa çıktı Sonuç
≤ 2 GB Yerel Önbellek boyutunu ≤ Yerel önbellekten okur.
≤ 2 GB > Yerel Önbellek boyutu Uzak paylaşımdan okur.
Not: Dağıtım ve değiştirme işlemleri bir hatayla başarısız olabilir.

Yerel Önbellek'in uygulamam için geçerli olup olmadığını nasıl anlayabilirim?

Uygulamanızın yüksek performanslı, güvenilir bir içerik deposuna ihtiyacı varsa, çalışma zamanında kritik verileri yazmak için içerik depoyu kullanmıyorsa ve toplam boyutu 2 GB'tan küçükse, yanıt "evet" olur! /site ve /siteextensions klasörlerinizin toplam boyutunu almak için "Azure Web Apps Disk Kullanımı" site uzantısını kullanabilirsiniz.

Sitemin Yerel Önbellek'i kullanmaya geçip geçmediğini nasıl anlayabilirim?

Hazırlama Ortamları ile Yerel Önbellek özelliğini kullanıyorsanız, Yerel Önbellek ısınana kadar değiştirme işlemi tamamlanmaz. Sitenizin Yerel Önbellekte çalışıp çalışmadığını denetlemek için çalışan işlemi ortam değişkenini WEBSITE_LOCALCACHE_READYde de kontrol edebilirsiniz. Birden çok örnekte çalışan işlem ortamı değişkenine erişmek için çalışan işlemi ortam değişkeni sayfasındaki yönergeleri kullanın.

Yeni değişiklikler yayımladım, ancak uygulamamda bu değişiklikler yok gibi görünüyor. Neden?

Uygulamanız Yerel Önbellek kullanıyorsa en son değişiklikleri almak için sitenizi yeniden başlatmanız gerekir. Değişiklikleri üretim sitesinde yayımlamak istemiyor musunuz? Önceki en iyi yöntemler bölümündeki yuva seçeneklerine bakın.

Dekont

Paket dağıtımından çalıştır seçeneği yerel önbellekle uyumlu değil.

Günlüklerim nerede?

Yerel Önbellek ile günlükleriniz ve veri klasörleriniz biraz farklı görünür. Ancak, alt klasörlerinizin yapısı aynı kalır, ancak alt klasörler "benzersiz VM tanımlayıcısı" + zaman damgası biçiminde bir alt klasörün altında iç içe yerleştirilmiştir.

Yerel Önbellek etkinleştirildi, ancak uygulamam hala yeniden başlatılmış durumda. Bunun nedeni nedir? Yerel Önbellek'in sık sık uygulama yeniden başlatmalarına yardımcı olduğunu sanıyordum.

Yerel Önbellek, depolamayla ilgili uygulama yeniden başlatmalarını önlemeye yardımcı olur. Ancak, vm'nin planlı altyapı yükseltmeleri sırasında uygulamanız yeniden başlatılabilir. Yerel Önbellek etkinken karşılaştığınız genel uygulama yeniden başlatma işlemleri daha az olmalıdır.

Yerel Önbellek, dizinlerin daha hızlı yerel sürücüye kopyalanmasını dışlar mı?

Depolama içeriğini kopyalayan adımın bir parçası olarak, depo olarak adlandırılan tüm klasör dışlanır. Bu, site içeriğinizin uygulamanın günlük çalışmasında gerekmeyebilecek bir kaynak denetimi deposu içerebileceği senaryolarda yardımcı olur.

Site yönetimi işleminden sonra yerel önbellek günlükleri nasıl temizlenmektedir?

Yerel önbellek günlüklerini temizlemek için uygulamayı durdurun ve yeniden başlatın. Bu eylem eski önbelleği temizler.

Yerel Önbellek etkinleştirildiğinde App Service neden yeniden başlatıldıktan sonra önceden dağıtılan dosyaları göstermeye başlıyor?

App Service'in daha önce dağıtılan dosyaları yeniden başlatmada göstermeye başlaması durumunda, 'WEBSITE_DISABLE_SCM_SEPARATION=true' Uygulama Ayarının olup olmadığını denetleyin. Bu ayarı ekledikten sonra KUDU aracılığıyla yapılan dağıtımlar kalıcı depolama yerine yerel VM'ye yazmaya başlar. Bu makalede yukarıda bahsedilen en iyi yöntemlerden yararlanılmalıdır; burada dağıtımlar her zaman Yerel Önbellek etkin olmayan hazırlama yuvasına yapılmalıdır.

Diğer kaynaklar

Ortam değişkenleri ve uygulama ayarları başvurusu