Rekommendationer för kontinuerlig prestandaoptimering

Gäller för denna checklista för Prestandaeffektivitet för Azure Well-Architected Framework:

PE:12 Optimera prestanda kontinuerligt. Fokusera på komponenter som visar försämrade prestanda över tid, till exempel databaser och nätverksfunktioner.

Den här guiden beskriver rekommendationerna för kontinuerlig prestandaoptimering. Kontinuerlig prestandaoptimering är en process för att ständigt övervaka, analysera och förbättra prestandaeffektiviteten. Prestandaeffektiviteten anpassas till ökningar och minskningar i efterfrågan. Prestandaoptimering måste vara en pågående aktivitet under hela arbetsbelastningens livslängd. Arbetsbelastningens prestanda försämras eller blir ofta överdriven över tid, och faktorer att tänka på är ändringar i användningsmönster, efterfrågan, funktioner och tekniska skulder.

Definitioner

Period Definition
Datanivåindelning En lagringsstrategi som omfattar att kategorisera data baserat på dess åtkomstfrekvens och lagra dem på lagringsnivåer i enlighet därmed.
Teknisk skuld Den ackumulerade ineffektiviteten, icke-optimala designval eller genvägar som avsiktligt tagits under utvecklingsprocessen för att leverera kod snabbare.
Time-to-live En mekanism som anger en förfallotid för data.

Viktiga designstrategier

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. Arbetsbelastningsteam behöver rätt kompetens och tankesätt för att optimera sina prestanda för att möta ökningar och minskningar i 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. Dessa team behöver tydliga förväntningar. Prestandamål, baslinjer och tröskelvärden för avvikelser (hur långt från baslinjen är acceptabelt) måste till exempel vara mycket synliga och socialiserade.

Kompromiss: Kontinuerliga prestandaoptimeringar kräver ett team som har rätt kompetens och tid för att hitta och åtgärda prestandaproblem. Att tilldela personal till prestanda ökar driftskostnaderna. 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 omfattar att undersöka nya funktioner och verktyg för 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 uppdaterade för att säkerställa att du använder de senaste innovationerna och metodtipsen. Övervaka konsekvent feedback och prestandamått från dessa nya tillägg för att förfina din metod.

Prioritera optimeringsarbetet

Proaktiv optimering av prestanda innebär att vidta proaktiva åtgärder för att förbättra arbetsbelastningens prestanda innan några prestandaproblem uppstår. Med proaktiva åtgärder kan du identifiera potentiella flaskhalsar, övervaka prestandamått och implementera optimeringar för att säkerställa att arbetsbelastningen fungerar effektivt och uppfyller de önskade prestandamålen. Baserat på analysen 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 utsatta för prestandaförsämring ö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 icke-optimal 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 databasens prestanda. Ö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 en smidig drift av din arbetsbelastning. Det kan omfatta implementering av prestandajusteringstekniker, optimering av resursallokering eller uppgradering av 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 i 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 så att de kan 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 i prestanda 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 aviseringar: Konfigurera automatiska ö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.

Hantera tekniska skulder

Teknisk skuld avser ackumulerade ineffektiviteter, icke-optimala 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 hantera tekniska skulder innebär att identifiera och lösa dessa problem för att förbättra arbetsbelastningens övergripande prestanda och underhållbarhet. Det här arbetet kan omfatta refaktorisering av kod, optimering av databasfrågor, förbättrad arkitekturdesign eller implementering av metodtips. Kanske introducerade du tekniska skulder för att uppfylla en tidsfrist, men du måste ta itu med 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 resursutnyttjandet. 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 ordna om 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, ta bort 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 resursutnyttjande.

Optimera dataeffektivitet

Att optimera dataeffektiviteten är en process för att säkerställa att data lagras, bearbetas och används på det mest effektiva sättet. 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 därmed. 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 ange en lämplig time-to-live tillåter du att onödiga data tas bort, vilket frigör lagringsutrymme och förbättrar den övergripande effektiviteten. Sessionsdata, temporära filer och cachedata är ofta mål för time to live. Databasposter kan också ha time-to-live.

Risk: En time to live som är för kort kan skapa prestandaproblem.

Azure-underlättande

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 kö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 på lämpligt sätt. 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 databasens prestanda. Azure SQL Database har en funktion för automatisk justering 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 prestandabehoven för din arbetsbelastning.

Optimera dataeffektivitet: Med datanivåindelning kan du lagra data på olika nivåer baserat på dess åtkomstfrekvens och prioritet. 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.

Checklista för prestandaeffektivitet

Se den fullständiga uppsättningen rekommendationer.