Rekommendationer för att optimera kod och infrastruktur
Gäller för denna checklista för Prestandaeffektivitet för Azure Well-Architected Framework:
PE:07 | Optimera kod och infrastruktur. Använd kod som är högpresterande och se till att den avlastar ansvarsområden till plattformen. Använd endast kod och infrastruktur för deras kärnsyfte och endast när det behövs. |
---|
Den här guiden beskriver rekommendationerna för att optimera kod- och infrastrukturprestanda. För att optimera din kod och infrastruktur bör du endast använda komponenterna för deras kärnsyfte och endast när det behövs. När du överanvänder kod och infrastruktur skapas onödig resursförbrukning, flaskhalsar och långsamma svar. För att kompensera för dessa ineffektivitet måste du lägga till fler resurser för att utföra samma uppgifter.
Definitioner
Period | Definition |
---|---|
Samtidighet | När flera uppgifter eller processer utförs samtidigt, men inte nödvändigtvis på exakt samma gång. |
CPU-arkitektur | De komponenter och principer som påverkar hur datorn fungerar. |
Datakomprimering | Åtgärden att minska storleken på filer genom att minimera redundanta data. |
Heap | Ett område i minnet som används för körningsminnesallokeringar. |
Minnesläcka | När en arbetsbelastning inte kan frigöra allokerat minne när minnet inte längre behövs. |
Parallellitet | När flera uppgifter eller processer utförs samtidigt. |
Viktiga designstrategier
Optimering av kod och infrastruktur innebär finjustering av koden och den stödjande infrastrukturen för att förbättra prestandaeffektiviteten. Det kräver högpresterande kod som kör uppgifter snabbt och inte slösar resurser. Det kräver en väldesignad infrastruktur som effektiviseras för att undvika onödig komplexitet. En arbetsbelastning bör använda plattformens inneboende funktioner. Det är en metod som hjälper till att säkerställa att både kod och infrastruktur främst används för deras kärnsyften och endast när det behövs.
Optimera kodprestanda
Du kan optimera kodprestanda genom att ändra kod för att minska resursanvändningen, minimera körningen och förbättra prestandan. Du kan ändra kod för att förbättra effektiviteten och hastigheten för ett program. Maskera inte prestandaproblem med råstyrkekraft. Brute force innebär att lägga till beräkningsresurser för att kompensera för kodprestanda, till exempel att lägga till extra kapacitet i stället för att adressera källan. Du måste åtgärda prestandaproblem med optimering. När du optimerar kodprestanda kan du maximera användningen av systemresurser, förbättra svarstiden, minska svarstiden och förbättra användarupplevelsen.
Instrumentera koden
Instrumenteringskod syftar på metoden att lägga till kodfragment eller bibliotek i kod som samlar in data och övervakar kodprestanda under körning. Med kodinstrumentation kan utvecklare samla in information om viktiga mått, till exempel resursförbrukning (CPU, minnesanvändning) och körningstid. Genom att instrumentera kod kan utvecklare få insikter om heta kodsökvägar, identifiera flaskhalsar i prestanda och optimera koden för bättre prestandaeffektivitet.
I en idealisk miljö bör du göra kodanalys tidigt i livscykeln för programvaruutveckling. Ju tidigare du får ett kodproblem, desto billigare är det att åtgärda det. Du vill automatisera så mycket av den här kodanalysen som möjligt. Använd dynamiska och statiska kodanalysverktyg för att minska den manuella ansträngningen. Tänk dock på att den här testningen fortfarande är en simulering av produktionen. Produktion ger den tydligaste förståelsen för kodoptimering.
Kompromiss: Kodövervakningsverktyg kommer sannolikt att öka kostnaderna.
Identifiera heta sökvägar
Genom att instrumentera koden kan du mäta resursförbrukningen för olika kodsökvägar. De här måtten hjälper dig att identifiera heta sökvägar. Frekventa sökvägar har en betydande effekt på prestanda och resursanvändning. De är kritiska eller ofta körda avsnitt i ett program som kräver höga prestanda och låg svarstid. Tänk på följande för att identifiera heta kodsökvägar:
Analysera körningsdata: Samla in körningsdata och analysera dem för att identifiera områden i koden som förbrukar betydande resurser, till exempel CPU-, minnes- eller I/O-åtgärder. Leta efter mönster eller kodavsnitt som körs ofta eller tar lång tid att slutföra.
Mäta prestanda: Använd profileringsverktyg eller ramverk för prestandatestning för att mäta körningstiden och resursförbrukningen för olika kodsökvägar. Det hjälper till att identifiera flaskhalsar och förbättringsområden.
Överväg affärslogik och användareffekt: Utvärdera vikten av olika kodsökvägar baserat på deras relevans för programmets funktioner eller viktiga affärsåtgärder. Avgör vilka kodsökvägar som är avgörande för att leverera värde till användare eller uppfylla prestandakraven.
Optimera kodlogik
Att optimera kodlogik handlar om att förfina kodens struktur och design för att utföra uppgifter med färre resurser. Förbättrad logik minskar onödiga åtgärder. Det skapar snabbare körning med mindre resursförbrukning. Du bör ta bort onödiga åtgärder i kodsökvägen som kan påverka prestanda. Prioritera optimering av heta sökvägar för att se de största prestandaeffektivitetsvinsterna. Tänk på följande strategier för att optimera kodlogik:
Ta bort onödiga funktionsanrop: Granska koden och identifiera funktioner som inte är nödvändiga för de önskade funktionerna och kan påverka prestanda negativt. Om ett funktionsanrop till exempel utför en validering som slutfördes tidigare i koden kan du ta bort det onödiga verifieringsfunktionsanropet.
Minimera loggningsåtgärder: Loggning kan vara användbart för felsökning och analys, men överdriven loggning kan påverka prestanda. Utvärdera behovet av varje loggningsåtgärd och ta bort eventuella onödiga loggningsanrop som inte är viktiga för prestandaanalys.
Optimera loopar och villkor: Analysera loopar och villkor i koden och identifiera eventuella onödiga iterationer eller villkor som kan elimineras. Att förenkla och optimera dessa strukturer kan förbättra kodens prestanda. Minimera funktionsanrop i loopar och eliminera redundanta beräkningar. Överväg att flytta beräkningar utanför loopen eller använda loop-avregistrering.
Minska onödig databearbetning: Granska koden för onödiga databearbetningsåtgärder, till exempel redundanta beräkningar eller transformeringar. Eliminera dessa onödiga åtgärder för att förbättra kodens effektivitet.
Optimera datastrukturer. Om du vill lagra och hämta data effektivt väljer du lämpliga datastrukturer, till exempel matriser, länkade listor, träd och hash-tabeller. Välj den bästa datastrukturen för ett specifikt problem. En lämplig datastruktur förbättrar programmets prestanda.
Minimera nätverksbegäranden: Om koden omfattar att göra nätverksbegäranden minimerar du antalet begäranden och optimerar deras användning. Batch-begäranden när det är möjligt och undvik onödiga tur- och returresor för att förbättra prestandan.
Minimera allokeringar: Identifiera områden där överdriven minnesallokering sker. Optimera koden genom att minska onödiga allokeringar och återanvända befintliga resurser när det är möjligt. Genom att minimera allokeringarna kan du förbättra minneseffektiviteten och den övergripande prestandan. Använd lämpliga strategier för minneshantering och skräpinsamling för programmeringsspråket.
Minska datastrukturens storlek: Utvärdera storleken på dina datastrukturer, till exempel klasser, och identifiera områden där minskning är möjlig. Granska datakraven och eliminera onödiga fält eller egenskaper. Optimera minnesanvändningen genom att välja lämpliga datatyper och packa data effektivt.
Använd prestandaoptimerade SDK:er och bibliotek. Använd interna SDK:er eller prestandaoptimerade bibliotek. Interna SDK:er är utformade för att interagera med tjänster och resurser på en plattform eller inom ett ramverk. Molnbaserade SDK:er fungerar till exempel bättre med molntjänstdataplan än med anpassad API-åtkomst. SDK:er är bra på att hantera nätverksbegäranden och optimera interaktioner. Prestandaoptimerade bibliotek, till exempel Math.NET, innehåller prestandaoptimerade funktioner. När du tillämpar funktionerna på rätt sätt kan du förbättra arbetsbelastningens prestanda.
Övergripande implementering: Överväg effekterna av övergripande implementeringar, till exempel mellanprogram eller tokenkontroller, och utvärdera om de påverkar prestanda negativt.
Granska prestandarekommendationerna som är specifika för det programmeringsspråk som du arbetar med. Utvärdera koden mot dessa rekommendationer för att identifiera förbättringsområden.
Kompromisser:
- Optimering av kod och heta sökvägar kräver utvecklarkunskaper i att identifiera kodeffektivitet är subjektivt och kan vara mycket skicklig individuellt krävs för andra uppgifter.
- SDK:er ger bekvämlighet och eliminerar komplexiteten i att interagera med API:er. Men SDK:er kan begränsa dina kontroll- och anpassningsalternativ för anpassad kod.
Optimera minneshantering
Optimering av minneshantering innebär att förfina hur en arbetsbelastning använder, allokerar och frigör minnesresurser för att förbättra effektiviteten. Korrekt minneshantering förbättrar kodprestanda eftersom det minskar minnesåtgärdernas arbete. Effektiv minnesanvändning minskar svarstiden, förhindrar att systemet blir långsammare eller kraschar och maximerar dataflödet för beräkningsuppgifter. Överväg följande strategier för att optimera minneshanteringen.
Felsöka minnesproblem. Minnesdumpar är ögonblicksbilder av programminnet. De avbildar minnestillståndet för ett program vid en viss tidpunkt. Minnesdumpar möjliggör retrospektiv analys av minnesrelaterade problem. Välj lämplig typ av minnesdump baserat på vilket problem du försöker diagnostisera och vilka resurser som är tillgängliga. Du bör använda miniatyrdumpar för rutinmässig felsökning och fullständiga dumpar för komplexa, kritiska problem. Den här strategin ger en balans mellan resursanvändning och diagnostikfunktioner. Många kodvärdtjänster stöder minnesfelsökning. Du bör föredra tjänster som stöder minnesanalys framför de tjänster som inte gör det. Här är de grundläggande stegen för att felsöka minnesproblem:
Avbilda minnesdumpar: Börja med att konfigurera en mekanism för att avbilda minnesdumpar under programmets körning. Avbildningen kan utlösas manuellt, automatiskt eller när specifika villkor (t.ex. överdriven minnesförbrukning) uppfylls. Vissa molntjänster kanske redan erbjuder den här processen.
Analysera minnesdumpar: När du har samlat in minnesdumpar analyserar du dem. Många verktyg kan hjälpa dig att inspektera dessa dumpar, till exempel WinDbg för Windows-program eller GDB för Unix-baserade system.
Identifiera minnesläckor: Fokusera på att identifiera minnesläckor under analysen. Minnesläckor uppstår när programmet allokerar minne men inte kan frigöra det när minnet inte längre behövs. Sök efter objekt eller datastrukturer som finns kvar i minnet även när de ska frigöras.
Åtgärda och testa: När du identifierar den problematiska koden kan du koncentrera dig på att lösa minnesproblemen. Lösningar kan innebära att frigöra minne på rätt sätt, optimera datastrukturer eller omvärdera minneshanteringsmetoder. Bekräfta att dina lösningar genomgår rigorösa tester för att säkerställa deras effektivitet.
Iterera och övervaka: Minneshantering är en kontinuerlig process. Övervaka programmets minnesanvändning rutinmässigt och spara i insamlingen av minnesdumpar i produktion. Gå regelbundet tillbaka till analys- och optimeringsstegen för att se till att minnesproblemen inte återkommer med efterföljande kodändringar.
Genom att införliva minnesdumpanalys i livscykeln för programvaruutveckling kan du öka tillförlitligheten och effektiviteten i dina program. Det bidrar till att minska sannolikheten för minnesrelaterade problem i produktionen.
Minska minnesallokeringar. Minimera minnesallokeringar för att minska kodens totala minnesfotavtryck. Din arbetsbelastning kan använda det tillgängliga minnet effektivt. Skräpinsamlaren behöver inte frigöra oanvänt minne, och det minskar frekvensen och varaktigheten för skräpinsamlingscykler. Minnesallokeringar kan vara kostsamma, särskilt om du utför dem ofta. Minimera minnesallokeringar så att koden kan köras snabbt och effektivt.
Cachelagring lagrar data som används ofta nära processorn, vilket förbättrar prestandan. När du minimerar minnesallokeringen blir det mindre konkurrens om cacheutrymmet, så att du effektivt kan använda cachen. Ett stort antal minnesallokeringar kan försämra programmets prestanda och generera fel. Andra sätt att minimera minnesallokeringar är:
Lokala variabler: Använd lokala variabler i stället för globala variabler för att minimera minnesförbrukningen.
Uppskjuten initiering: Implementera uppskjuten initiering för att skjuta upp skapandet av objekt eller resurser tills de behövs.
Buffertar: Hantera buffertar effektivt för att undvika att allokera stora minnesbuffertar.
Objektpooler: Överväg att använda objektpooler för att återanvända stora objekt i stället för att allokera och frigöra dem.
Mer information finns i Reduce memory allocations (Minska minnesallokeringar ) och The large object heap on Windows systems (Minska minnesallokeringar och Den stora objekthögen på Windows-system).
Använda samtidighet och parallellitet
Samtidighet och parallellitet omfattar att köra flera uppgifter eller processer antingen samtidigt eller på ett överlappande sätt för att effektivt använda beräkningsresurser. Dessa tekniker ökar det totala dataflödet och antalet uppgifter som en arbetsbelastning kan bearbeta. När du kör uppgifter samtidigt eller parallellt minskar körningen av programmet, vilket minskar svarstiden och ökar svarstiderna. Samtidighet och parallellitet möjliggör effektiv användning av beräkningsresurser, till exempel CPU-kärnor eller distribuerade system. Samtidighet och parallellitet distribuerar effektivt arbetsbelastningen mellan beräkningsresurserna.
Använd parallellitet. Parallellitet är möjligheten för ett system att samtidigt utlösa flera uppgifter eller processer på flera beräkningsresurser. Parallellitet delar upp en arbetsbelastning i mindre uppgifter som körs parallellt. Du kan uppnå parallellitet med hjälp av tekniker som multiprocessing eller distribuerad databehandling. Distribuera uppgifter mellan processorer med flera kärnor för att optimera arbetsbelastningshanteringen. Optimera koden för att dra nytta av PROCESSOR-arkitekturen, trådningsmodeller och processorer med flera kärnor. När du kör kod parallellt förbättras prestandan eftersom arbetsbelastningen distribueras över flera kärnor.
Använd samtidighet. Samtidighet är möjligheten för ett system att köra flera uppgifter eller processer. Samtidighet gör det möjligt för olika delar av ett program att göra framsteg oberoende av varandra, vilket kan förbättra den övergripande prestandan. Du kan implementera samtidighet med hjälp av tekniker som flertrådsteknik, där flera trådar körs samtidigt i en enda process. Du kan också använda asynkron programmering, där aktiviteter utlöses samtidigt.
Asynkron programmering: Asynkron programmering är en metod för att utlösa uppgifter utan att blockera huvudtråden. Med asynkron programmering kan ett program utlösa uppgifter i väntan på att långvariga åtgärder ska slutföras. Med asynkron programmering kan programmet initiera flera uppgifter och vänta tills de har slutförts asynkront. Programmet behöver inte vänta tills varje uppgift har slutförts innan du går vidare till nästa.
Det finns många asynkrona programmeringstekniker och mönster, beroende på programmeringsspråk och plattform. En vanlig metod är att använda asynkrona nyckelord och konstruktioner, till exempel
async
ochawait
, på språk som C#. Med dessa nyckelord kan du definiera asynkrona metoder. Överväg att använda mönstret Asynkron Request-Reply för HTTP-trafik.Många ramverk och bibliotek har inbyggt stöd för asynkron programmering. På .NET-plattformen kan du till exempel implementera asynkrona åtgärder med hjälp av mönster som aktivitetsbaserat asynkront mönster och händelsebaserat asynkront mönster. Den specifika implementeringen av asynkron programmering varierar beroende på programmets programmeringsspråk, plattform och krav.
Köer: En kö är en lagringsbuffert som finns mellan en begärande komponent (producent) och arbetsbelastningens bearbetningskomponent (konsument). Det kan finnas flera konsumenter för en enda kö. När uppgifterna ökar bör du skala konsumenterna för att möta efterfrågan. Producenten placerar uppgifter i en kö. Kön lagrar uppgifterna tills en konsument har kapacitet. En kö är ofta det bästa sättet att lämna över arbete till en bearbetningstjänst som upplever toppar i efterfrågan. Mer information finns i Mönster för köbaserad belastningsutjämning och Lagringsköer och Service Bus-köer.
Använda anslutningspooler
Anslutningspooler är en metod för att återanvända etablerade Databasanslutningar i stället för att skapa en ny anslutning för varje begäran. Det kan vara dyrt att upprätta en anslutning till en databas. Du måste skapa en autentiserad nätverksanslutning till fjärrdatabasservern. Databasanslutningar är särskilt dyra för program som ofta öppnar nya anslutningar. Anslutningspoolen återanvänder befintliga anslutningar och eliminerar kostnaden för att öppna en ny anslutning för varje begäran. Anslutningspooler minskar anslutningsfördröjningen och möjliggör högt databasdataflöde (transaktioner per sekund) på servern. Du bör välja en poolstorlek som kan hantera fler anslutningar än vad du har för närvarande. Målet är att anslutningspoolen snabbt ska hantera nya inkommande begäranden.
Förstå gränser för anslutningspooler. Vissa tjänster begränsar antalet nätverksanslutningar. När du överskrider den här gränsen kan anslutningarna sakta ned eller avslutas. Du kan använda anslutningspooler för att upprätta en fast uppsättning anslutningar vid start och sedan underhålla dessa anslutningar. I många fall kan en standardpoolstorlek bestå av endast några få anslutningar som utförs snabbt i grundläggande testscenarier. Ditt program kan uttömma standardpoolstorleken under skalning och skapa en flaskhals. Du bör upprätta en poolstorlek som mappar till antalet samtidiga transaktioner som stöds på varje programinstans.
Testa anslutningspoolen. Varje databas och programplattform har lite olika krav för att konfigurera och använda en pool. Testa anslutningspoolen för att säkerställa att den fungerar effektivt under belastning.
Risk: Anslutningspooler kan skapa poolfragmentering och försämra prestanda.
Optimera bakgrundsjobb
Många program kräver bakgrundsaktiviteter som körs oberoende av användargränssnittet. Programmet kan starta jobbet och fortsätta att bearbeta interaktiva begäranden från användare. Exempel på bakgrundsjobb är batchjobb, processorintensiva uppgifter och långvariga processer, till exempel arbetsflöden. Bakgrundsaktiviteter bör inte blockera programmet eller orsaka inkonsekvenser på grund av fördröjd åtgärd när systemet är under belastning. För att förbättra prestanda kan du skala beräkningsinstanser som är värdar för bakgrundsaktiviteter. Mer information finns i Bakgrundsjobb , skalning och prestandaöverväganden.
Optimera infrastrukturprestanda
Att optimera infrastrukturens prestanda innebär att förbättra och justera infrastrukturelement för att säkerställa högsta drift och bästa användning av resurser för en arbetsbelastning. Genom att finjustera infrastrukturen kan du minimera slöseri, minska fördröjningar och uppnå mer med de tillgängliga resurserna. Det säkerställer att arbetsbelastningarna körs tillförlitligt och snabbt, vilket ger bättre användarupplevelser och kostnadsbesparingar. Tänk på följande strategier för att optimera infrastrukturens prestanda:
Lägg till användningsgränser. Du kan implementera användningsgränser för vissa arbetsbelastningskomponenter. Om du till exempel vill ta bort instabila poddar kan du definiera processor- och minnesgränser för poddar i Azure Kubernetes Service (AKS). För att optimera prestanda kan du definiera minnesgränser i virtuella Java-datorer .)
Effektivisera infrastrukturen. Förenkla din arbetsbelastning för att minska risken för interaktions-, beroende- och kompatibilitetsproblem. När du förenklar arbetsbelastningen optimerar du resursutnyttjandet av minne, bearbetningskraft och lagring.
Minska belastningen. Minska belastningen på en arbetsbelastning genom att minimera efterfrågan på ett program och aktivera resurser för att utföra sina primära uppgifter. Det är till exempel vanligt att undvika att köra säkerhetslösningar i koden eller på enskilda beräkningsinstanser. Webbservrar bör i stället hantera HTTP-begäranden. Brandväggar för webbprogram och gatewayresurser kan hantera säkerhetskontroller. Följande strategier bidrar till att minska belastningen på din arbetsbelastning:
Slutlig konsekvens: Anta en slutlig konsekvensmodell för att förbättra prestanda genom att tillåta att data är något daterade. Slutlig konsekvens minskar den omedelbara efterfrågan på CPU-cykler och nätverksbandbredd för konstanta datauppdateringar.
Delegera uppgifter: Delegera serveruppgifter till klienter eller mellanhänder, till exempel sökindex och cacheminnen. Delegera uppgifter som att sortera data, filtrera data eller återge vyer. När du avlastar dessa uppgifter minskar du arbetsbelastningen på dina servrar och förbättrar prestandan.
Optimera nätverket. Om du vill optimera ett arbetsbelastningsnätverk för prestanda konfigurerar och finjusterar du nätverksinfrastrukturen. Se till att arbetsbelastningen kan fungera på högsta effektivitetsnivå.
Nätverksprotokoll: Uppgradera till moderna protokoll som HTTP/2, vilket gör att flera begäranden kan skickas via en enda anslutning. Moderna protokoll minskar kostnaden för att upprätta nya anslutningar.
Kompromiss: Moderna protokoll kan exkludera äldre klienter.
Nätverkschattighet: Batch-nätverksbegäranden tillsammans för att minska antalet begäranden. I stället för att göra flera små begäranden kombinerar du dem till större begäranden för att minska nätverkskostnaderna.
Databasfrågor: Se till att databasfrågor endast hämtar nödvändig information. Undvik att hämta stora mängder onödiga data, vilket kan leda till ökad nätverkstrafik och långsamma prestanda.
Statiska data: Använd ett nätverk för innehållsleverans för att cachelagrat statiskt innehåll som används ofta och som är nära användarna. När du cachelagrar data behöver de inte färdas över långa avstånd. Cachelagring förbättrar svarstiderna och minskar nätverkstrafiken.
Logginsamling: Samla in och behåll endast de loggdata som krävs för att stödja dina krav. Konfigurera regler för datainsamling och implementera designöverväganden för att optimera dina Log Analytics-kostnader.
Datakomprimering: Komprimera och paketa HTTP-innehåll och fildata för att möjliggöra snabb överföring mellan klienter och servrar. Komprimering krymper de data som en sida eller ett API returnerar och skickar tillbaka till webbläsaren eller klientappen. Komprimering optimerar nätverkstrafiken, vilket kan påskynda programkommunikationen.
Kompromiss: Komprimering lägger till bearbetning på serversidan och klientsidan. Programmet måste komprimera, skicka och dekomprimera data. Multicast-kommunikation, eller kommunikation till flera mottagare, kan skapa dekomprimeringskostnader. Du måste testa och mäta prestandavariationerna före och efter implementeringen av datakomprimering för att avgöra om det passar din arbetsbelastning. Mer information finns i Svarskomprimering i ASP.NET Core.
Azure-underlättande
Instrumenteringskod: Azure Monitor Application Insights stöder automatisk instrumentering (autoinstrumentation) och manuell instrumentering av programkod. Automatisk instrumentering möjliggör telemetriinsamling utan att röra programmets kod. Manuell instrumentering kräver kodändringar för att implementera Application Insights eller OpenTelemetry API. Du kan använda Application Insights Profiler för att optimera heta sökvägar.
Optimera kodlogik: Azure erbjuder SDK:er och bibliotek för olika programmeringsspråk för att interagera med Azure-tjänster. Använd SDK:er för att förenkla interaktioner mellan program och Azure-resurser. SDK:er ger optimal interaktion med Azure-tjänster, vilket minskar svarstiden och förbättrar effektiviteten.
Optimera minneshantering: Använd funktionen för smart identifiering i Application Insights för att analysera minnesförbrukningen och hjälpa till att identifiera och åtgärda minnesläckor.
Azure App Service har en funktion för insamling och analys av profilerare och minnesdumpar. Funktionen App Service autohealing kan automatiskt ta minnesdumpar och profilspårningar av .NET- och Java-appar.
Använda samtidighet och parallellitet: Olika Azure-tjänster ger unikt stöd för samtidighet, till exempel Azure Cosmos DB, Azure Functions och Blob Storage. För parallellitet stöder AKS tjänster distribution av containerbaserade program, vilket förbättrar parallell bearbetning.
Azure Batch är en molnbaserad jobbschemaläggningstjänst som du kan använda för att aktivera parallell och högpresterande databehandling utan att behöva konfigurera infrastrukturen. Mer information finns i Bakgrundsjobb.
Optimera infrastrukturens prestanda: Implementera Azure Resource Manager mallar för att definiera och distribuera infrastruktur med hjälp av kod. Använd dessa mallar för att implementera effektiva, repeterbara och konsekventa resursdistributioner. Azure Policy tillhandahåller styrningsfunktioner för att säkerställa att resursdistributioner följer organisationens metodtips och standarder.
För asynkron programmering använder du skalbara kötjänster, till exempel Azure Queue Storage och Azure Service Bus, för att underlätta asynkron programmering. Du kan köa uppgifter och bearbeta dem oberoende av varandra. För att stödja asynkrona åtgärder erbjuder Azure Marketplace köer och verktyg från tredje part som du kan integrera med Azure-tjänster.
Relaterade länkar
- AKS
- Smart identifieringsfunktion för Application Insights
- Asynkront Request-Reply mönster
- Undvik minnesallokeringar
- Azure Batch
- Azure Policy
- Azure Resource Manager-mallar
- Azure-SDK:er
- Bakgrundsjobb
- Skalning och prestandaöverväganden för bakgrundsjobb
- Komprimera fildata
- Komprimera HTTP-innehåll
- Definiera podd-processor- och minnesgränser
- Händelsebaserat asynkront mönster
- Virtuella Java-datorer (VM)
- Heap för stora objekt
- Poolfragmentering
- Mönster för köbaserad belastningsutjämning
- Komprimering av svar i ASP.NET Core
- Lagringsköer och Service Bus-köer
- Aktivitetsbaserat asynkront mönster
Checklista för prestandaeffektivitet
Se den fullständiga uppsättningen rekommendationer.