Felsöka problem med långsamma appprestanda i Azure App Service

Den här artikeln hjälper dig att felsöka problem med långsamma appprestanda i Azure App Service.

Om du behöver mer hjälp när som helst i den här artikeln kan du kontakta Azure-experterna på MSDN Azure och Stack Overflow-forumen. Du kan också ange en Azure Support incident. Gå till Azure-supportwebbplatsen och klicka på Hämta support.

Symptom

När du bläddrar i appen läses sidorna in långsamt och ibland överskrids tidsgränsen.

Orsak

Det här problemet orsakas ofta av problem på programnivå, till exempel:

  • nätverksbegäranden tar lång tid
  • programkod eller databasfrågor som är ineffektiva
  • program med högt minne/CPU
  • program kraschar på grund av ett undantag

Felsökningsanvisningar

Felsökning kan delas in i tre olika uppgifter i sekventiell ordning:

  1. Observera och övervaka programmets beteende
  2. Samla in data
  3. Åtgärda problemet

App Service ger dig olika alternativ i varje steg.

1. Observera och övervaka programmets beteende

Spåra Tjänststatus

Microsoft Azure offentliggör varje gång ett tjänstavbrott eller prestanda försämras. Du kan spåra tjänstens hälsotillstånd på Azure Portal. Mer information finns i Spåra tjänstens hälsa.

Övervaka din app

Med det här alternativet kan du ta reda på om programmet har några problem. På bladet för appen klickar du på panelen Begäranden och fel . Bladet Mått visar alla mått som du kan lägga till.

Några av de mått som du kanske vill övervaka för din app är

  • Genomsnittlig minnesarbetsuppsättning
  • Svarstid
  • CPU-tid
  • Minnesarbetsuppsättning
  • Begäranden

övervaka appprestanda

Mer information finns i:

Övervaka webbslutpunktsstatus

Om du kör din app på prisnivån Standard kan du App Service övervaka två slutpunkter från tre geografiska platser.

Slutpunktsövervakning konfigurerar webbtester från geo-distribuerade platser som testar svarstiden och drifttiden för webb-URL:er. Testet utför en HTTP GET-åtgärd på webb-URL:en för att fastställa svarstiden och drifttiden från varje plats. Varje konfigurerad plats kör ett test var femte minut.

Drifttiden övervakas med HTTP-svarskoder och svarstiden mäts i millisekunder. Ett övervakningstest misslyckas om HTTP-svarskoden är större än eller lika med 400 eller om svaret tar mer än 30 sekunder. En slutpunkt anses vara tillgänglig om dess övervakningstester lyckas från alla angivna platser.

Information om hur du konfigurerar det finns i Övervaka appar i Azure App Service.

Se även Hålla Azure-webbplatserna uppe plus Slutpunktsövervakning – med Stefan Schackow för en video om slutpunktsövervakning.

Övervakning av programprestanda med tillägg

Du kan också övervaka programmets prestanda med hjälp av ett webbplatstillägg.

Varje App Service app har en utökningsbar hanteringsslutpunkt som gör att du kan använda en kraftfull uppsättning verktyg som distribueras som webbplatstillägg. Tilläggen omfattar:

  • Källkodsredigerare som Azure DevOps.
  • Hanteringsverktyg för anslutna resurser, till exempel en MySQL-databas som är ansluten till en app.

Azure Application Insights är ett tillägg för prestandaövervakningswebbplatser som också är tillgängligt. Om du vill använda Application Insights återskapar du koden med en SDK. Du kan också installera ett tillägg som ger åtkomst till ytterligare data. Med SDK kan du skriva kod för att övervaka appens användning och prestanda mer detaljerat. Mer information finns i Övervaka prestanda i webbprogram.

2. Samla in data

App Service tillhandahåller diagnostikfunktioner för loggningsinformation från både webbservern och webbprogrammet. Informationen är uppdelad i webbserverdiagnostik och programdiagnostik.

Aktivera webbserverdiagnostik

Du kan aktivera eller inaktivera följande typer av loggar:

  • Detaljerad felloggning – Detaljerad felinformation för HTTP-statuskoder som anger ett fel (statuskod 400 eller senare). Detta kan innehålla information som kan hjälpa dig att avgöra varför servern returnerade felkoden.
  • Spårning av misslyckade förfrågningar – Detaljerad information om misslyckade begäranden, inklusive en spårning av de IIS-komponenter som används för att bearbeta begäran och den tid det tar i varje komponent. Detta kan vara användbart om du försöker förbättra appens prestanda eller isolera vad som orsakar ett specifikt HTTP-fel.
  • Webbserverloggning – Information om HTTP-transaktioner med W3C-format för utökad loggfil. Detta är användbart när du fastställer övergripande appmått, till exempel antalet hanterade begäranden eller hur många begäranden som kommer från en specifik IP-adress.

Aktivera programdiagnostik

Det finns flera alternativ för att samla in programprestandadata från App Service, profilera ditt program live från Visual Studio eller ändra programkoden för att logga mer information och spårningar. Du kan välja alternativ baserat på hur mycket åtkomst du har till programmet och vad du har observerat från övervakningsverktygen.

Använda Application Insights Profiler

Du kan aktivera Application Insights Profiler för att börja samla in detaljerade prestandaspårningar. Du kan komma åt spårningar som registrerats för upp till fem dagar sedan när du behöver undersöka problem som har inträffat tidigare. Du kan välja det här alternativet så länge du har åtkomst till appens Application Insights-resurs på Azure Portal.

Application Insights Profiler innehåller statistik om svarstiden för varje webbanrop och spårningar som anger vilken kodrad som orsakade de långsamma svaren. Ibland är App Service-appen långsam eftersom viss kod inte skrivs på ett högpresterande sätt. Exempel är sekventiell kod som kan köras parallellt och oönstrade databaslåskonkurreringar. Om du tar bort dessa flaskhalsar i koden ökar appens prestanda, men de är svåra att identifiera utan att konfigurera detaljerade spårningar och loggar. De spårningar som samlas in av Application Insights Profiler hjälper till att identifiera kodrader som saktar ned programmet och löser den här utmaningen för App Service appar.

Mer information finns i Profilering av liveappar i Azure App Service med Application Insights.

Använda fjärrprofilering

I Azure App Service kan webbappar, API-appar, mobila serverdelar och webbjobb fjärrprofileras. Välj det här alternativet om du har åtkomst till appresursen och du vet hur du återskapar problemet, eller om du vet det exakta tidsintervallet som prestandaproblemet inträffar.

Fjärrprofilering är användbart om cpu-användningen av processen är hög och processen körs långsammare än förväntat, eller om svarstiden för HTTP-begäranden är högre än normalt, kan du fjärrprofilera processen och hämta anropsstackarna för CPU-sampling för att analysera processaktiviteten och koda heta sökvägar.

Mer information finns i Stöd för fjärrprofilering i Azure App Service.

Konfigurera diagnostikspårningar manuellt

Om du har åtkomst till webbprogrammets källkod kan du använda programdiagnostik för att samla in information som skapats av ett webbprogram. ASP.NET program kan använda System.Diagnostics.Trace klassen för att logga information till programdiagnostikloggen. Du måste dock ändra koden och distribuera om programmet. Den här metoden rekommenderas om din app körs i en testmiljö.

Detaljerade anvisningar om hur du konfigurerar programmet för loggning finns i Aktivera diagnostikloggning för appar i Azure App Service.

Använda diagnostikverktyget

App Service ger en intelligent och interaktiv upplevelse som hjälper dig att felsöka din app utan att någon konfiguration krävs. När du stöter på problem med din app kommer diagnostikverktyget att peka ut vad som är fel som vägleder dig till rätt information för att enklare och snabbare felsöka och lösa problemet.

Om du vill komma åt App Service diagnostik går du till din App Service-app eller App Service-miljön i Azure Portal. I det vänstra navigeringsfältet klickar du på Diagnostisera och löser problem.

Använda Kudu-felsökningskonsolen

App Service levereras med en felsökningskonsol som du kan använda för att felsöka, utforska, ladda upp filer samt JSON-slutpunkter för att få information om din miljö. Den här konsolen kallas Kudu-konsolen eller SCM-instrumentpanelen för din app.

Du kan komma åt den här instrumentpanelen genom att gå till länken https://< Ditt appnamn.scm.azurewebsites.net/>.

Några av de saker som Kudu tillhandahåller är:

  • miljöinställningar för ditt program
  • loggström
  • diagnostikdump
  • felsökningskonsolen där du kan köra PowerShell-cmdletar och grundläggande DOS-kommandon.

En annan användbar funktion i Kudu är att om programmet utlöser undantag med första chansen kan du använda Kudu och SysInternals-verktyget Procdump för att skapa minnesdumpar. Dessa minnesdumpar är ögonblicksbilder av processen och kan ofta hjälpa dig att felsöka mer komplicerade problem med din app.

Mer information om tillgängliga funktioner i Kudu finns i Azure DevOps-verktyg som du bör känna till.

3. Åtgärda problemet

Skala appen

I Azure App Service kan du justera skalan där du kör programmet för att få bättre prestanda och dataflöde. Att skala upp en app omfattar två relaterade åtgärder: att ändra din App Service plan till en högre prisnivå och konfigurera vissa inställningar när du har bytt till den högre prisnivån.

Mer information om skalning finns i Skala en app i Azure App Service.

Dessutom kan du välja att köra programmet på fler än en instans. Utskalning ger dig inte bara mer bearbetningskapacitet, utan ger också en viss mängd feltolerans. Om processen går ned på en instans fortsätter de andra instanserna att hantera begäranden.

Du kan ange skalningen till Manuell eller Automatisk.

Använda autoheal

AutoHeal återvinner arbetsprocessen för din app baserat på de inställningar du väljer (till exempel konfigurationsändringar, begäranden, minnesbaserade gränser eller den tid som krävs för att köra en begäran). För det mesta är återvinning av processen det snabbaste sättet att återställa från ett problem. Även om du alltid kan starta om appen direkt från Azure Portal, gör AutoHeal det automatiskt åt dig. Allt du behöver göra är att lägga till några utlösare i roten web.config för din app. De här inställningarna fungerar på samma sätt även om ditt program inte är en .NET-app.

Mer information finns i Automatisk återställning av Azure-webbplatser.

Starta om appen

Omstart är ofta det enklaste sättet att återställa efter engångsproblem. På Azure Portal finns det alternativ för att stoppa eller starta om appen på appens blad.

starta om appen för att lösa prestandaproblem

Du kan också hantera din app med hjälp av Azure PowerShell. Mer information finns i Använda Azure PowerShell med Azure Resource Manager.

Fler resurser

Självstudie: Kör ett belastningstest för att identifiera flaskhalsar i prestanda i en webbapp