Felsöka app-problem med prestanda och låg hastighet 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 är ineffektiva
- program med hög minnes-/CPU-användning
- program kraschar på grund av ett undantag
Felsökningsanvisningar
Felsökning kan delas in i tre olika uppgifter i sekventiell ordning:
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 det uppstår ett tjänstavbrott eller prestandaförsämring. 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 ditt program 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
- Tillgängligt arbetsminne
- Svarstid
- CPU-tid
- Arbetsminne
- begäranden
Mer information finns i:
Övervaka webbslutpunktsstatus
Om du kör din app på prisnivån Standard låter App Service dig ö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-webbplatser 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 tillhandahåller 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 ett 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 i detalj. 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 webbappen. 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 göra så att Application Insights Profiler börjar 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 tillhandahå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 avancerade 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 processoranvändningen för 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 CPU-samplingsanropsstackarna 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 källkoden för webbprogrammet 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 ditt program 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 på vad som är fel för att vägleda 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 och 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://< Din 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ökningskonsol 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 från första chansen kan du använda Kudu och Verktyget SysInternals 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
För ökad prestanda och dataflöde i Azure App Service kan du justera den skala som du kör ditt program med. 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å mer än en instans. Utskalning ger dig inte bara mer bearbetningskapacitet, utan ger dig också en viss mängd feltolerans. Om processen går ner 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 rotwebbkonfigurationen för din app. De här inställningarna fungerar på samma sätt även om programmet 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 från engångsproblem. På Azure Portal, på appens blad, har du alternativ för att stoppa eller starta om din app.
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