Anteckning
Å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:12 | Optimera prestanda kontinuerligt. Fokusera på komponenter som visar sämre prestanda över tid, till exempel databaser och nätverksfunktioner. |
|---|
Den här guiden beskriver rekommendationerna för kontinuerlig prestandaoptimering. Kontinuerlig prestandaoptimering är processen att ständigt övervaka, analysera och förbättra prestandaeffektiviteten. Prestandaeffektiviteten anpassas till ökad och minskad efterfrågan. Prestandaoptimering måste vara en pågående aktivitet under hela arbetsbelastningens livslängd. Arbetsbelastningens prestanda försämras ofta eller blir överdriven över tid, och faktorer att tänka på är ändringar i användningsmönster, efterfrågan, funktioner och tekniska skulder.
Definitioner
| Begrepp | Definition |
|---|---|
| Datanivåindelning | En lagringsstrategi som innebär att kategorisera data baserat på dess åtkomstfrekvens och lagra dem på lagringsnivåer i enlighet med detta. |
| Teknisk skuld | De ackumulerade ineffektiviteterna, de suboptimala designvalen eller genvägarna som avsiktligt har tagits under utvecklingsprocessen för att leverera kod snabbare. |
| Time-to-live | En mekanism som anger en förfallotid för data. |
Prestandaeffektivitet är när arbetsbelastningskapaciteten anpassas till den faktiska användningen. En arbetsbelastning som överpresterar är lika problematisk som en som underpresterar. Kompromisserna skiljer sig åt. Överprestation påverkar kostnadsoptimeringen. Dåliga prestanda påverkar användarna. Nyckeln till prestandaeffektivitet är övervakning, justering och testning över tid. Du måste regelbundet granska prestandamått och göra justeringar efter behov för att säkerställa att arbetsbelastningen är effektiv. Du måste testa alla ändringar före och efter implementeringen för att nå prestandamålen.
Utveckla en prestandakultur
En prestandakultur är en miljö där kontinuerlig förbättring förväntas och teamet lär sig av produktionen. Prestandaoptimering kräver särskilda kunskaper. Arbetsbelastningsteamen behöver rätt kunskaper och tankesätt för att optimera sina prestanda för att möta ökad och minskad efterfrågan. Du måste också allokera deras tid för att stödja nödvändig övervakning och reparation av prestandaproblem när de uppstår. De här teamen behöver tydliga förväntningar. Till exempel måste prestandamål, baslinjer och tröskelvärden för avvikelser (hur långt från baslinjen är acceptabelt) vara mycket synliga och socialiserade.
Kompromiss: Kontinuerliga prestandaoptimeringar kräver ett team som har rätt kunskaper och tid för att hitta och åtgärda prestandaproblem. Om du anger personal för prestanda ökar driftskostnaden. Om du har begränsade personalresurser kan kontinuerlig prestandaoptimering ta tid från andra operativa uppgifter.
Utvärdera nya plattformsfunktioner
Utvärdering av nya plattformsfunktioner innebär att undersöka de nya funktionerna och verktygen i en plattform som kan förbättra prestandaeffektiviteten, till exempel optimerade lagringslösningar, cachelagringsmekanismer eller resurshanteringsverktyg. Nya plattformsfunktioner kan öppna vägar för att förbättra prestandaeffektiviteten. Håll din plattform och dina verktyg up-to-date för att säkerställa att du använder de senaste innovationerna och bästa praxis. Övervaka konsekvent feedback och prestandamått från dessa nya tillägg för att förfina din metod.
Prioritera optimeringsarbetet
Att proaktivt optimera prestanda innebär att vidta proaktiva åtgärder för att förbättra arbetsbelastningens prestanda innan några prestandaproblem uppstår. Proaktiva åtgärder omfattar identifiering av potentiella flaskhalsar, övervakning av prestandamått och implementering av optimeringar för att säkerställa att arbetsbelastningen fungerar effektivt och uppfyller de önskade prestandamålen. Baserat på analys av försämrade komponenter, kritiska flöden och tekniska skulder kan du implementera prestandaoptimeringar som är specifika för varje område. Förbättringar kan omfatta kodändringar, infrastrukturjusteringar eller konfigurationsuppdateringar.
Prioritera försämrade komponenter
En arbetsbelastning har ofta komponenter som databaser och nätverkskomponenter som är benägna att försämra prestanda över tid. När arbetsbelastningen utvecklas och användningsmönstren ändras påverkar dessa ändringar ofta prestandan för enskilda komponenter i arbetsbelastningen. Ökade data i databaser kan leda till längre frågekörningstider och långsammare datahämtning. Ändringar i användningsmönster kan resultera i suboptimal frågedesign. Frågor som en gång var effektiva kan bli ineffektiva när arbetsbelastningen utvecklas. Ineffektiva frågor kan förbruka överdrivna resurser och försämra databasprestanda. Ökad arbetsbelastningsanvändning kan leda till högre nätverkstrafik, vilket orsakar problem med överbelastning och svarstid.
Det är viktigt att göra kontinuerliga ansträngningar för att optimera prestanda för dessa komponenter. Identifiera och åtgärda prestandaproblem i din arbetsbelastning proaktivt. Genom att prioritera kända försämrade komponenter kan du proaktivt åtgärda potentiella prestandaproblem och säkerställa att arbetsbelastningen fungerar smidigt. Det kan handla om att implementera prestandajusteringstekniker, optimera resursallokering eller uppgradera maskinvaru- eller programvarukomponenter efter behov.
Prioritera kritiska flöden
Kritiska flöden är de viktigaste och mest prioriterade processerna eller arbetsflödena i arbetsbelastningen. Genom att prioritera dessa kritiska flöden ser du till att de viktigaste delarna av arbetsbelastningen är optimerade för prestanda. Att veta vilka flöden som är kritiska hjälper till att prioritera optimeringsarbetet. Att optimera prestandaeffektiviteten för de viktigaste områdena i ditt program ger högsta avkastning på investeringen. Du bör övervaka kritiska flöden och de mest populära sidorna. Leta efter sätt att göra dem mer effektiva.
Automatisera prestandaoptimering
Automatisering kan eliminera repetitiva och tidskrävande manuella processer så att de kan utföras effektivt. Automation minskar risken för mänskliga fel och säkerställer konsekvens i körningen av optimeringsuppgifter. Genom att automatisera dessa uppgifter kan du också frigöra personer för att fokusera på mer komplexa aktiviteter och aktiviteter som ger mervärde. Du kan tillämpa automatisering på olika uppgifter, till exempel prestandatestning, distribution och övervakning:
Automatiserad prestandatestning: Använd automatiserade prestandatestverktyg som JMeter, K6 eller Selenium för att simulera olika arbetsbelastningar och scenarier.
Automatiserad distribution: Implementera automatiserade distributionsprocesser för att säkerställa konsekventa och felfria distributioner. Använd CI/CD-verktyg för att automatisera distributionsprocessen. De här verktygen kan hjälpa dig att identifiera flaskhalsar när du använder dem för att testa mot slutpunkter, kontrollera HTTP-statusar och till och med verifiera datakvalitet och variationer.
Övervakning och avisering: Konfigurera automatiserade övervaknings- och aviseringssystem för att kontinuerligt övervaka prestandamått och identifiera eventuella avvikelser eller avvikelser. När prestandaproblem identifieras kan automatiserade aviseringar utlösas för att meddela lämpliga team eller individer.
Incidenthantering: Implementera ett automatiserat incidenthanteringssystem som kan ta emot aviseringar, skapa biljetter och tilldela biljetter till lämpliga team för lösning. De här stegen hjälper till att säkerställa att prestandaproblem åtgärdas snabbt och tilldelas till rätt resurser.
Automatiserad diagnostik: Utveckla automatiserade diagnostikverktyg eller skript som kan analysera prestandadata och identifiera de bakomliggande orsakerna till prestandaproblem. De här verktygen kan hjälpa dig att hitta specifika områden eller komponenter i systemet som orsakar prestandaproblem.
Automatiserade reparationsåtgärder: Definiera och implementera automatiserade reparationsåtgärder som kan utlösas när specifika prestandaproblem identifieras. Dessa åtgärder kan omfatta omstart av tjänster, justering av resursallokering, rensning av cacheminnen eller implementering av andra tekniker för prestandaoptimering.
Självåterställningssystem: Skapa självåterställningsfunktioner i systemet genom att automatisera återställningsprocessen för kända prestandaproblem. Den här funktionen kan innebära att du automatiskt åtgärdar eller justerar systemkonfigurationen för att återställa optimala prestanda.
Åtgärda teknisk skuld
Teknisk skuld avser ackumulerade ineffektiviteter, underoptimala designval eller genvägar som tas under utvecklingsprocessen som kan påverka prestandan. Tekniska skulder, otydlig kod och alltför komplexa implementeringar kan göra det svårare att uppnå prestandaeffektivitet. Att åtgärda tekniska skulder innebär att identifiera och lösa dessa problem för att förbättra arbetsbelastningens övergripande prestanda och underhåll. Det här arbetet kan omfatta refaktorisering av kod, optimering av databasfrågor, förbättrad arkitekturdesign eller implementering av metodtips. Du kanske har infört en teknisk skuld för att uppfylla en tidsgräns, men du måste hantera den tekniska skulden när du optimerar prestandaeffektiviteten över tid.
Optimera databaser
Kontinuerlig optimering av databaser innebär att identifiera och implementera optimeringar för att säkerställa att databaser kan hantera belastningar, leverera snabba svarstider och minimera resursanvändningen. Genom att regelbundet optimera databaser kan du förbättra programmets prestanda, minska stilleståndstiden och förbättra den övergripande användarupplevelsen.
Optimera databasfrågor: Dåligt skrivna SQL-instruktioner kan försämra databasens prestanda. Ineffektiva JOIN-villkor kan orsaka onödig databehandling. Komplexa underfrågor, kapslade frågor och överdrivna funktioner kan minska körningshastigheten. Frågor som hämtar för mycket data ska skrivas om. Du bör identifiera dina vanligaste eller kritiska databasfrågor och optimera dem. Optimeringen hjälper till att säkerställa snabbare frågor.
Underhåll index: Utvärdera indexeringsstrategin för att säkerställa att indexen är korrekt utformade och underhållna. Indexunderhåll omfattar identifiering av oanvända eller redundanta index och att skapa index som överensstämmer med frågemönstren. Databasindex hjälper till att påskynda datahämtningsåtgärder. För relationsdatabaser måste du övervaka indexfragmentering. Du bör återskapa eller omorganisera index regelbundet. För icke-relationella databaser måste du välja rätt indexeringsprincip för din arbetsbelastning. Använd automatisk justering på databaser där det är tillgängligt. Dessa funktioner omfattar att automatiskt skapa saknade index, släppa oanvända index och planera korrigering. Mer information finns i Underhålla index för att förbättra prestanda.
Granska modelldesignen: Granska datamodellen för att se till att du optimerar den för programmets specifika krav. Att förbättra frågeprestanda och datahämtning kan innebära avnormalisering, partitionering eller andra tekniker.
Optimera databaskonfigurationen: Optimera databaskonfigurationsinställningar som minnesallokering, disk-I/O och samtidighetsinställningar för att maximera prestanda och resursanvändning.
Optimera dataeffektivitet
Att optimera dataeffektiviteten är en process för att säkerställa att data lagras, bearbetas och nås på ett så effektivt sätt som möjligt. Datanivåindelning och användning av TTL (time-to-live) är tekniker som kan användas för att optimera dataeffektiviteten. Du kan använda dessa tekniker i olika datalagringsscenarier, till exempel databaser, filsystem eller objektlagring.
Använd datanivåindelning: Datanivåindelning omfattar kategorisering av data baserat på dess betydelse eller frekvens för åtkomst och lagring av data på olika nivåer i enlighet med detta. Genom att konfigurera datanivåindelning kan du använda lagringsresurser på ett effektivare sätt och förbättra prestandan. Ofta använda eller kritiska data kan lagras på högpresterande nivåer, medan mindre ofta använda eller mindre kritiska data kan lagras på lägre kostnadsnivåer. Målet är att granska dataanvändningen över tid för att säkerställa att data är på rätt nivå. När dataprioriteringar ändras bör data flyttas från en nivå till en annan.
Implementera time-to-live: Time-to-live är en mekanism som anger en förfallotid för data. Med time-to-live kan data tas bort eller arkiveras automatiskt efter en viss period, vilket minskar lagringskraven och förbättrar datahanteringen. Genom att ställa in en lämplig time-to-live låter du onödiga data tas bort, vilket frigör lagringsutrymme och förbättrar den övergripande effektiviteten. Sessionsdata, temporära filer och cachedata är vanliga mål för time-to-live. Databasposter kan också ha en time-to-live.
Risk: En time-to-live som är för kort kan skapa prestandaproblem.
Azure-stöd
Automatisera prestandaoptimering: Azure Advisor ger automatiska prestandarekommendationer baserat på telemetri för arbetsbelastningar. Du bör granska och åtgärda dessa rekommendationer regelbundet. Azure Monitor ger insikter i realtid om systemets prestanda och gör att du kan konfigurera aviseringar baserat på specifika prestandamått. Azure Log Analytics tillhandahåller automatiserad diagnostik och analys av insamlade loggar och mått. Verktyg som Azure Application Insights ger insikter och rekommendationer för att optimera prestanda.
Om du vill automatisera reparationen använder du automatiseringsverktyg eller skript för att utföra reparationsåtgärder automatiskt när aviseringarna utlöses. Du kan använda Azure Automation, Azure Functions eller anpassade automatiseringslösningar.
Med Azure kan prestandatestning simulera olika användarscenarier och arbetsbelastningar. Automatiserad testning kan hjälpa dig att identifiera flaskhalsar i prestanda och optimera systemet i enlighet med detta. Verktyg som Azure DevOps kan automatisera prestandatestning.
Optimera databaser: SQL-serien med produkter har många inbyggda funktioner som gör att du kan övervaka och åtgärda SQL-databasprestanda. Du bör använda de här funktionerna för att upprätthålla databasprestanda. Azure SQL Database har en automatisk justeringsfunktion som kontinuerligt övervakar och förbättrar frågor. Du bör använda den här funktionen för att förbättra SQL-frågor automatiskt.
Du kan anpassa dina indexeringsprinciper med hjälp av funktionerna i Azure Cosmos DB. Anpassa principerna för att uppfylla arbetsbelastningens prestandabehov.
Optimera dataeffektiviteten: Med datanivåindelning kan du lagra data på olika nivåer baserat på dess åtkomstfrekvens och betydelse. Det hjälper till att optimera lagringskostnader och prestanda. Azure tillhandahåller olika lagringsnivåer, till exempel frekventa, lågfrekventa och arkivnivåer för blobdata. Frekventa nivåer är optimerade för data som används ofta, lågfrekventa nivåer är för data som används sällan och arkivnivåer är för data som används sällan. Genom att använda lagringsåtkomstnivån som passar bäst för dina data kan du säkerställa effektiv datalagring och hämtning.
Relaterade länkar
- Optimera indexunderhåll för att förbättra frågeprestanda och minska resursförbrukningen
- Förbättra prestandan för Azure-program med hjälp av Azure Advisor
- Automatisk justering i Azure SQL Database och Azure SQL Managed Instance
- Indexeringsprinciper i Azure Cosmos DB
Checklista för prestandaeffektivitet
Se den fullständiga uppsättningen rekommendationer.