Metodtips för Azure App Service

Den här artikeln sammanfattar metodtips för att använda Azure App Service.

Samlokalisering

En Azure App Service-lösning består av en webbapp och ett databas- eller lagringskonto för att lagra innehåll eller data. När dessa resurser finns i olika regioner kan situationen ha följande effekter:

  • Ökad svarstid i kommunikationen mellan resurser
  • Ekonomiska avgifter för utgående dataöverföring mellan regioner, enligt vad som anges på prissättningssidan för Azure

Samlokalisering är bäst för Azure-resurser som utgör en lösning. När du skapar resurser kontrollerar du att de finns i samma Azure-region om du inte har specifika affärs- eller designskäl för att de inte ska vara det. Du kan flytta en App Service-app till samma region som din databas med hjälp av den Kloningsfunktion för App Service som är tillgänglig i Premium App Service-planer.

Fäst certifikat

Kodning av certifikat är en praxis där ett program endast tillåter en specifik lista över godkända certifikatutfärdare (CA), offentliga nycklar, tumavtryck eller någon del av certifikathierarkin.

Program bör aldrig ha ett hårt beroende eller fäst på standard-jokertecknet (*.azurewebsites.net) TLS-certifikatet. App Service är en plattform som en tjänst (PaaS), så det här certifikatet kan roteras när som helst. Om tjänsten roterar standard-TLS-certifikatet för jokertecken kommer certifikatfästa program att bryta och störa anslutningen för program som är hårdkodade till en specifik uppsättning certifikatattribut. Den periodicitet med vilken certifikatet roteras garanteras inte heller eftersom rotationsfrekvensen kan ändras när som helst.

Program som är beroende av certifikatanslutning bör inte heller ha ett hårt beroende av ett App Service-hanterat certifikat. App Service-hanterade certifikat kan roteras när som helst, vilket leder till liknande problem för program som förlitar sig på stabila certifikategenskaper. Det är en bra idé att tillhandahålla ett anpassat TLS-certifikat för program som är beroende av att certifikat fästs.

Om ditt program behöver förlita sig på beteende för att fästa certifikat rekommenderar vi att du lägger till en anpassad domän i en webbapp och anger ett anpassat TLS-certifikat för domänen. Programmet kan sedan förlita sig på det anpassade TLS-certifikatet för att fästa certifikatet.

Minnesresurser

När övervaknings- eller tjänstrekommendationer anger att en app förbrukar mer minne än förväntat bör du överväga funktionen för automatisk återställning av App Service. Du kan konfigurera automatisk återställning med hjälp av web.config.

Ett av alternativen för funktionen för automatisk återställning är att vidta anpassade åtgärder baserat på ett minneströskelvärde. Åtgärderna sträcker sig från e-postaviseringar till undersökning via minnesdumpning till åtgärder på plats genom att återanvända arbetsprocessen.

CPU-resurser

När övervaknings- eller tjänstrekommendationer anger att en app förbrukar mer CPU än förväntat eller om den upplever upprepade CPU-toppar bör du överväga att skala upp eller skala ut App Service-planen. Om programmet är tillståndskänsligt är uppskalning det enda alternativet. Om ditt program är tillståndslöst ger utskalning dig mer flexibilitet och större skalningspotential.

Mer information om skalnings- och autoskalningsalternativ för App Service finns i Skala upp en app i Azure App Service.

Socket-resurser

En vanlig orsak till utgående TCP-anslutningar är användningen av klientbibliotek som inte återanvänder TCP-anslutningar eller som inte använder ett protokoll på högre nivå, till exempel HTTP keep-alive.

Granska dokumentationen för varje bibliotek som apparna i App Service-planen refererar till. Kontrollera att biblioteken har konfigurerats eller använts i koden för effektiv återanvändning av utgående anslutningar. Följ även bibliotekets dokumentationsvägledning för korrekt skapande och rensning för att undvika läckande anslutningar. Även om sådana undersökningar av klientbibliotek pågår kan du minimera påverkan genom att skala ut till flera instanser.

Node.js och utgående HTTP-begäranden

När du arbetar med Node.js och många utgående HTTP-begäranden är det viktigt att hantera HTTP keep-alive. Du kan använda agentkeepalive-paketetnpm för att göra det enklare i koden.

Hantera alltid svaret http , även om du inte gör något i hanteraren. Om du inte hanterar svaret korrekt fastnar programmet så småningom eftersom inga fler sockets är tillgängliga.

Här är ett exempel på hur du hanterar svaret när du arbetar med http paketet eller https :

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

Om du kör din App Service-app på en Linux-dator som har flera kärnor är en annan metod att använda PM2 för att starta flera Node.js-processer för att köra ditt program. Du kan göra det genom att ange ett startkommando för containern.

Använd till exempel det här kommandot för att starta fyra instanser:

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

Appsäkerhetskopiering

Säkerhetskopior körs vanligtvis enligt ett schema och kräver åtkomst till lagring (för utdata från säkerhetskopierade filer) och databaser (för kopiering och läsning av innehåll som ska ingå i säkerhetskopian). Resultatet av att det inte går att komma åt någon av dessa resurser är ett konsekvent säkerhetskopieringsfel.

De två vanligaste orsakerna till att säkerhetskopieringen av appar misslyckas är ogiltiga lagringsinställningar och ogiltig databaskonfiguration. Dessa fel inträffar vanligtvis efter ändringar i lagrings- eller databasresurser, eller efter ändringar i autentiseringsuppgifter för åtkomst till dessa resurser. Autentiseringsuppgifter kan till exempel uppdateras för den databas som du valde i säkerhetskopieringsinställningarna.

När säkerhetskopieringsfel inträffar granskar du de senaste resultaten för att förstå vilken typ av fel som inträffar. Granska och uppdatera lagringsinställningarna i säkerhetskopieringskonfigurationen för fel vid lagringsåtkomst. Granska och uppdatera dina anslutningssträng som en del av appinställningarna för problem med databasåtkomst. Fortsätt sedan med att uppdatera säkerhetskopieringskonfigurationen så att den innehåller de databaser som krävs.

Mer information om appsäkerhetskopior finns i Säkerhetskopiera och återställa din app i Azure App Service.

Node.js-appar

Standardkonfigurationen för Azure App Service för Node.js-appar är avsedd att passa de vanligaste apparnas behov. Om du vill anpassa standardkonfigurationen för node.js-appen för att förbättra prestanda eller optimera resursanvändningen för PROCESSOR-, minnes- eller nätverksresurser kan du läsa Metodtips och felsökningsguide för Node-program i Azure App Service. I den artikeln beskrivs de iisnode-inställningar som du kan behöva konfigurera för din Node.js-app. Den förklarar också hur du hanterar scenarier eller problem med din app.

IoT-enheter

Du kan förbättra din miljö när du kör IoT-enheter (Internet of Things) som är anslutna till App Service.

En vanlig metod med IoT-enheter är att fästa certifikat. För att undvika oförutsedda avbrott på grund av ändringar i tjänstens hanterade certifikat bör du aldrig fästa certifikat på standardcertifikatet *.azurewebsites.net eller till ett Hanterat App Service-certifikat. Om systemet behöver förlita sig på beteendet för att fästa certifikat rekommenderar vi att du lägger till en anpassad domän i en webbapp och anger ett anpassat TLS-certifikat för domänen. Programmet kan sedan förlita sig på det anpassade TLS-certifikatet för att fästa certifikatet. Mer information finns i avsnittet om att fästa certifikat i den här artikeln.

Om du vill öka motståndskraften i din miljö ska du inte förlita dig på en enda slutpunkt för alla dina enheter. Värdhantera dina webbappar i minst två regioner för att undvika en enda felpunkt och vara redo att redundansväxla trafiken.

I App Service kan du lägga till identiska anpassade domäner i flera webbappar, så länge dessa webbappar finns i olika regioner. Den här funktionen säkerställer att om du behöver fästa certifikat kan du även fästa det anpassade TLS-certifikatet som du angav.

Ett annat alternativ är att använda en lastbalanserare framför webbapparna, till exempel Azure Front Door eller Azure Traffic Manager, för att säkerställa hög tillgänglighet för dina webbappar. Mer information finns i Snabbstart: Skapa en Front Door-instans för ett globalt webbprogram med hög tillgänglighet eller Kontrollera Azure App Service-trafik med Azure Traffic Manager.

Nästa steg

Använd App Service-diagnostik för att få användbara metodtips som är specifika för din resurs:

  1. Gå till din webbapp i Azure-portalen.
  2. Öppna App Service-diagnostik genom att välja Diagnostisera och lösa problem i det vänstra fönstret.
  3. Välj panelen Metodtips .
  4. Välj Metodtips för tillgänglighet och prestanda eller metodtips för optimal konfiguration för att visa appens aktuella tillstånd i förhållande till dessa metodtips.

Du kan också använda den här länken för att öppna App Service-diagnostik direkt för din resurs: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot.