Översikt över Azure App Service Local Cache

Kommentar

Lokal cache stöds inte i funktionsappar eller appappar i containrar, till exempel i Windows-containrar eller i App Service på Linux. En version av lokal cache som är tillgänglig för dessa apptyper är App Cache.

Azure App Service-innehåll lagras i Azure Storage och visas på ett hållbart sätt som en innehållsresurs. Den här designen är avsedd att fungera med en mängd olika appar och har följande attribut:

  • Innehållet delas över flera virtuella datorinstanser (VM) i appen.
  • Innehållet är beständigt och kan ändras genom att köra appar.
  • Loggfiler och diagnostikdatafiler är tillgängliga under samma delade innehållsmapp.
  • När du publicerar nytt innehåll uppdateras innehållsmappen direkt. Du kan omedelbart visa samma innehåll via SCM-webbplatsen och appen som körs (vanligtvis vissa tekniker, till exempel ASP.NET starta om en app på vissa filändringar för att hämta det senaste innehållet).

Många appar använder en eller alla dessa funktioner, men vissa appar behöver bara ett skrivskyddat innehållsarkiv med höga prestanda som de kan köras från med hög tillgänglighet. Dessa appar kan dra nytta av en vm-instans av en specifik lokal cache.

Funktionen Lokal cache i Azure App Service ger en webbrollsvy över ditt innehåll. Det här innehållet är en cache för att skriva men ta bort lagringsinnehåll som skapas asynkront start på plats. När cacheminnet är klart växlas platsen till att köras mot det cachelagrade innehållet. Appar som körs i lokal cache har följande fördelar:

  • De är immuna mot svarstider som uppstår när de får åtkomst till innehåll i Azure Storage.
  • De påverkas inte av anslutningsproblem till lagringen, eftersom den skrivskyddade kopian cachelagras på arbetaren.
  • De har färre omstarter av appar på grund av ändringar i lagringsresursen.

Kommentar

Om du använder Java (Java SE, Tomcat eller JBoss EAP) kopieras som standard Java-artefakterna--.jar-, .war- och .ear-filer lokalt till arbetaren. Om java-programmet också är beroende av skrivskyddad åtkomst till andra filer anger du JAVA_COPY_ALL till true för att även dessa filer ska kopieras. Om lokal cache är aktiverad har den företräde framför den här Java-specifika förbättringen.

Hur den lokala cachen ändrar beteendet för App Service

  • D:\home pekar på den lokala cachen, som skapas på den virtuella datorinstansen när appen startas. D:\local fortsätter att peka på den tillfälliga VM-specifika lagringen.
  • Den lokala cachen innehåller en engångskopia av mapparna /site och /siteextensions i det delade innehållsarkivet, på D:\home\site respektive D:\home\siteextensions. Filerna kopieras till den lokala cachen när appen startar. Storleken på de två mapparna för varje app är begränsad till 1 GB som standard, men kan ökas till 2 GB. Observera att när cachestorleken ökar tar det längre tid att läsa in cacheminnet. Om du har ökat gränsen för lokal cache till 2 GB och de kopierade filerna överskrider den maximala storleken på 2 GB ignorerar App Service tyst lokal cache och läser från fjärrfilresursen.

Viktigt!

När de kopierade filerna överskrider den definierade storleksgränsen för lokal cache eller om ingen gräns har definierats kan distributions- och bytesåtgärder misslyckas med ett fel. Mer information finns i Vanliga frågor och svar .

  • Den lokala cachen är skrivskyddad. Ändringar ignoreras dock när appen flyttar virtuella datorer eller startas om. Använd inte den lokala cachen för appar som lagrar verksamhetskritiska data i innehållsarkivet.
  • D:\home\LogFiles och D:\home\Data innehåller loggfiler och appdata. De två undermapparna lagras lokalt på den virtuella datorinstansen och kopieras regelbundet till det delade innehållsarkivet. Appar kan spara loggfiler och data genom att skriva dem till dessa mappar. Det är dock bäst att kopiera till det delade innehållsarkivet, så det är möjligt att loggfiler och data går förlorade på grund av en plötslig krasch av en virtuell datorinstans.
  • Loggströmning påverkas av den bästa kopieringen. Du kan observera upp till en minuts fördröjning i de strömmade loggarna.
  • I det delade innehållsarkivet sker en ändring i mappstrukturen för Mapparna LogFiles och Data för appar som använder den lokala cachen. Det finns nu undermappar i dem som följer namngivningsmönstret för "unik identifierare" + tidsstämpel. Var och en av undermapparna motsvarar en VM-instans där appen körs eller har körts.
  • Andra mappar i D:\home finns kvar i det lokala cacheminnet och kopieras inte till det delade innehållsarkivet.
  • Appdistribution via valfri metod som stöds publicerar direkt till det varaktiga delade innehållsarkivet. Om du vill uppdatera mapparna D:\home\site och D:\home\siteextensions i den lokala cachen måste appen startas om. Om du vill göra livscykeln sömlös kan du läsa informationen senare i den här artikeln.
  • Standardinnehållsvyn för SCM-webbplatsen fortsätter att vara den för det delade innehållsarkivet.

Aktivera lokal cache i App Service

Kommentar

Lokal cache stöds inte på F1 - eller D1-nivån .

Du konfigurerar lokal cache med hjälp av en kombination av reserverade appinställningar. Du kan konfigurera dessa appinställningar med hjälp av följande metoder:

Konfigurera lokal cache med hjälp av Azure-portalen

Du aktiverar lokal cache per webbapp med hjälp av den här appinställningen: WEBSITE_LOCAL_CACHE_OPTION = Always

Azure portal app settings: Local Cache

Konfigurera lokal cache med hjälp av Azure Resource Manager

...

{
    "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"
    }
}

...

Ändra storleksinställningen i lokal cache

Som standard är den lokala cachestorleken 1 GB. Detta inkluderar mapparna /site och /siteextensions som kopieras från innehållsarkivet, samt eventuella lokalt skapade loggar och datamappar. Om du vill öka den här gränsen använder du appinställningen WEBSITE_LOCAL_CACHE_SIZEINMB. Du kan öka storleken till 2 GB (2 000 MB) per app. Observera att det tar längre tid att läsa in lokal cache när storleken ökar.

Metodtips för att använda Lokal Cache för App Service

Vi rekommenderar att du använder lokal cache tillsammans med funktionen Mellanlagringsmiljöer .

  • Lägg till den klibbiga appinställningen WEBSITE_LOCAL_CACHE_OPTION med värdet Always i produktionsplatsen. Om du använder WEBSITE_LOCAL_CACHE_SIZEINMBlägger du även till den som en klibbig inställning i produktionsfacket.
  • Skapa ett mellanlagringsfack och publicera till ditt mellanlagringsfack. Du ställer vanligtvis inte in mellanlagringsplatsen så att den använder lokal cache för att möjliggöra en sömlös livscykel för build-deploy-test för mellanlagring om du får fördelarna med Lokal cache för produktionsplatsen.
  • Testa din webbplats mot mellanlagringsplatsen.
  • När du är klar kan du utfärda en växlingsåtgärd mellan mellanlagrings- och produktionsplatserna.
  • Sticky-inställningar inkluderar namn och fäst på ett fack. Så när mellanlagringsplatsen växlas till Produktion ärver den appinställningarna för lokal cache. Den nyligen växlade produktionsplatsen körs mot den lokala cachen efter några minuter och värms upp som en del av platsuppvärmningen efter bytet. Så när fackväxlingen är klar körs produktionsfacket mot den lokala cachen.

Vanliga frågor och svar

Vad händer om storleksgränsen för lokal cache överskrids?

När de kopierade filerna överskrider storleksgränsen för lokal cache läser appen från fjärrresursen. Distributions- och växlingsåtgärder kan dock misslyckas med ett fel. Se tabellen nedan för storleksbegränsningar och resultat.

 Lokal cachestorlek Hanterade filer Resultat
≤ 2 GB ≤ lokal cachestorlek Läser från lokal cache.
≤ 2 GB > Lokal cachestorlek Läsningar från fjärrresurs.
Obs! Distributions- och växlingsåtgärder kan misslyckas med ett fel.

Hur vet jag om lokal cache gäller för min app?

Om din app behöver ett tillförlitligt innehållslager med höga prestanda, inte använder innehållsarkivet för att skriva kritiska data vid körning och är mindre än 2 GB i total storlek är svaret "ja"! Om du vill få den totala storleken på mapparna /site och /siteextensions kan du använda webbplatstillägget "Diskanvändning för Azure Web Apps".

Hur vet jag om min webbplats har bytt till att använda lokal cache?

Om du använder funktionen Lokal cache med mellanlagringsmiljöer slutförs inte växlingsåtgärden förrän den lokala cachen har värmts upp. Om du vill kontrollera om webbplatsen körs mot lokal cache kan du kontrollera miljövariabeln för arbetsprocess.WEBSITE_LOCALCACHE_READY Använd anvisningarna på variabelsidan för arbetsprocessmiljön för att komma åt miljövariabeln för arbetsprocesser på flera instanser.

Jag har precis publicerat nya ändringar, men min app verkar inte ha dem. Varför?

Om appen använder lokal cache måste du starta om webbplatsen för att få de senaste ändringarna. Vill du inte publicera ändringar på en produktionsplats? Se fackalternativen i föregående metodtipsavsnitt.

Kommentar

Alternativet för att köra från paketdistribution är inte kompatibelt med lokal cache.

Var är mina loggar?

Med Lokal cache ser dina loggar och datamappar lite annorlunda ut. Strukturen för dina undermappar förblir dock densamma, förutom att undermapparna är inbäddade under en undermapp med formatet "unik VM-identifierare" + tidsstämpel.

Jag har lokal cache aktiverad, men min app startas fortfarande om. Varför är det? Jag trodde att Local Cache hjälpte till med frekventa omstarter av appar.

Lokal cache hjälper till att förhindra omstarter av lagringsrelaterade appar. Din app kan dock fortfarande startas om under planerade infrastrukturuppgraderingar av den virtuella datorn. Den övergripande appen startar om som du upplever med lokal cache aktiverad bör vara färre.

Utesluter lokal cache att kataloger kopieras till den snabbare lokala enheten?

Som en del av steget som kopierar lagringsinnehållet undantas alla mappar som heter lagringsplats. Detta hjälper till med scenarier där webbplatsinnehållet kan innehålla en lagringsplats för källkontroll som kanske inte behövs i den dagliga driften av appen.

Så här rensar du de lokala cacheloggarna efter en platshanteringsåtgärd?

Om du vill rensa de lokala cacheloggarna stoppar och startar du om appen. Den här åtgärden rensar den gamla cachen.

Varför börjar App Service visa tidigare distribuerade filer efter en omstart när lokal cache är aktiverad?

Om App Service börjar visa tidigare distribuerade filer vid en omstart kontrollerar du om det finns någon appinställning – "WEBSITE_DISABLE_SCM_SEPARATION=true". När du har lagt till den här inställningen börjar alla distributioner via KUDU skriva till den lokala virtuella datorn i stället för den beständiga lagringen. Metodtips som nämns ovan i den här artikeln bör utnyttjas, där distributionerna alltid ska göras till mellanlagringsplatsen som inte har lokal cache aktiverad.

Fler resurser

Referens för miljövariabler och appinställningar