Felsöka problem med hög CPU-användning på virtuella Azure 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 processor, 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 olika diagnoser och lösningar.

Den här artikeln beskriver problem med hög CPU-användning som uppstår på Azure Virtual Machines (VM) som kör Windows-operativsystemet.

Problem med hög CPU-användning på virtuella Azure Windows-datorer

Förutom problem med I/O och nätverksfördröjning kräver felsökningen 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 dig 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 Metodtips för Azure, METODtips för SQL, diagram med hög upplösning för I/O-svarstider, flikar för processor och minne och så vidare.

Oavsett om den körs som User-Mode eller kernelläge kräver alla trådar i en aktiv process processorcykler för att köra koden som den har skapats från. Många problem är direkt relaterade till arbetsbelastningen. Den typ av arbetsbelastning som finns på servern styr resursförbrukningen, inklusive CPU.

Vanliga faktorer

Följande faktorer är vanliga i en situation med hög CPU-användning:

  • En nyligen genomförd kodändring eller distribution som främst gäller för appar som IIS (Internet Information Services), Microsoft SharePoint, Microsoft SQL Server eller program från tredje part.

  • En nyligen genomförd uppdatering som kan vara relaterad till en uppdatering på operativsystemnivå eller kumulativa uppdateringar och korrigeringar på programnivå.

  • En fråga ändras eller är 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 göra 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.

Omfång för 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-användning 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?

  • Började problemet med hög CPU-användning efter en ny kodändring? Har du tillämpat en uppdatering i Windows eller i ett program?

  • Började problemet med hög CPU-användning 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-användning 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
    • När lastbalanseraren har ändrats

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 (Burst-läge), som rekommenderas för kvalitetssäkring (QA) och testning. Om du använder dessa serier 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 Azure Best Practices-artiklar som innehåller rekommendationer för minimal konfiguration för dessa arbetsbelastningar.

Pågående problem med hög CPU-användning

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.

Skärmbild av knappen Installera prestandadiagnostik i alternativet Prestandadiagnostik.

Azure Portal alternativ 2

Bläddra till bladet Diagnostisera och lösa problem på den virtuella datorn och leta efter prestandaproblem för virtuella datorer.

Skärmbild av prestandaproblem för virtuella datorer i alternativet Diagnostisera och lösa problem.

Om du väljer Felsöka läses skärmen för PerfInsights-installation in.

Om du väljer Installera innehåller installationen olika samlingsalternativ.

Skärmbild av inställningarna för prestandaanalys i alternativet Prestandadiagnostik.

De numrerade alternativen i skärmbilden relaterar till följande kommentarer:

  1. För alternativet Hög CPU väljer du Prestandaanalys eller Avancerat.

  2. 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.

  3. 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 samlingsperioder måste du köra programmet som en körbar fil i den virtuella datorn.

  4. 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.

  5. Välj det här fältet för att godkänna licensavtalet för slutanvändare (EULA).

  6. 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 tidsperioder. Artikeln PerfInsights innehåller en detaljerad genomgång av de olika kommandon och flaggor som krävs för att köra PerfInsights som 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 den körbara filen PerfInsights.

Vad du ska leta efter i rapporten

När du har kört rapporten beror innehållets plats på om den kördes via Azure Portal eller som en körbar fil. För båda alternativen öppnar du den genererade loggmappen eller laddar ned (om Azure Portal) lokalt för analys.

Gå igenom Azure Portal

Skärmbild av prestandadiagnostik med hög påverkan.

Skärmbild av knappen Ladda ned rapport på rapportsidan Prestandadiagnostik.

Kör inifrån den virtuella datorn

Mappstrukturen bör likna följande bilder:

Skärmbild av utdatamappen och HTML-filen perfInsight-rapport i mappstrukturen.

Skärmbild av GeneralCounters_000001.blg och System.evtx i mappstrukturen.

  1. Alla ytterligare samlingar som Perfmon, Xperf, Netmon, SMB-loggar, händelseloggar och så vidare finns i mappen Utdata.

  2. Den faktiska rapporten tillsammans med analys och rekommendationer.

  3. För både Prestanda (VMslow) och Avancerat samlar rapporten in information perfmon under varaktigheten för PerfInsights-körningen.

  4. Händelseloggarna visar en snabb överblick över användbar information om systemnivå eller processkrasch.

Här ska du börja

Ö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 påverkan eller medelstor påverkan.

Skärmbild av fliken Resultat i CPU-delen av sidan PerfInsights-rapport. I det här exemplet är effektnivån Medel.

På samma sätt som i 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 effektnivån ha ändrats till HÖG.

Om du expanderar händelsen Resultat visas flera viktiga detaljer. På fliken visas 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 Främsta CPU-konsumenter har två separata avsnitt av intresse och du kan visa statistik per processor här. Programdesignen är ofta antingen Single-Threaded eller fäster sig 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. De här scenarierna är mer komplexa eftersom den genomsnittliga processorn på servern verkar köras som förväntat, men processerna som fästs på kärnor med hög användning blir långsammare än förväntat.

Skärmbild av fliken Främsta CPU-konsumenter i CPU-delen av perfInsights-rapportsidan, som visar analysperioden för prestandadiagnostik och perioder med hög CPU-användning.

Det andra avsnittet (lika viktigt) är De främsta tidskrävande CPU-förbrukarna. Det här avsnittet visar både processinformationen och deras cpu-användningsmönster. Listan sorteras efter att ha hög genomsnittlig CPU-användare överst.

Skärmbild av avsnittet De främsta tidskrävande CPU-förbrukarna.

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 filer för ö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. Den ger ingen tydlig rapport som innehåller rekommendationer eller resultat. I stället kräver det att användaren utforskar 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.

  • Den kan schemaläggas via Aktiviteter.

  • Den kan samlas in under längre tidsperioder eller i kontinuerligt läge med hjälp av funktionen för överrullning.

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 ska du börja

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 standardanvändarklara rapporter tillgängliga 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.

Obs!

PAL-verktyget kan använda .blg filer och generera detaljerade rapporter.

Börja genom att välja kategorin Lägg till räknare .

  1. Under Tillgängliga räknare väljer du räknaren %ProcessorTime i kategorin Processorinformation .

  2. Välj _Total, vilket ger dig statistik över alla kombinerade kärnor.

  3. Välj Lägg till. Fönstret visar %ProcessorTime under Tillagda räknare.

Skärmbild av dialogrutan Lägg till räknare i Prestandaövervakaren.

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.

Skärmbild av linjetrenddiagrammen i samlingens tidsram.

Varje räknare har värdena Average, Minimum och Maximum . Fokusera på både genomsnitts - och maxvärden , eftersom det genomsnittliga värdet kan variera beroende på datainsamlingens varaktighet. Om aktiviteten med hög CPU-användning sågs i 10 minuter medan den totala samlingen var 40 minuter blir de genomsnittliga värdena mycket lägre.

Föregående trenddiagram visar att den totala processorn var nära 80 procent i cirka 15 minuter.

Identifiera processen

Vi har identifierat att servern hade hög CPU-förbrukning under en angiven tidsperiod, men vi har ännu inte identifierat drivrutinen. Till skillnad från att använda PerfInsights måste du manuellt söka efter den skyldige 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.

Skärmbild av stegen för att lägga till den nya kategorin.

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 trenddiagram.

Om du vill 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 Total fokuserar du på staplar som visar hög överbelastning. Du kan ta bort de andra staplarna för att rensa vyn. Gå tillbaka till linjevyn .

Skärmbild av histogramvyn i Prestandaövervakaren och ett exempeldiagram som innehåller 2 staplar som visar hög överbelastning.

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.

Skärmbild av ett linjetrenddiagram som tydligt visar den skyldige processen.

Listan över tillgängliga verktyg slutar inte i 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.

Azure-övervakningsverktyg

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)

Skärmbild av sidan Mått i Azure Monitor. I det här exemplet väljs alternativet Procent cpu i sammansättningsinställningen.

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, som innehåller Perfmon-räknare.

Skärmbild av fältet Diagnostiklagringskonto på fliken Översikt på sidan Diagnostikinställningar.

Kategorierna Basic-räknare anges som standard. Du kan dock också ange en anpassad samling.

Skärmbild av alternativet Grundläggande kategorier på fliken Prestandaräknare på sidan Diagnostikinställningar.

När inställningarna har aktiverats kan du visa gästräknarna i avsnittet Mått . Du kan också ange Aviseringar (inklusive e-postmeddelanden) om måtten når ett visst tröskelvärde.

Skärmbild av skärmbild av fältet Måttnamnområde och knappen Ny aviseringsregel på sidan Mått.

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 uppstått måste du först identifiera vad som orsakade problemet med hög CPU-användning. 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 upprepande mönster samlar du in data under den tid då problemet troligen 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 Skapa räknare i Logman 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 de här parametrarna finns i logman create counter (Skapa räknare för logman).

När Perfmon-data samlas in medan problemet inträffar är de återstående stegen för att analysera data desamma som vi diskuterade tidigare.

Sammanfattning

När det gäller prestandaproblem är det viktigt att förstå din arbetsbelastning för att lösa problemet. Alternativen på olika VM-SKU:er och olika alternativ för disklagring 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 plötsliga förändringar i arbetsbelastningen inte 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 VM-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.