Aanbevelingen voor continue optimalisatie van prestaties

Is van toepassing op deze aanbeveling voor de controlelijst voor prestatie-efficiëntie van Azure Well-Architected Framework:

PE:12 Continu prestaties optimaliseren. Richt u op onderdelen die in de loop van de tijd slechtere prestaties vertonen, zoals databases en netwerkfuncties.

In deze handleiding worden de aanbevelingen voor continue optimalisatie van prestaties beschreven. Continue optimalisatie van prestaties is het proces van het voortdurend bewaken, analyseren en verbeteren van de prestatie-efficiëntie. De prestatie-efficiëntie wordt aangepast aan een toename en afname van de vraag. Prestatieoptimalisatie moet een doorlopende activiteit zijn gedurende de hele levensduur van de workload. Workloadprestaties nemen na verloop van tijd vaak af of worden overdreven, en factoren die u moet overwegen, zijn onder andere wijzigingen in gebruikspatronen, vraag, functies en technische schulden.

Definities

Termijn Definitie
Gegevenslagen Een opslagstrategie waarbij gegevens worden gecategoriseert op basis van de toegangsfrequentie en dienovereenkomstig worden opgeslagen in opslaglagen.
Technische schulden De samengevoegde inefficiënties, suboptimale ontwerpkeuzes of snelkoppelingen die opzettelijk tijdens het ontwikkelingsproces zijn gebruikt om code sneller te leveren.
Time-to-live Een mechanisme waarmee een verlooptijd voor gegevens wordt ingesteld.

Belangrijke ontwerpstrategieën

Prestatie-efficiëntie is wanneer de workloadcapaciteit wordt afgestemd op het werkelijke gebruik. Een workload die te veel presteert, is net zo problematisch als een workload die minder goed presteert. De compromissen verschillen. Overmaat van prestaties is van invloed op kostenoptimalisatie. Slechte prestaties zijn van invloed op gebruikers. De sleutel tot prestatie-efficiëntie is het bewaken, aanpassen en testen in de loop van de tijd. U moet regelmatig metrische prestatiegegevens controleren en zo nodig aanpassingen aanbrengen om ervoor te zorgen dat de workload efficiënt is. Het testen van alle wijzigingen vóór en na de implementatie is vereist om prestatiedoelen te bereiken.

Een prestatiecultuur ontwikkelen

Een prestatiecultuur is een omgeving waarin continue verbetering wordt verwacht en het team leert van productie. Prestatieoptimalisatie vereist gespecialiseerde vaardigheden. Workloadteams hebben de juiste vaardigheden en mindset nodig om hun prestaties te optimaliseren om te voldoen aan de toename en afname van de vraag. U moet ook hun tijd toewijzen om de vereiste bewaking en herstel van prestatieproblemen te ondersteunen wanneer deze zich voordoen. Deze teams hebben duidelijke verwachtingen nodig. Zo moeten prestatiedoelen, basislijnen en drempelwaarden voor afwijkingen (hoe ver van de basislijn acceptabel is) zeer zichtbaar en ge socialiseerd zijn.

Afweging: voor continue prestatieoptimalisaties is een team vereist dat over de juiste vaardigheden en tijd beschikt om prestatieproblemen op te sporen en op te lossen. Het toewijzen van personeel aan prestaties voegt operationele kosten toe. Als u beperkte personeelsresources hebt, kan continue optimalisatie van prestaties tijd in beslag nemen van andere operationele taken.

Nieuwe platformfuncties evalueren

Het evalueren van nieuwe platformfuncties omvat het onderzoeken van de nieuwe functies en hulpprogramma's van een platform die de prestatie-efficiëntie kunnen verbeteren, zoals geoptimaliseerde opslagoplossingen, cachingmechanismen of hulpprogramma's voor resourcebeheer. Nieuwe platformfuncties kunnen mogelijkheden bieden voor het verbeteren van de prestatie-efficiëntie. Houd uw platform en hulpprogramma's up-to-date om ervoor te zorgen dat u de nieuwste innovaties en best practices gebruikt. Bewaak consistent feedback en prestatiegegevens van deze nieuwe toevoegingen om uw aanpak te verfijnen.

Optimalisatie-inspanningen prioriteren

Het proactief optimaliseren van de prestaties betekent proactieve maatregelen nemen om de prestaties van de workload te verbeteren voordat zich prestatieproblemen voordoen. Het gebruik van proactieve maatregelen omvat het identificeren van mogelijke knelpunten, het bewaken van metrische prestatiegegevens en het implementeren van optimalisaties om ervoor te zorgen dat de workload efficiënt werkt en voldoet aan de gewenste prestatiedoelen. Op basis van de analyse van verslechterende onderdelen, kritieke stromen en technische schulden kunt u prestatieoptimalisaties implementeren die specifiek zijn voor elk gebied. Verbeteringen kunnen betrekking hebben op codewijzigingen, infrastructuuraanpassingen of configuratie-updates.

Verslechterende onderdelen prioriteren

Een workload bevat vaak onderdelen zoals databases en netwerkonderdelen die na verloop van tijd gevoelig zijn voor prestatievermindering. Naarmate de workload zich ontwikkelt en de gebruikspatronen veranderen, zijn deze wijzigingen vaak van invloed op de prestaties van afzonderlijke onderdelen in de workload. Meer gegevens in databases kunnen leiden tot langere uitvoeringstijden van query's en trager ophalen van gegevens. Wijzigingen in gebruikspatronen kunnen leiden tot suboptimaal queryontwerp. Query's die ooit efficiënt waren, kunnen inefficiënt worden naarmate de workload zich ontwikkelt. Inefficiënte query's kunnen overmatige resources verbruiken en de databaseprestaties verslechteren. Een verhoogd workloadgebruik kan leiden tot meer netwerkverkeer, waardoor problemen met opstoppingen en latentie ontstaan.

Het is belangrijk om continu inspanningen te leveren om de prestaties van deze onderdelen te optimaliseren. Identificeer en los prestatieproblemen in uw workload proactief op. Door prioriteit te geven aan bekende verslechterende onderdelen, kunt u potentiële prestatieproblemen proactief aanpakken en zorgen voor een soepele werking van uw workload. Het kan nodig zijn om technieken voor het afstemmen van prestaties te implementeren, resourcetoewijzing te optimaliseren of hardware- of softwareonderdelen te upgraden.

Prioriteit geven aan kritieke stromen

Kritieke stromen zijn de belangrijkste processen of werkstromen met hoge prioriteit in de workload. Door prioriteit te geven aan deze kritieke stromen, zorgt u ervoor dat de meest essentiële onderdelen van de workload zijn geoptimaliseerd voor prestaties. Weten welke stromen essentieel zijn, helpt bij het prioriteren van optimalisatie-inspanningen. Het optimaliseren van de prestatie-efficiëntie van de belangrijkste gebieden van uw toepassing biedt het hoogste rendement op investeringen. U moet kritieke stromen en de populairste pagina's bewaken. Zoek naar manieren om ze efficiënter te maken.

Optimalisatie van prestaties automatiseren

Automatisering kan terugkerende en tijdrovende handmatige processen elimineren, zodat ze efficiënt kunnen worden uitgevoerd. Automatisering vermindert de kans op menselijke fouten en zorgt voor consistentie bij het uitvoeren van optimalisatietaken. Door deze taken te automatiseren, kunt u ook mensen vrijmaken om zich te concentreren op complexere activiteiten en activiteiten die waarde toevoegen. U kunt automatisering toepassen op verschillende taken, zoals prestatietests, implementatie en bewaking:

  • Geautomatiseerde prestatietests: gebruik hulpprogramma's voor geautomatiseerde prestatietests, zoals JMeter, K6 of Selenium, om verschillende workloads en scenario's te simuleren.

  • Geautomatiseerde implementatie: implementeer geautomatiseerde implementatieprocessen om consistente en foutloze implementaties te garanderen. Gebruik CI/CD-hulpprogramma's om het implementatieproces te automatiseren. Deze hulpprogramma's kunnen u helpen bij het identificeren van prestatieknelpunten wanneer u deze gebruikt om te testen op eindpunten, HTTP-statussen te controleren en zelfs de kwaliteit en variaties van gegevens te valideren.

  • Bewaking en waarschuwingen: stel geautomatiseerde bewakings- en waarschuwingssystemen in om continu prestatiegegevens te bewaken en eventuele afwijkingen of afwijkingen te detecteren. Wanneer prestatieproblemen worden gedetecteerd, kunnen geautomatiseerde waarschuwingen worden geactiveerd om de juiste teams of personen op de hoogte te stellen.

  • Incidentbeheer: Implementeer een geautomatiseerd incidentbeheersysteem dat waarschuwingen kan ontvangen, tickets kan maken en tickets kan toewijzen aan de juiste teams voor oplossing. Deze stappen helpen ervoor te zorgen dat prestatieproblemen onmiddellijk worden opgelost en toegewezen aan de juiste resources.

  • Geautomatiseerde diagnostische gegevens: ontwikkel geautomatiseerde diagnostische hulpprogramma's of scripts waarmee prestatiegegevens kunnen worden geanalyseerd en de hoofdoorzaken van prestatieproblemen kunnen worden geïdentificeerd. Deze hulpprogramma's kunnen helpen bij het vaststellen van specifieke gebieden of onderdelen van het systeem die prestatieproblemen veroorzaken.

  • Geautomatiseerde herstelacties: definieer en implementeer geautomatiseerde herstelacties die kunnen worden geactiveerd wanneer specifieke prestatieproblemen worden gedetecteerd. Deze acties kunnen bestaan uit het opnieuw starten van services, het aanpassen van resourcetoewijzing, het wissen van caches of het implementeren van andere technieken voor prestatieoptimalisatie.

  • Zelfherstelsystemen: U kunt zelfherstelmogelijkheden in uw systeem inbouwen door het herstelproces te automatiseren voor bekende prestatieproblemen. Deze mogelijkheid kan bestaan uit het automatisch herstellen of aanpassen van de systeemconfiguratie om optimale prestaties te herstellen.

Technische schulden aanpakken

Technische schuld verwijst naar de geaccumuleerde inefficiënties, suboptimale ontwerpkeuzen of snelkoppelingen die tijdens het ontwikkelingsproces worden genomen die van invloed kunnen zijn op de prestaties. Technische schulden, onduidelijke code en te complexe implementaties kunnen de prestatie-efficiëntie moeilijker maken. Het aanpakken van technische schulden omvat het identificeren en oplossen van deze problemen om de algehele prestaties en onderhoudbaarheid van de workload te verbeteren. Dit kan bestaan uit het herstructureren van code, het optimaliseren van databasequery's, het verbeteren van het architectuurontwerp of het implementeren van best practices. Misschien hebt u technische schulden geïntroduceerd om een deadline te halen, maar moet u de technische schuld aanpakken naarmate u de prestatie-efficiëntie in de loop van de tijd optimaliseert.

Databases optimaliseren

Het continu optimaliseren van databases omvat het identificeren en implementeren van optimalisaties om ervoor te zorgen dat databases belasting kunnen verwerken, snelle reactietijden kunnen leveren en het resourcegebruik kunnen minimaliseren. Door databases regelmatig te optimaliseren, kunt u de prestaties van toepassingen verbeteren, downtime verminderen en de algehele gebruikerservaring verbeteren.

  • Databasequery's optimaliseren: slecht geschreven SQL-instructies kunnen de prestaties van de database verminderen. Inefficiënte JOIN-omstandigheden kunnen onnodige gegevensverwerking veroorzaken. Complexe subquery's, geneste query's en overmatige functies kunnen de actieve snelheid verminderen. Query's die te veel gegevens ophalen, moeten opnieuw worden geschreven. U moet uw meest voorkomende of kritieke databasequery's identificeren en deze optimaliseren. De optimalisatie zorgt voor snellere query's.

  • Indexen onderhouden: evalueer uw indexeringsstrategie om ervoor te zorgen dat indexen correct zijn ontworpen en onderhouden. Indexonderhoud omvat het identificeren van ongebruikte of redundante indexen en het maken van indexen die zijn afgestemd op de querypatronen. Database-indexen helpen het ophalen van gegevens te versnellen. Voor relationele databases moet u indexfragmentatie bewaken. U moet indexen regelmatig opnieuw opbouwen of ordenen. Voor niet-relationele databases moet u het juiste indexeringsbeleid voor uw workload kiezen. Gebruik automatisch afstemmen voor databases, indien beschikbaar. Deze functies omvatten het automatisch maken van ontbrekende indexen, het verwijderen van ongebruikte indexen en het corrigeren van plannen. Zie Indexen onderhouden om de prestaties te verbeteren voor meer informatie.

  • Modelontwerp controleren: controleer het gegevensmodel om ervoor te zorgen dat u het optimaliseert voor de specifieke vereisten van de toepassing. Het verbeteren van queryprestaties en het ophalen van gegevens kan betrekking hebben op denormalisatie, partitionering of andere technieken.

  • Databaseconfiguratie optimaliseren: optimaliseer de instellingen voor databaseconfiguratie, zoals geheugentoewijzing, schijf-I/O en gelijktijdigheidsinstellingen om de prestaties en het resourcegebruik te maximaliseren.

Gegevensefficiëntie optimaliseren

Het optimaliseren van de efficiëntie van gegevens is het proces om ervoor te zorgen dat gegevens op de meest efficiënte manier worden opgeslagen, verwerkt en geopend. Gegevenslagen en het gebruik van TTL (time-to-live) zijn technieken die kunnen worden gebruikt om de gegevensefficiëntie te optimaliseren. U kunt deze technieken toepassen in verschillende scenario's voor gegevensopslag, zoals databases, bestandssystemen of objectopslag.

  • Gegevenslagen gebruiken: bij het indelen van gegevenslagen moet u gegevens categoriseren op basis van het belang of de frequentie van toegang en gegevens dienovereenkomstig opslaan in verschillende lagen. Het instellen van gegevenslagen zorgt voor een efficiënter gebruik van opslagresources en verbetert de prestaties. Veelgebruikte of kritieke gegevens kunnen worden opgeslagen in hoogwaardige lagen, terwijl minder vaak geopende of minder kritieke gegevens kunnen worden opgeslagen in lagere kostenlagen. Het doel is om het gegevensgebruik in de loop van de tijd te controleren om ervoor te zorgen dat gegevens zich in de juiste laag bevinden. Naarmate de gegevensprioriteiten veranderen, moeten gegevens van de ene laag naar de andere worden verplaatst.

  • Time-to-live implementeren: Time-to-Live is een mechanisme waarmee een verlooptijd voor gegevens wordt ingesteld. Met Time-to-Live kunnen gegevens na een bepaalde periode automatisch worden verwijderd of gearchiveerd, waardoor de opslagvereisten worden verminderd en het gegevensbeheer wordt verbeterd. Door een geschikte time-to-live in te stellen, staat u toe dat onnodige gegevens worden verwijderd, waardoor opslagruimte wordt vrijgemaakt en de algehele efficiëntie wordt verbeterd. Sessiegegevens, tijdelijke bestanden en cachegegevens zijn veelgebruikte doelen voor de time-to-live. Databasevermeldingen kunnen ook een time-to-live hebben.

Risico: een te korte time-to-live kan prestatieproblemen veroorzaken.

Azure-facilitering

Optimalisatie van prestaties automatiseren: Azure Advisor biedt automatische prestatieaanbeveling op basis van workloadtelemetrie. U dient deze aanbevelingen regelmatig te bekijken en te bespreken. Azure Monitor biedt realtime inzicht in de prestaties van uw systeem en stelt u in staat waarschuwingen in te stellen op basis van specifieke prestatiegegevens. Azure Log Analytics biedt geautomatiseerde diagnostische gegevens en analyses van verzamelde logboeken en metrische gegevens. Hulpprogramma's zoals Azure-toepassing Insights bieden inzichten en aanbevelingen voor het optimaliseren van de prestaties.

Als u herstel wilt automatiseren, gebruikt u automatiseringsprogramma's of scripts om herstelacties automatisch uit te voeren wanneer de waarschuwingen worden geactiveerd. U kunt Azure Automation, Azure Functions of aangepaste automatiseringsoplossingen gebruiken.

Met Azure kunt u prestatietests uitvoeren om verschillende gebruikersscenario's en workloads te simuleren. Geautomatiseerd testen kan u helpen om prestatieknelpunten te identificeren en uw systeem dienovereenkomstig te optimaliseren. Hulpprogramma's zoals Azure DevOps kunnen prestatietests automatiseren.

Databases optimaliseren: de SQL-productfamilie bevat veel ingebouwde functies waarmee u de prestaties van SQL-databases kunt bewaken en herstellen. U moet deze functies gebruiken om de databaseprestaties te behouden. Azure SQL Database heeft een functie voor automatisch afstemmen waarmee query's continu worden bewaakt en verbeterd. U moet deze functie gebruiken om SQL-query's automatisch te verbeteren.

U kunt uw indexeringsbeleid aanpassen met behulp van de functies van Azure Cosmos DB. Pas het beleid aan om te voldoen aan de prestatiebehoeften van uw workload.

Gegevensefficiëntie optimaliseren: met gegevenslagen kunt u gegevens in verschillende lagen opslaan op basis van de toegangsfrequentie en het belang ervan. Het helpt bij het optimaliseren van opslagkosten en -prestaties. Azure biedt verschillende opslaglagen, zoals dynamische, statische en archieflagen voor blobgegevens. Dynamische lagen zijn geoptimaliseerd voor gegevens die vaak worden gebruikt, statische lagen zijn voor gegevens die zelden worden gebruikt en archieflagen zijn voor gegevens die zelden worden gebruikt. Door de opslagtoegangslaag te gebruiken die het meest geschikt is voor uw gegevens, kunt u ervoor zorgen dat gegevens efficiënt worden opgeslagen en opgehaald.

Controlelijst voor efficiëntie van prestaties

Raadpleeg de volledige set aanbevelingen.