Vanliga frågor och svar om programprestanda för Web Apps i Azure
Kommentar
Vissa av riktlinjerna nedan kanske bara fungerar i Windows eller Linux App Services. Linux App Services körs till exempel i 64-bitarsläge som standard.
Den här artikeln innehåller svar på vanliga frågor och svar om problem med programprestanda för funktionen Web Apps i Azure App Service.
Om ditt Azure-problem inte åtgärdas i den här artikeln går du till Azure-forumen på MSDN och Stack Overflow. Du kan publicera ditt problem i dessa forum eller publicera till @AzureSupport på Twitter. Du kan också skicka en Azure Support begäran. Om du vill skicka en supportbegäran går du till sidan Azure Support och väljer Hämta support.
Varför visar min App Service-plan processor-/minnesanvändning även när alla webbappar stoppas?
Azure App Service kräver kontinuerliga systemprocesser som hanterar flera plattformsåtgärder och funktioner, till exempel säkerhetsuppdateringar, tillgänglighet för SCM-konsolen, programövervakning, autentisering och många andra viktiga funktioner i webbappen.
Systemprocesser körs i App Service-planer även om det inte finns några webbappar som körs eller om App Service-planen inte innehåller några webbappar.
Plattformsprocesserna förbrukar en minsta mängd resurser (till exempel CPU, minne och diskutrymme), och samma sak bör redovisas under konfigurationen av kapacitetsplanering, övervakning och automatisk skalning av en App Service-plan.
Varför är min app långsam?
Flera faktorer kan bidra till långsamma appprestanda. Detaljerade felsökningssteg finns i Felsöka långsamma prestanda för webbappar.
Hur gör jag för att felsöka ett scenario med hög CPU-förbrukning?
I vissa scenarier med hög CPU-förbrukning kan din app verkligen kräva mer databehandlingsresurser. I så fall bör du överväga att skala till en högre tjänstnivå så att programmet hämtar alla resurser som behövs. Andra gånger kan hög CPU-förbrukning orsakas av en felaktig loop eller av en kodningspraxis. Att få insikt i vad som utlöser ökad CPU-förbrukning är en process i två delar. Först skapar du en processdump och analyserar sedan processdumpningen. Mer information finns i Avbilda och analysera en dumpfil för hög CPU-förbrukning för Web Apps.
Hur gör jag för att felsöka ett scenario med hög minnesförbrukning?
I vissa scenarier med hög minnesförbrukning kan din app verkligen kräva mer databehandlingsresurser. I så fall bör du överväga att skala till en högre tjänstnivå så att programmet hämtar alla resurser som behövs. Andra gånger kan en bugg i koden orsaka en minnesläcka. En kodningspraxis kan också öka minnesförbrukningen. Att få insikt i vad som utlöser hög minnesförbrukning är en process i två delar. Först skapar du en processdump och analyserar sedan processdumpningen. Kraschdiagnostik från Azure Site Extension Gallery kan effektivt utföra båda dessa steg. Mer information finns i Avbilda och analysera en dumpfil för tillfälligt högt minne för Web Apps.
Hur gör jag för att automatisera App Service-webbappar med hjälp av PowerShell?
Du kan använda PowerShell-cmdletar för att hantera och underhålla App Service-webbappar. I vårt blogginlägg Automatisera webbappar i Azure App Service med hjälp av PowerShell beskriver vi hur du använder Azure Resource Manager-baserade PowerShell-cmdletar för att automatisera vanliga uppgifter. Blogginlägget innehåller också exempelkod för olika hanteringsuppgifter för webbappar. Beskrivningar och syntax för alla App Service-webbappars cmdletar finns i Az.Websites.
Hur gör jag för att visa min webbapps händelseloggar?
Så här visar du webbappens händelseloggar:
- Logga in på din Kudu-webbplats (
https://*yourwebsitename*.scm.azurewebsites.net
). - På menyn väljer du Felsöka konsol-CMD>.
- Välj mappen LogFiles.
- Om du vill visa händelseloggar väljer du pennikonen bredvid eventlog.xml.
- Om du vill ladda ned loggarna kör du PowerShell-cmdleten
Save-AzureWebSiteLog -Name webappname
.
Hur gör jag för att avbilda en minnesdump i användarläge för min webbapp?
Så här avbildar du en minnesdump i användarläge för webbappen:
- Logga in på din Kudu-webbplats (
https://*yourwebsitename*.scm.azurewebsites.net
). - Välj menyn ProcessUtforskaren.
- Högerklicka på den w3wp.exe processen eller webbjobbsprocessen.
- Välj Ladda ned hela dumpen för minne>.
Hur gör jag för att visa information på processnivå för min webbapp?
Du har två alternativ för att visa information på processnivå för din webbapp:
- I Azure Portal:
- Öppna processutforskaren för webbappen.
- Om du vill se informationen väljer du den w3wp.exe processen.
- I Kudu-konsolen:
- Logga in på din Kudu-webbplats (
https://*yourwebsitename*.scm.azurewebsites.net
). - Välj menyn ProcessUtforskaren.
- För w3wp.exe processen väljer du Egenskaper.
- Logga in på din Kudu-webbplats (
När jag bläddrar till min app visas "Fel 403 – Den här webbappen stoppas". Hur gör jag för att lösa detta?
Tre villkor kan orsaka det här felet:
- Webbappen har nått en faktureringsgräns och webbplatsen har inaktiverats.
- Webbappen har stoppats i portalen.
- Webbappen har nått en resurskvotgräns som kan gälla för en kostnadsfri eller delad skalningstjänstplan.
Om du vill se vad som orsakar felet och lösa problemet följer du stegen i Web Apps: "Fel 403 – Den här webbappen har stoppats".
Var kan jag lära mig mer om kvoter och gränser för olika App Service-planer?
Information om kvoter och gränser finns i App Service-gränser.
Hur gör jag för att minska svarstiden för den första begäran efter inaktiv tid?
Webbappar tas som standard bort om de är inaktiva under en viss tidsperiod. På så sätt kan systemet spara resurser. Nackdelen är att svaret på den första begäran efter att webbappen har inaktiverats är längre, så att webbappen kan läsa in och börja hantera svar. I Basic- och Standard-tjänstplaner kan du aktivera inställningen Alltid på för att hålla appen alltid inläst. Detta eliminerar längre inläsningstider när appen är inaktiv. Så här ändrar du inställningen Alltid på :
- I Azure Portal går du till din webbapp.
- Välj Konfiguration
- Välj Allmänna inställningar.
- För AlwaysOn väljer du På.
Hur gör jag för att aktivera spårning av misslyckade förfrågningar?
Följ dessa steg för att aktivera spårning av misslyckade förfrågningar:
I Azure Portal går du till din webbapp.
Välj Alla inställningar>Diagnostikloggar.
För Spårning av misslyckade begäranden väljer du På.
Välj Spara.
Välj Verktyg på webbappsbladet.
Välj Visual Studio Online.
Om inställningen inte är På väljer du På.
Välj Gå.
Välj Web.config.
I system.webServer lägger du till följande konfiguration (för att avbilda en specifik URL):
<system.webServer> <tracing> <traceFailedRequests> <remove path="*api*" /> <add path="*api*"> <traceAreas> <add provider="ASP" verbosity="Verbose" /> <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" /> <add provider="ISAPI Extension" verbosity="Verbose" /> <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" /> </traceAreas> <failureDefinitions statusCodes="200-999" /> </add> </traceFailedRequests> </tracing>
Om du vill felsöka problem med långsamma prestanda lägger du till den här konfigurationen (om insamlingsbegäran tar mer än 30 sekunder):
<system.webServer> <tracing> <traceFailedRequests> <remove path="*" /> <add path="*"> <traceAreas> <add provider="ASP" verbosity="Verbose" /> <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" /> <add provider="ISAPI Extension" verbosity="Verbose" /> <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" /> </traceAreas> <failureDefinitions timeTaken="00:00:30" statusCodes="200-999" /> </add> </traceFailedRequests> </tracing>
Om du vill ladda ned spårningar av misslyckade begäranden går du till din webbplats i portalen.
Välj Verktyg>Kudu>Go.
På menyn väljer du Felsöka konsol-CMD>.
Välj mappen LogFiles och välj sedan mappen med ett namn som börjar med W3SVC.
Om du vill se XML-filen väljer du pennikonen.
Jag ser meddelandet "Worker Process requested recycle due to 'Percent Memory' limit(Procentminnesgräns). Hur gör jag för att åtgärda problemet?
Den maximala tillgängliga mängden minne för en 32-bitarsprocess (även på ett 64-bitars operativsystem) är 2 GB. Som standard är arbetsprocessen inställd på 32-bitars i App Service (för kompatibilitet med äldre webbprogram).
Överväg att byta till 64-bitarsprocesser så att du kan dra nytta av det extra minne som är tillgängligt i din Web Worker-roll. Den här åtgärden utlöser en omstart av webbappen, så schemalägg därefter.
Observera också att en 64-bitars miljö kräver en Basic- eller Standard-tjänstplan. Kostnadsfria och delade planer körs alltid i en 32-bitars miljö.
Mer information finns i Konfigurera webbappar i App Service.
Varför överskrider min begäran tidsgränsen efter 230 sekunder?
Azure Load Balancer har en standardinställning för timeout för inaktivitet på fyra minuter. Den här inställningen är vanligtvis en rimlig tidsgräns för svar för en webbegäran. App Service returnerar därför en timeout till klienten om ditt program inte returnerar ett svar inom cirka 240 sekunder (230 sekunder i Windows-appen, 240 sekunder i Linux-appen). Om din webbapp kräver bakgrundsbearbetning rekommenderar vi att du använder Azure WebJobs. Azure-webbappen kan anropa WebJobs och meddelas när bakgrundsbearbetningen är klar. Du kan välja mellan flera metoder för att använda webbjobb, inklusive köer och utlösare.
WebJobs är utformat för bakgrundsbearbetning. Du kan göra så mycket bakgrundsbearbetning som du vill i ett webbjobb. Mer information om webbjobb finns i Köra bakgrundsaktiviteter med webbjobb.
ASP.NET Core-program som finns i App Service slutar ibland svara. Hur gör jag för att åtgärda problemet?
Ett känt problem med en tidigare Kestrel-version kan orsaka att en ASP.NET Core 1.0-app som finns i App Service tillfälligt slutar svara. Du kan också se följande meddelande: "Det angivna CGI-programmet påträffade ett fel och servern avslutade processen."
Det här problemet har åtgärdats i Kestrel version 1.0.2. Den här versionen ingår i uppdateringen ASP.NET Core 1.0.3. Lös problemet genom att uppdatera dina appberoenden så att de använder Kestrel 1.0.2. Du kan också använda någon av två lösningar som beskrivs i blogginlägget ASP.NET Problem med långsam perf för Core 1.0 i App Service-webbappar.
Jag hittar inte mina loggfiler i filstrukturen i webbappen. Hur hittar jag dem?
Om du använder funktionen Lokal cache i App Service påverkas mappstrukturen för Mapparna LogFiles och Data för din App Service-instans. När lokal cache används skapas undermappar i lagringsmapparna LogFiles och Data. Undermapparna använder namnmönstret "unik identifierare" + tidsstämpel. Varje undermapp motsvarar en VM-instans där webbappen körs eller har körts.
Om du vill ta reda på om du använder lokal cache kontrollerar du fliken Inställningar för App Service-program. Om lokal cache används är appinställningen WEBSITE_LOCAL_CACHE_OPTION
inställd på Always
.
Om du inte använder lokal cache och har det här problemet skickar du en supportbegäran.
Jag ser meddelandet "Ett försök gjordes att komma åt en socket på ett sätt som förbjöds av dess åtkomstbehörigheter." Hur gör jag för att lösa det här felet?
Det här felet uppstår vanligtvis om de utgående TCP-anslutningarna på den virtuella datorinstansen är uttömda. I App Service tillämpas gränser för det maximala antalet utgående anslutningar som kan göras för varje VM-instans. Mer information finns i Numeriska gränser mellan virtuella datorer.
Det här felet kan också inträffa om du försöker komma åt en lokal adress från ditt program. Mer information finns i Lokala adressbegäranden.
Mer information om utgående anslutningar i webbappen finns i blogginlägget om utgående anslutningar till Azure-webbplatser.
Hur gör jag för att använda Visual Studio för att fjärrsöka min App Service-webbapp?
En detaljerad genomgång som visar hur du felsöker din webbapp med hjälp av Visual Studio finns i Fjärrfelsöka din App Service-webbapp.
Kontakta oss för att få hjälp
Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.