Felsöka problem med hög CPU-användning på virtuella Azure Windows-datorer
Gäller för: ✔️ Virtuella Windows-datorer
Sammanfattning
Prestandaproblem uppstår i olika operativsystem eller program, och varje problem kräver en unik metod för felsökning. De flesta av dessa problem handlar om CPU, minne, nätverk och indata/utdata (I/O) som viktiga platser där problemet uppstår. Vart och ett av dessa områden genererar olika symtom (ibland samtidigt) och kräver en annan diagnos och lösning.
I den här artikeln beskrivs problem med hög CPU-användning som uppstår på virtuella Azure-datorer som kör Windows-operativsystemet.
Problem med hög CPU på virtuella Azure Windows-datorer
Förutom problem med I/O och nätverksfördröjning kräver felsökning av processor och minne samma verktyg och steg som de lokala servrarna gör. Ett av de verktyg som Microsoft vanligtvis stöder är PerfInsights (tillgängligt för både Windows och Linux). PerfInsights kan tillhandahålla en diagnos av bästa praxis för virtuella Azure-datorer i en användarvänlig rapport. PerfInsights är också ett omslutningsverktyg som kan hjälpa till att samla in Perfmon-, Xperf- och Netmon-data, beroende på vilka flaggor som väljs i verktyget.
De flesta av dina befintliga verktyg för prestandafelsökning, till exempel Perfmon eller Procmon, som används för lokala servrar fungerar på virtuella Azure Windows-datorer. PerfInsights är dock uttryckligen utformat för virtuella Azure-datorer för att ge fler insikter, inklusive Azure Best Practices, SQL Best Practices, diagram med hög upplösning för I/O-svarstid, cpu- och minnesflikar och så vidare.
Oavsett om den körs som användarläge eller kernelläge kräver alla trådar i en aktiv process processorcykler för att köra koden som den är byggd från. Många problem är direkt relaterade till arbetsbelastningen. Den typ av arbetsbelastning som finns på servern driver resursförbrukning, inklusive CPU.
Vanliga faktorer
Följande faktorer är vanliga i en situation med hög CPU:et:
En nyligen genomförd kodändring eller distribution som främst gäller för appar som Internet Information Services (IIS), Microsoft SharePoint, Microsoft SQL Server eller program från tredje part.
En ny uppdatering som kan vara relaterad till en uppdatering på operativsystemnivå eller kumulativa uppdateringar och korrigeringar på programnivå.
En frågeändring eller inaktuella index. SQL Server- och Oracle-datanivåprogram har också en frågeplansoptimering som en annan faktor. Dataändringar eller brist på lämpliga index kan leda till att flera frågor blir mer beräkningsintensiva.
Azure VM-specifik. Det finns vissa processer som RDAgent och tilläggsspecifika processer, till exempel Övervakningsagent, MMA-agent eller Säkerhetsklient, som kan orsaka hög CPU-förbrukning. Dessa processer måste visas från ett konfigurations- eller känt problemperspektiv.
Felsöka problemet
Den här artikeln fokuserar på att isolera den problematiska processen. Ytterligare analys kommer att vara specifik för den process som driver hög CPU-förbrukning.
Om processen till exempel är SQL Server (sqlservr.exe) är nästa steg att analysera vilken fråga som använde flest CPU-cykler under en viss tidsperiod.
Ringa in problemet
Här följer några frågor att ställa när du felsöker problemet:
Finns det ett mönster i problemet? Uppstår till exempel problemet med hög CPU vid en viss tidpunkt varje dag, vecka eller månad? Kan du i så fall korrelera det här problemet med ett jobb, en rapport eller en användarinloggning?
Startade problemet med hög CPU efter en ny kodändring? Har du tillämpat en uppdatering i Windows eller i ett program?
Började problemet med hög CPU efter en ändring i arbetsbelastningen, till exempel en ökning av antalet användare, en högre datatillströmning eller ett större antal rapporter?
Började problemet med hög CPU för Azure under något av följande villkor?
- Efter en ny omdistribution eller omstart
- När en SKU- eller VM-typ har ändrats
- När ett nytt tillägg lades till
- Efter att ändringar i lastbalanseraren har gjorts
Azure-varningar
Förstå din arbetsbelastning. När du väljer en virtuell dator kan du underskatta antalet virtuella processorer (vCPU) när du tittar på den totala månatliga värdkostnaden. Om din arbetsbelastning är beräkningsintensiv kan det orsaka arbetsbelastningsproblem om du väljer en mindre VM-SKU som har en eller två virtuella processorer. Testa olika konfigurationer för din arbetsbelastning för att fastställa den bästa beräkningskapaciteten som krävs.
Det finns vissa VM-serier, till exempel B-serien (burstläge), som rekommenderas för kvalitetssäkring (QA) och testning. Om du använder de här serierna i produktionsmiljön begränsas beräkningskapaciteten när processorkrediterna har förbrukats.
För kända program som SQL Server, Oracle, RDS (Fjärrskrivbordstjänster), Azure Virtual Desktop, IIS eller SharePoint finns det Artiklar om Bästa praxis i Azure som innehåller rekommendationer för minimal konfiguration för dessa arbetsbelastningar.
Pågående problem med hög CPU
Om problemet uppstår just nu är det här den bästa möjligheten att samla in processspårningen för att avgöra vad som orsakar problemet. Du kan använda befintliga verktyg som du har använt för lokala Windows-servrar för att hitta processen. Följande verktyg rekommenderas av Azure Support för virtuella Azure-datorer.
PerfInsights
PerfInsights är det rekommenderade verktyget från Azure Support för prestandaproblem med virtuella datorer. Den är utformad för att täcka metodtips och dedikerade analysflikar för cpu-, minnes- och högupplösta I/O-grafer. Du kan köra den OnDemand via Azure Portal eller inifrån den virtuella datorn. Du kan dela data med Azure Support-teamet.
Kör PerfInsights
PerfInsights är tillgängligt för både Windows- och Linux-operativsystemet. Här är alternativen för Windows.
Köra och analysera rapporter via Azure Portal
När det installeras via Azure Portal installerar faktiskt ett tillägg på den virtuella datorn. Användare kan också installera PerfInsights som ett tillägg genom att gå direkt till bladet Tillägg på den virtuella datorn och sedan välja ett alternativ för prestandadiagnostik.
Azure Portal alternativ 1
Bläddra på vm-bladet och välj alternativet Prestandadiagnostik . Du uppmanas att installera alternativet (använder tillägg) på den virtuella dator som du valde det för.
Azure Portal alternativ 2
Bläddra till Diagnostisera och lösa problem på bladet för den virtuella datorn och leta efter prestandaproblem för virtuella datorer.
Om du väljer Felsöka läses perfInsights-installationsskärmen in.
Om du väljer Installera innehåller installationen olika samlingsalternativ.
De numrerade alternativen i skärmbilden gäller följande kommentarer:
För alternativet Hög CPU väljer du Prestandaanalys eller Avancerat.
När du lägger till symptom här läggs de till i rapporten, vilket hjälper dig att dela information med Azure Support.
Välj varaktigheten för datainsamlingen. För alternativet Hög CPU väljer du minst 15 minuter eller mer. I Azure Portal läge kan du samla in upp till 15 minuters data. Under längre perioder av samlingen måste du köra programmet som en körbar fil i den virtuella datorn.
Om du uppmanas av Azure Support att samla in dessa data kan du lägga till biljettnumret här. Det här fältet är valfritt.
Välj det här fältet för att godkänna licensavtalet för slutanvändare (EULA).
Välj det här fältet om du tänker göra den här rapporten tillgänglig för Azure-supportteamet som hjälper till i det här fallet.
Rapporten lagras på ett av lagringskontona under din prenumeration. Den är tillgänglig för att visa och ladda ned senare.
Kör PerfInsights inifrån den virtuella datorn
Den här metoden kan användas om du tänker köra PerfInsights under längre perioder. Artikeln PerfInsights innehåller en detaljerad genomgång av de olika kommandon och flaggor som krävs för att köra PerfInsights som en körbar fil. För hög CPU-användning behöver du något av följande lägen:
Avancerat scenario
PerfInsights /run advanced xp /d 300 /AcceptDisclaimerAndShareDiagnostics
Scenario för långsam virtuell dator (prestanda)
PerfInsights /run vmslow /d 300 /AcceptDisclaimerAndShareDiagnostics /sa <StorageAccountName> /sk <StorageAccountKey>
Kommandoutdata kommer att finnas i samma mapp där du sparade körbara PerfInsights.
Vad du ska leta efter i rapporten
När du har kört rapporten beror platsen för innehållet på om den kördes via Azure Portal eller som en körbar fil. För båda alternativen kan du komma åt den genererade loggmappen eller ladda ned (om Azure Portal) lokalt för analys.
Kör genom Azure Portal
Kör inifrån virtuell dator
Mappstrukturen bör likna följande bilder:
Alla ytterligare samlingar som Perfmon, Xperf, Netmon, SMB-loggar, händelseloggar och så vidare finns i utdatamappen.
Den faktiska rapporten tillsammans med analys och rekommendationer.
För både Prestanda (VMslow) och Avancerat samlar rapporten in perfmoninformation under varaktigheten för PerfInsights-körningen.
Händelseloggarna visar en snabb vy över användbar information om systemnivå eller processkrasch.
Här börjar du
Öppna PerfInsights-rapporten. Fliken Resultat loggar eventuella avvikande värden när det gäller resursförbrukning. Om det finns instanser av hög CPU-användning kategoriserar fliken Resultat den som antingen hög effekt eller medelstor påverkan.
I likhet med föregående exempel kördes PerfInsights i 30 minuter. Under hälften av den tiden förbrukade den markerade processen CPU på den högre sidan. Om samma process hade körts under hela insamlingstiden skulle påverkansnivån ha ändrats till HÖG.
Om du expanderar händelsen Resultat visas flera viktiga detaljer. Fliken visar processerna i fallande ordning, per genomsnittlig CPU-förbrukning och visar om processen var relaterad till systemet, en Microsoft-ägd app (SQL, IIS) eller en process från tredje part.
Mer information
Det finns en dedikerad underflik under CPU som kan användas för detaljerad mönsteranalys, per kärna eller per process.
Fliken Bästa CPU-konsumenter har två separata avsnitt av intresse och du kan visa statistik per processor här. Programdesignen är ofta antingen enkeltrådad eller fäster sig själv på en enda processor. I det här scenariot körs en eller några kärnor på 100 procent, medan andra kärnor körs på förväntade nivåer. Dessa scenarier är mer komplexa eftersom den genomsnittliga processorn på servern verkar köras som förväntat, men de processer som fästs på kärnor som har hög användning blir långsammare än förväntat.
Det andra avsnittet (lika viktigt) är Top Long Running CPU Consumers.The second section (lika viktigt) är Top Long Running CPU Consumers. Det här avsnittet visar både processinformationen och deras cpu-användningsmönster. Listan sorteras genom att ha hög genomsnittlig cpu-användare överst.
De här två flikarna räcker för att ange sökvägen för nästa felsökningssteg. Beroende på vilken process som driver hög CPU-villkoret måste du ta itu med de frågor som ställdes tidigare. Processer som SQL Server (sqlservr.exe) eller IIS (w3wp.exe) kräver en specifik detaljnivå för fråge- eller kodändringar som orsakar det här villkoret. För systemprocesser som WMI eller Lsass.exe måste du följa en annan sökväg.
För azure VM-relaterade processer som RDAgent, OMS och körbara övervakningstillägg kan du behöva åtgärda en ny version eller version genom att få hjälp från Azure-supportteamet.
Perfmon
Perfmon är ett av de tidigaste verktygen för att felsöka ett resursproblem på Windows Server. Det ger inte en tydlig rapport som har rekommendationer eller resultat. I stället kräver det att användaren utforskar de insamlade data och använder ett specifikt filter under de olika räknarkategorierna.
PerfInsights samlar in Perfmon som en extra logg för VMSlow och avancerade scenarier. Perfmon kan dock samlas in oberoende av varandra och har följande ytterligare fördelar:
Den kan samlas in via fjärranslutning.
Det kan schemaläggas via Aktiviteter.
Den kan samlas in under längre perioder eller i kontinuerligt läge med hjälp av överrullningsfunktionen.
Tänk på samma exempel som visas i PerfInsights för att se hur Perfmon visar dessa data. De obligatoriska räknarkategorierna är följande:
Processorinformation > %Processortid > _Total
Bearbeta > %ProcessorTime > alla instanser
Här börjar du
Utdatafilnamnen för Perfmon har ett .blg
tillägg. Du kan samla in dessa filer oberoende av varandra eller med hjälp av PerfInsights. För den här diskussionen använder du perfmon .blg
som ingår i PerfInsights-data och som samlades in enligt föregående exempel.
Det finns inga tillgängliga standardanvändarklara rapporter i Perfmon. Det finns olika vyer som ändrar graftypen, men processfiltreringen (eller det arbete som krävs för att identifiera processer som är skyldiga) är manuell.
Kommentar
PAL-verktyget kan använda .blg
filer och generera detaljerade rapporter.
Börja genom att välja kategorin Lägg till räknare .
Under Tillgängliga räknare väljer du %ProcessorTime-räknaren i kategorin Processorinformation.
Välj _Total, vilket ger dig statistik över alla kombinerade kärnor.
Markera Lägga till. Fönstret visar %ProcessorTime under Tillagda räknare.
När räknarna har lästs in visas linjetrenddiagram i samlingens tidsram. Du kan välja eller rensa räknarna. Hittills har du bara lagt till en räknare.
Varje räknare har värdena Genomsnitt, Minimum och Maximum . Fokusera på både genomsnittliga och högsta värden, eftersom det genomsnittliga värdet kan variera beroende på varaktigheten för datainsamlingen. Om hög CPU-aktiviteten sågs i 10 minuter medan den totala samlingen var 40 minuter blir genomsnittsvärdena mycket lägre.
Det tidigare trenddiagrammet visar att den totala processorn var nära 80 procent i cirka 15 minuter.
Identifiera processen
Vi har upptäckt att servern hade hög CPU-förbrukning under en angiven tid, men vi har ännu inte identifierat drivrutinen. Till skillnad från att använda PerfInsights måste du manuellt söka efter den skyldige processen i det här fallet.
För den här uppgiften måste du rensa eller ta bort % ProcessorTime-räknarna som tidigare lagts till och sedan lägga till en ny kategori:
- Bearbeta > %ProcessorTime > alla instanser
Den här kategorin läser in räknare för alla processer som körs vid den tidpunkten.
På en typisk produktionsdator kan hundratals eller processer köras. Därför kan det ta ett tag att rensa varje räknare som verkar ha en låg eller platt trendgraf.
För att påskynda den här processen använder du histogramvyn och ändrar vytypen från Linje till Histogram, vilket ger dig ett stapeldiagram. Du kommer att upptäcka att det är enklare att välja de processer som upplever hög CPU-användning under insamlingstiden.
Eftersom det alltid kommer att finnas en stapel för Totalt, fokuserar du på staplar som visar en hög överbelastningshastighet. Du kan ta bort de andra staplarna för att rensa vyn. Gå tillbaka till linjevyn .
Det är nu lättare att fånga den skyldige processen. Som standard är värdena Max och Min multiplar av antalet kärnor på servern eller trådar i processen.
Listan över tillgängliga verktyg slutar inte på PerfInsights för Perfmon. Du har åtkomst till andra verktyg, till exempel ProcessMonitor (ProcMon) eller Xperf. Det finns många verktyg från tredje part som kan användas vid behov.
Övervakningsverktyg i Azure
Virtuella Azure-datorer har tillförlitliga mått som innehåller grundläggande information som CPU, nätverks-I/O och I/O-byte. För avancerade mått, till exempel Azure Monitor, behöver du bara göra några få val för att konfigurera och använda ett lagringskonto som du anger.
Grundläggande räknare (standard)
Aktivera Azure Monitor
När du har aktiverat Azure Monitor-mått installerar programvaran ett tillägg på den virtuella datorn och börjar sedan samla in detaljerade mått, vilket inkluderar Perfmon-räknare.
Kategorierna Basic-räknare anges som standard. Du kan dock också ange en anpassad samling.
När inställningarna har aktiverats kan du visa dessa gästräknare i avsnittet Mått . Du kan också ange Aviseringar (inklusive e-postmeddelanden) om måtten når ett visst tröskelvärde.
Mer information om hur du använder Azure Monitor för att hantera virtuella Azure-datorer finns i Övervaka virtuella Azure-datorer med Azure Monitor.
Reaktiv felsökning
Om problemet redan har inträffat måste du först identifiera vad som orsakade problemet med hög CPU. Den reaktiva hållningen kan vara knepig. Datainsamlingsläget är inte lika användbart eftersom problemet redan har uppstått.
Om det här problemet var en engångshändelse kan det vara svårt att avgöra vilken app som orsakade det. Om den virtuella Azure-datorn har konfigurerats för att använda OMS eller annan diagnostikspårning kan du fortfarande få insikter om vad som orsakade problemet.
Om du har att göra med ett upprepat mönster samlar du in data under den tid då problemet sannolikt kommer att inträffa härnäst.
PerfInsights har ännu ingen funktion för schemalagd körning . Perfmon kan dock köras och schemaläggas via kommandoraden.
Logman-kommando
Kommandot Logman Create Counter används för att köra Perfmon-samlingen via kommandoraden, schemalägga den via Aktivitetshanteraren eller för att köra den via fjärranslutning.
Exempel (inkluderar fjärrinsamlingsläge)
Logman create counter LOGNAME -u DOMAIN\USERNAME * -f bincirc -v mmddhhmm -max 300 -c "\\SERVERNAME\LogicalDisk(*)\*" "\\SERVERNAME\Memory\*" "\\SERVERNAME\Network Interface(*)\*" "\\SERVERNAME\Paging File(*)\*" "\\SERVERNAME\PhysicalDisk(*)\*" "\\SERVERNAME\Process(*)\*" "\\SERVERNAME\Redirector\*" "\\SERVERNAME\Server\*" "\\SERVERNAME\System\*" "\\SERVERNAME\Terminal Services\*" "\\SERVERNAME\Processor(*)\*" "\\SERVERNAME\Cache\*" -si 00:01:00
Logman.exe kan också startas från en peer-dator för virtuella Azure-datorer i samma virtuella nätverk.
Mer information om dessa parametrar finns i skapa logman-räknare.
När Perfmon-data har samlats in medan problemet inträffar är de återstående stegen för att analysera data desamma som vi diskuterade tidigare.
Slutsats
För alla prestandaproblem är det viktigt att förstå din arbetsbelastning för att lösa problemet. Alternativen på olika VM-SKU:er och olika disklagringsalternativ måste utvärderas genom att fokusera på produktionsarbetsbelastningen. Processen med att testa lösningar på olika virtuella datorer kan hjälpa dig att fatta det bästa beslutet.
Eftersom användaråtgärderna och mängden data varierar bör du alltid ha en buffert i den virtuella datorns databehandlings-, nätverks- och I/O-funktioner. Nu har inga plötsliga ändringar i arbetsbelastningen en lika stor effekt.
Om du förutser att arbetsbelastningen kommer att öka snart går du över till en högre SKU som har mer databehandlingskraft. Om arbetsbelastningen ska vara beräkningsintensiv väljer du de virtuella dator-SKU:erna på ett klokt sätt.
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.