Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för den här rekommendationen för checklista för prestandaeffektivitet i Azure Well-Architected Framework:
| PE:04 | Upprätta konsekventa prestandamätningar så att beteendet kan analyseras över tid, jämföras med baslinjer och användas för att identifiera nedbrytnings-, ineffektivitets- och skalningsluckor. |
|---|
Utan prestandadata går underliggande problem och optimeringsmöjligheter obemärkt förbi, vilket leder till försämrad användarupplevelse.
Den här artikeln beskriver designstrategier för att implementera prestandamätningar i flera lager som fångar upp svarstid, dataflöde och resursbeteende för att upprätta baslinjer och identifiera prestandaförsämring i arbetsbelastningen.
De viktigaste strategierna i den här artikeln bygger på den grundläggande driftspraxis som beskrivs i OE:07-arkitekturstrategier för att utforma ett övervakningssystem. Vägledning om hur du implementerar övervakningspraxis finns i designguiden för övervakning. Vi rekommenderar att du granskar dessa resurser först. Rekommendationerna i den här guiden är begränsade till prestanda. Information om tillförlitlighet finns i RE:10-arkitekturstrategier för att utforma en tillförlitlig strategi för övervakning och aviseringar.
Definitioner
| Begrepp | Definition |
|---|---|
| Aktivitetsloggar | Loggar som spårar hanteringsåtgärder på resurser, till exempel att ta bort en resurs. |
| Programloggar | Loggar som spårar information om programhändelser, fel och andra aktiviteter, till exempel fel med inloggningar och databasanslutning. |
| Verktyg för övervakning av programprestanda (APM) | Ett verktyg som övervakar och rapporterar prestanda för ett program. |
| Baselines | Förväntade systemprestandamått som används som referenspunkt för att identifiera drift, regressioner och förbättringar över tid. |
| Kodinstrumentation | Direkt eller indirekt insamling av prestandamått ur programkodens perspektiv. Insamlade mått omfattar flödesmått, resursanvändning och mått som är specifika för språket eller körningen. |
| Distribuerad spårning | Samla in och korrelera mått mellan distribuerade arbetsbelastningskomponenter för att förstå transaktionsflöden från slutpunkt till slutpunkt. |
| Fördröjning | Tidsfördröjningen mellan att initiera en begäran och ta emot ett svar, vilket mäter systemets svarstider. |
| Metrics | Numeriska mått som registrerar arbetsbelastningens prestandabeteende över tid, vanligtvis aggregerade för analys. |
| Percentil (p50, p95, p99) | Statistiska mått som visar prestandafördelning. p50 representerar typisk prestanda, p95 visar de flesta användarupplevelser under belastning, p99 fångar sämsta prestanda. |
| Plattformsmetrik | Numeriska värden som registrerar arbetsbelastningsprestanda vid en viss tidpunkt. |
Använda percentilbaserade mått
Mät prestandamått, till exempel svarstid, svarstid eller inläsningstider, med percentiler (p50, p95, p99), inte medelvärden. Medelvärden kan vara vilseledande. Om de flesta begäranden är snabba men några få är extremt långsamma döljer genomsnittet den dåliga upplevelsen.
Percentiler visar tail-beteendet, vilket är viktigt för att förstå användarupplevelsen. p50 representerar typisk prestanda, p95 visar vad de flesta användare upplever under belastning, och p99 fångar sämsta prestanda eller avvikande värden.
Samla in prestandadata med dina övervakningsverktyg och representera dem som percentiler över definierade tidsfönster. Använd dessa som baslinje för övervakning, aviseringar och prestandaanalys.
Definiera gränserna för prestandaförbättringar
Definiera tydliga prestandagränser så att du vet exakt vad som ingår i dina mått. Dela upp svarstiden i systemet i stället för att behandla den som ett enda tal. Till exempel, tilldela tid till varje lager som omfattar kanttjänster, gateway-enheter, beräkning och beroenden, för att identifiera var fördröjningar faktiskt uppstår.
Separera det du styr från det du inte gör: din kod, dina tjänster, infrastruktur och direkta beroenden jämfört med externa faktorer som villkor på klientsidan, DNS-matchning, ISP-svarstid eller enhetsbegränsningar. Den här skillnaden förhindrar felattribution och håller optimeringen fokuserad på områden där du kan göra ändringar, samtidigt som den återspeglar den fullständiga användarupplevelsen från slutpunkt till slutpunkt.
Utvärdera när och var prestandaproblem påverkar användarupplevelsen. Kompensera försämringen genom design eller minska genom förbättringar i de kontrollerbara delarna av systemet.
Segmentera signaler efter miljö och syfte
Segmentera prestandadata så att varje signal återspeglar en tydlig kontext. Separera efter miljö och syfte för att undvika att blanda signaler som beter sig annorlunda eller tjänar olika beslut.
Håll produktions- och icke-produktionsdata åtskilda. Produktionsdata återspeglar verklig användarpåverkan och bör driva övervakning och aviseringar. Icke-produktionsdata är användbara för testning och justering, men att blanda dem med produktion förvränger resultaten och döljer verkliga problem.
Separera prestandamått från affärsmått. Prestandamått spårar systemets beteende och arbetsbelastningshälsa, medan affärsmått spårar resultat. Även när de överlappar håller du dem i distinkta strömmar så att var och en kan analyseras och användas oberoende av varandra.
Skapa omfångs- och åtgärdsbara prestandaaviseringar
Målet med aviseringar är tidig identifiering av prestandaförsämring innan den blir användar synlig eller påverkar verksamheten. Skapa aviseringar på två nivåer: användarupplevelsen från slutpunkt till slutpunkt och grundläggande interna transaktioner som representerar kritiska systemsökvägar under belastning.
Använd en enda, konsekvent datauppsättning i varje miljö för både mål och aviseringar. Om aviseringar baseras på andra data än dina prestandamål blir de opålitliga och svåra att lita på.
Skapa aviseringar som är användbara och tydligt knutna till prestandaresultat. Varje avisering bör ange vilket tröskelvärde som hade en ihållande överträdelse, den potentiella effekten och de komponenter som berörs, så det är tydligt var du ska undersöka och vad som påverkas. Börja med vanliga, välkända tröskelvärden och förfina dem sedan över tid baserat på observerat systembeteende och arbetsbelastningsegenskaper.
När direkt aviseringar om ett externt beroende inte är möjligt kan du använda indirekta signaler som varaktighet för beroendeanrop, felfrekvenser eller timeoutbeteende för att beräkna dess inverkan på systemets prestanda.
Övervaka elasticitet
Mät hur systemet svarar på ändringar i efterfråge- och skalningshändelser.
Spåra svarstiden för kallstart och initiering för att förstå hur startkostnader påverkar svarstiden, särskilt vid utskalningshändelser. Övervaka utskalnings- och inskalningsbeteende för att utvärdera hur snabbt systemet anpassar sig till ändringar i belastningen och om skalningsåtgärderna håller jämna steg med efterfrågan.
Spåra prestanda över tid
Spåra hur prestanda utvecklas med ändringar i din design och dina externa faktorer.
Upprätta baslinjer som representerar förväntade systemprestanda och jämför sedan aktuellt beteende med dem för att identifiera drift, inklusive regressioner och förbättringar.
Ansluta prestandaändringar till drifthändelser som distributioner, konfigurationsuppdateringar och skalningsåtgärder. Kommentera tidslinjer med dessa händelser så att förändringar i beteendet har tydlig kontext och kan spåras tillbaka till troliga orsaker.
Använd den här kontinuerliga synligheten som en feedbackloop för tekniska beslut. Mata in prestandainsikter i planering och prioritering och behandla dem som indata till vanligt arbete i stället för bara incidenthantering.
Förfina prestandamålen kontinuerligt när systemet utvecklas. Justera serviceavtal, tröskelvärden och förväntningar baserat på observerade beteende- och användningsmönster så att målen förblir realistiska och anpassade till den faktiska användarupplevelsen.
Samla in prestandadata för program
Du måste ha programmets prestandamått, till exempel dataflöde, svarstid och slutförandetider, främst insamlade via instrumenteringskod.
Instrumentkritiska körningsvägar där prestanda är mest synliga: nyckelbegäransflöden, resursintensiva åtgärder och punkter där externa beroenden eller återförsök sker. Se till att end-to-end-transaktionssynlighet säkerställs så att totala köretiden och dess bidragande steg kan mätas.
Samla in tre kärntyper av prestandasignaler:
- Mått för aggregerat prestandabeteende (svarstidsfördelningar, dataflöde, felfrekvenser)
- Spår för att förstå hur tiden fördelas över förfrågningsvägar och systemkomponenter
- Loggar för detaljerad körningskontext vid specifika steg eller händelser
Använd konsekventa metadata för dessa signaler så att prestandadata kan korreleras mellan lager i systemet och mellan tjänster.
Undvik att duplicera prestandasignaler på lägre nivå som redan exponeras av plattformen om inte ytterligare kornighet krävs för att förklara arbetsbelastningsspecifikt beteende eller flaskhalsar.
Samla in resursprestandadata
Samla in prestandadata på resursnivå för att förstå hur infrastrukturkomponenter beter sig under belastning och hur de bidrar till övergripande arbetsbelastningsprestanda.
Varje tjänst exponerar plattformsspecifika mått som återspeglar dess hälso- och prestandaegenskaper. Använd diagnostikinställningen för att exportera dessa data så att de kan nås för aviseringar, instrumentpaneler och långsiktig analys utöver kortsiktig kvarhållning av plattformar.
Samla in mått och loggar för alla resurser. Spåra beräknings- och lagringsanvändningen mot förväntade intervall för att bekräfta att underetablering inte introducerar svarstid och försämrad prestanda under belastning. Överetablering kan också identifieras med dessa datauppgifter genom att analysera P99-användning och jämföra med kvarvarande kapacitet på dina resurser.
Övervaka nätverkstrafik som en del av resursprestanda. Analysera trafikflödet mellan undernät och tjänstgränser för att förstå svarstider, överbelastning och dataöverföringsmönster som kan påverka arbetsbelastningens prestanda.
Samla in databas- och lagringsdata
Databas- och lagringssystem producerar specialiserade prestandasignaler för att identifiera flaskhalsar, validera kapacitet och förstå arbetsbelastningsbeteende. Dessa signaler kommer vanligtvis från inbyggda övervakningsverktyg och systemgenererade loggar.
Fokusera på viktiga prestandadimensioner:
| Område | Vad du ska mäta | Vad det säger dig |
|---|---|---|
| Genomflöde | Läs-/skrivvolym över tid | Dataöverföringskapacitet |
| Fördröjning | Tid per lagringsåtgärd | Svarstider för lagring |
| IOPS | Läs-/skrivåtgärder per sekund | Transaktionshanteringsfunktion |
| Kapacitetsanvändning | Använd jämfört med tillgänglig lagring | Skalnings- och kapacitetsplaneringsbehov |
För databaser utökar du övervakningen till arbetsbelastningsspecifikt beteende:
| Område | Vad du ska mäta | Vad det säger dig |
|---|---|---|
| Frågeprestanda | Körningstid, frekvens, resursanvändning | Effektiviteten i dataåtkomstmönster |
| Transaktionsprestanda | Varaktighet, samtidighet, låskonkurrens | Konkurrens- och transaktionseffektivitet |
| Indexprestanda | Fragmentering, användning, optimeringspåverkan | Effektiviteten hos strukturer för accelerering av frågor |
| Resursanvändning | CPU, minne, disk, nätverk | Begränsningar på systemnivå |
| Anslutningsmått | Aktiva, misslyckade och avbrutna anslutningar | Stabilitet och anslutningstryck |
| Transaktionshastighet | Transaktioner per sekund | Arbetsbelastningsintensitet och ändringar över tid |
| Felfrekvenser | Databasfel och -fel | Tillförlitlighets- och prestandaförsämringssignaler |
Använd dessa signaler tillsammans för att skilja mellan långsamma frågor, resursmättnad och strukturell ineffektivitet. Detta möjliggör riktad optimering i både lagringssystem och databasarbetsbelastningar.
Samla in prestandadata för operativsystemet
För infrastrukturbaserade arbetsbelastningar samlar du in mått på operativsystemnivå för att förstå hur beräkningsresurser används och var resursbegränsningar kan uppstå.
Sampla operativsystemets prestandaräknare med jämna mellanrum för att fånga systemets tidsbaserade beteende under belastning.
| Område | Vad du ska mäta | Vad det indikerar |
|---|---|---|
| CPU | CPU-användning (användare/privilegierad), cpu-kölängd | Beräkningsmättnad och schemaläggningstryck |
| Processes | Antal trådar, antal handtag | Processbelastning på program- och operativsystemnivå |
| Memory | Allokerat minne, tillgängligt minne, sidväxlingshastighet, sidväxlingsanvändning | Minnesbelastning och växlingsaktivitet |
| Disk | Läs-/skrivfrekvens, dataflöde, diskanvändning | Lagrings-I/O-prestanda och flaskhalsar |
| Network | Gränssnittsdataflöde, RX/TX-fel | Problem med nätverkskapacitet och överföring |
Använd dessa signaler för att identifiera resursmättnad på operativsystemnivå och för att skilja mellan ineffektivitet på programnivå och infrastrukturbegränsningar.
Generera syntetiska data vid behov
Om systemet inte används konsekvent är det svårt att avgöra om det fungerar bra när trafiken returneras.
Du kan åtgärda detta genom att använda syntetiska transaktioner som skickar automatiserade begäranden via systemet. Dessa simulerar verklig användning utan att påverka faktiska användare eller data. Detta hjälper till att hålla delar av systemet aktivt, generera konsekventa prestandamått och avslöja mönster (till exempel problem med tid på dagen) som oregelbunden användning kan dölja.
Azure-förenkling
Azure Monitor tillhandahåller en enhetlig plattform för att samla in, analysera och svara på prestandadata i hela arbetsbelastningen. Den aggregerar data från program, infrastruktur och externa källor till en gemensam dataplattform.
Datainsamling och lagring: Använd Log Analytics-arbetsytor för att centralisera dina prestandadata med konfigurerbara kvarhållningsprinciper. Skapa flera arbetsytor för att segmentera data efter miljö- eller efterlevnadskrav.
Programövervakning: Application Insights samlar in telemetri på programnivå, inklusive begärandefrekvens, svarstider och undantag. Aktivera distribuerad spårning för att korrelera prestanda mellan distribuerade komponenter.
Infrastrukturövervakning: Aktivera diagnostikinställningar för alla Azure-tjänster för att samla in plattformsloggar och mått. Använd Azure Diagnostics-tillägget för detaljerade prestandadata för virtuella datorer. Utforska telemetrialternativ för din specifika plattform. Kubernetes-kluster genererar till exempel omfattande prestandatelemetri via Prometheus-integreringar .
Databas och lagring: Azure Monitor tillhandahåller inbyggd övervakning för Azure SQL Database, MySQL, PostgreSQL och lagringstjänster. Azure Storage Analytics spårar viktiga prestandaindikatorer som dataflöde och svarstid i Blob, Table och Queue Storage.
Aviseringar och analys: Skapa aviseringsregler med anpassningsbara tröskelvärden, tidsfönster och åtgärder (e-post, webhooks, Azure Functions). Använd Azure Monitor-loggar för att korsfråga och korrelera prestandadata. Prisinformation finns i Prissättning för Azure Monitor.
Exempel
- Baslinje med hög tillgänglighet för webbprogram för zonredundanta apptjänster
- Övervaka ett mikrotjänstprogram i Azure Kubernetes Service (AKS)
- Övervaka komponenter i landningszonen för Azure-plattformar
Relaterade länkar
Checklista för prestandaeffektivitet
Se den fullständiga uppsättningen med rekommendationer.