Prestandaeffektivitet

Slutförd

Anta att en nyhetsartikel publiceras om ett av organisationens senaste produktmeddelanden. Den extra publiciteten från nyhetsartikeln ger en stor tillströmning av trafik till din webbplats. Kan din webbplats hantera den här trafikökningen? Kan din webbplats ta på sig den extra belastningen utan att bli långsam eller svarar inte?

I den här lektionen tittar vi på några av de grundläggande principerna för att säkerställa enastående programprestanda. Särskilt skalnings- och optimeringsprinciperna som utgör grundpelare för prestandaeffektivitet.

Vad är prestandaeffektivitet?

Prestandaeffektiviteten matchar ett programs tillgängliga resurser med den efterfrågan som det tar emot. I prestandaeffektivitet ingår skalningsresurser, identifiering och optimering av eventuella flaskhalsar samt optimering av programkoden för topprestanda.

Låt oss ta en titt på några mönster och metodtips som kan utnyttjas för att förbättra skalbarheten och prestanda i ditt program.

Skala upp och skala ut

Beräkningsresurserna kan skalas i två riktningar:

  • När man skalar upp lägger man till fler resurser till en enda instans. Kallas även vertikal skalning.

    An illustration that shows scaling up by adding resources to a virtual machine.

  • När man skalar ut lägger man till fler instanser. Kallas även horisontell skalning.

    An illustration that shows scaling out by adding instances to increase performance.

Att skala upp handlar om att lägga till fler resurser, till exempel CPU eller minne, till en enda instans. Instansen kan vara en virtuell dator eller en PaaS-tjänst.

När mer kapacitet läggs till instansen ökas de resurser som finns tillgängliga för programmet, men det finns en begränsning. Virtuella datorer är begränsade till kapaciteten hos den värd som de kör och själva värdarna har fysiska begränsningar. När du skalar upp en instans kan du stöta på dessa begränsningar. De begränsar din möjlighet att lägga till fler resurser i instansen.

Utskalning handlar om att lägga till fler instanser i en tjänst. De kan vara virtuella datorer eller PaaS-tjänster. I stället för att lägga till mer kapacitet genom att göra en instans kraftfullare lägger vi till kapacitet genom att öka det totala antalet instanser.

Fördelen med att skala ut är att det är möjligt för dig att skala ut i all oändlighet så länge som du har fler maskiner att lägga till arkitekturen. När man skalar ut krävs det någon form av belastningsutjämning. Till exempel en lastbalanserare som distribuerar begäranden över tillgängliga servrar eller en mekanism för tjänstidentifiering för att identifiera aktiva servrar som begäranden ska skickas till.

I båda typerna av skalning kan resurser minskas, vilket gör att kostnadsoptimering kommer in i bilden.

Automatisk skalning är processen för att dynamiskt tilldela resurser för att matcha prestandakrav. När mängden arbete växer kan ett program behöva ytterligare resurser för att underhålla de önskade prestandanivåerna och uppfylla servicenivåavtal (SLA). Eftersom efterfrågan minskar och de tillagda resurserna inte längre behövs kan de frigöras för att minimera kostnaderna.

Automatisk skalning använder elasticiteten hos molndrivna miljöer och kräver lägre arbetsinsats för hantering. Det minskar behovet av att en operatör regelbundet övervakar systemets prestanda och tar beslut om att lägga till eller ta bort resurser.

Optimera nätverksprestanda

När du optimerar för prestanda tittar du på nätverks- och lagringsprestanda för att säkerställa att deras nivåer ligger inom acceptabla gränser. Dessa prestandanivåer kan påverka ditt programs svarstid. Genom att välja rätt nätverks- och lagringstekniker för din arkitektur kan du se till att du får den bästa upplevelsen för dina konsumenter.

Att lägga till ett meddelandelager mellan tjänsterna kan ha en gynnsam inverkan på prestanda och skalbarhet. Ett meddelandelager skapar en buffert så att begäranden kan fortsätta flöda in utan fel även om det mottagande programmet inte hänger med. När programmet fungerar genom begäranden besvaras de i den ordning de togs emot.

Optimera lagringsprestanda

I många storskaliga lösningar delas data in i partitioner som kan hanteras och kommas åt separat. Det är viktigt att välja partitioneringsstrategi noga för att maximera fördelarna och minimera de negativa effekterna. Partitionering kan förbättra skalbarheten, minska konkurrensen och ge bästa möjliga prestanda.

Du kan förbättra prestanda genom att använda cachelagring i arkitekturen. Cachelagring är en metod som används för att lagra data eller tillgångar (webbsidor, bilder) som används ofta för snabbare åtkomst. Cachelagring kan användas i olika lager i ditt program. Du kan använda cachelagring mellan programservrarna och en databas för att minska tiderna för datahämtning.

Du kan också använda cachelagring mellan dina användare och dina webbservrar genom att placera statiskt innehåll närmare användarna. Den här typen av cachelagring minskar den tid det tar att returnera webbsidor till användarna. Det har också en sekundär effekt av avlastning av begäranden från din databas eller webbservrar, vilket ökar prestandan för andra begäranden.

Identifiera flaskhalsar i appars prestanda

Distribuerade program och tjänster som körs i molnet är komplexa delar av programvara som utgör många rörliga delar. I en produktionsmiljö är det viktigt att kunna spåra hur användarna använder systemet. Det är också viktigt att spåra resursutnyttjande och i allmänhet övervaka systemets hälsa och prestanda. Du kan använda den här informationen som ett diagnostiskt stöd för att identifiera och åtgärda problem. Du kan också använda den här informationen för att få hjälp att upptäcka potentiella problem och förhindra att de inträffar.

Prestandaoptimering omfattar att förstå hur själva programmen presterar. Fel, dålig kod och flaskhalsar i beroende system kan alla upptäckas via ett programprestandahanteringsverktyg. Dessa problem kan ofta vara dolda eller dolda för användare, utvecklare och administratörer, men de kan ha en negativ effekt på programmets övergripande prestanda.

Se över alla lager i programmet och identifiera och åtgärda flaskhalsar för prestanda. De här flaskhalsarna kan till exempel vara dålig minneshantering i programmet eller till och med processen för att lägga till index i databasen. Det kan vara en iterativ process då du åtgärdar en flaskhals och sedan upptäcker en annan som du inte vetat om.

Med en grundlig metod för prestandaövervakning kan du fastställa vilka typer av mönster och metoder som arkitekturen kan dra nytta av.

Testa dina kunskaper

1.

Vilket av följande är ett exempel på uppskalning (vertikal skalning)?

2.

Vilket av följande är ett exempel på utskalning (horisontell skalning)?