Architectuurstrategieën voor het bewaken van workloadprestaties

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

PE:04 Stel consistente prestatiemeting in zodat gedrag in de loop van de tijd kan worden geanalyseerd, vergeleken met basislijnen en wordt gebruikt om degradatie, inefficiëntie en schalen van hiaten te detecteren.

Zonder prestatiegegevens gaan onderliggende problemen en optimalisatiemogelijkheden onopgemerkt, wat leidt tot verminderde gebruikerservaring.

In dit artikel worden ontwerpstrategieën beschreven voor het implementeren van prestatiemetingen met meerdere lagen die latentie, doorvoer en resourcegedrag vastleggen om basislijnen vast te stellen en prestatievermindering in de workload te identificeren.

De belangrijkste strategieën in dit artikel zijn gebaseerd op de fundamentele operationele praktijk van waarneembaarheid, beschreven in OE:07 Architectuurstrategieën voor het ontwerpen van een bewakingssysteem. Richtlijnen voor het implementeren van de bewakingspraktijk zijn beschikbaar in de ontwerphandleiding voor bewaking. We raden u aan deze middelen eerst te bekijken. Aanbevelingen in deze handleiding zijn gericht op prestaties. Zie RE:10 Architecture-strategieën voor het ontwerpen van een betrouwbare bewakings- en waarschuwingsstrategie voor informatie over betrouwbaarheid.

Definities

Termijn Definitie
Activiteitenlogboeken Hiermee worden beheerbewerkingen op resources bijgehouden, zoals het verwijderen van een resource.
Toepassingslogboeken Logboeken waarin informatie wordt bijgehouden over toepassingsgebeurtenissen, fouten en andere activiteiten, zoals aanmeldingen en mislukte databaseverbindingen.
APM-hulpprogramma (Application Performance Monitoring) Een hulpprogramma waarmee de prestaties van een toepassing worden bewaakt en gerapporteerd.
Baselines Verwachte metrische gegevens over systeemprestaties die worden gebruikt als referentiepunt om drift, regressies en verbeteringen in de loop van de tijd te detecteren.
Code-instrumentatie De directe of indirecte opname van metrische prestatiegegevens vanuit het perspectief van de toepassingscode. Vastgelegde metrische gegevens omvatten metrische stroomgegevens, resourcegebruik en metrische gegevens die specifiek zijn voor de taal of runtime.
Gedistribueerde tracering Het verzamelen en correleren van metrische gegevens over gedistribueerde workloadonderdelen om inzicht te hebben in end-to-end transactiestromen.
Wachttijd De tijdsvertraging tussen het initiëren van een aanvraag en het ontvangen van een reactie, het meten van de reactiesnelheid van het systeem.
Metrics Numerieke metingen waarmee prestatiegedrag van workloads in de loop van de tijd wordt vastgelegd, meestal geaggregeerd voor analyse.
Percentielen (p50, p95, p99) Statistische metingen met de verdeling van de prestaties; p50 vertegenwoordigt typische prestaties, p95 toont de meeste gebruikerservaring onder belasting, p99 legt slechtste prestaties vast.
Metrische platformgegevens Numerieke waarden waarmee de prestaties van de werkbelasting op een bepaald moment worden vastgelegd.

Op percentiel gebaseerde metrische gegevens gebruiken

Meet metrische prestatiegegevens, zoals latentie, reactietijd of laadtijden, met percentielen (p50, p95, p99), niet gemiddelden. Gemiddelden kunnen misleidend zijn. Als de meeste aanvragen snel zijn, maar een paar zeer traag zijn, wordt de slechte ervaring verborgen.

Percentielen tonen het staartgedrag aan, wat belangrijk is om inzicht te krijgen in de gebruikerservaring. p50 vertegenwoordigt typische prestaties, p95 laat zien wat de meeste gebruikers ervaren onder belasting en p99 legt de slechtste prestaties of de uitbijters vast.

Verzamel prestatiegegevens met behulp van uw bewakingshulpprogramma's en vertegenwoordig ze als percentielen gedurende gedefinieerde tijdvensters. Gebruik deze als basislijn voor bewaking, waarschuwingen en prestatieanalyse.

De grenzen voor prestatieverbetering definiëren

Definieer duidelijke prestatiegrenzen, zodat u precies weet wat er in uw metingen is opgenomen. De latentie in het systeem opsplitsen in plaats van het te behandelen als één getal. Ken merk tijd toe voor elke laag, zoals edge-services, gateways, berekeningen en afhankelijkheden, om te zien waar vertragingen daadwerkelijk optreden.

Scheid wat u beheert van wat u niet beheert: uw code, services, infrastructuur en directe afhankelijkheden versus externe factoren, zoals voorwaarden aan de clientzijde, DNS-resolutie, internetproviderlatentie of apparaatbeperkingen. Dit onderscheid voorkomt onjuiste distributie en houdt optimalisatie gericht op gebieden waar u wijzigingen kunt aanbrengen, terwijl de volledige end-to-end gebruikerservaring nog steeds wordt weergegeven.

Evalueer wanneer en waar prestatieproblemen van invloed zijn op de gebruikerservaring. Compenseer die degradatie door middel van ontwerp of verminder deze door middel van verbeteringen in de beheersbare onderdelen van het systeem.

Segmentsignalen per omgeving en doel

Segmenteer prestatiegegevens zodat elk signaal een duidelijke context weerspiegelt. Gescheiden door omgeving en doel om mengsignalen te voorkomen die zich anders gedragen of verschillende beslissingen dienen.

Productie- en niet-productiegegevens gescheiden houden. Productiegegevens weerspiegelen de impact van echte gebruikers en moeten bewaking en waarschuwingen stimuleren. Niet-productie data is nuttig voor testen en afstemmen, maar het combineren met productie vervormt de resultaten en verbergt echte problemen.

Scheid metrische prestatiegegevens van zakelijke metrische gegevens. Metrische prestatiegegevens houden systeemgedrag en workloadstatus bij, terwijl metrische gegevens van het bedrijf resultaten bijhouden. Zelfs wanneer ze elkaar overlappen, houdt u ze in afzonderlijke streams, zodat ze onafhankelijk kunnen worden geanalyseerd en gebruikt.

Prestatiewaarschuwingen creëren die gericht en uitvoerbaar zijn

Het doel van waarschuwingen is vroege detectie van prestatievermindering voordat deze zichtbaar of bedrijfsimpact wordt. Bouw waarschuwingen op twee niveaus: end-to-end-gebruikerservaring en interne kerntransacties die kritieke systeempaden onder belasting vertegenwoordigen.

Gebruik één, consistente gegevensset binnen elke omgeving voor zowel doelen als waarschuwingen. Als waarschuwingen zijn gebaseerd op verschillende gegevens dan uw prestatiedoelen, worden ze onbetrouwbaar en moeilijk te vertrouwen.

Waarschuwingen maken die kunnen worden uitgevoerd en duidelijk zijn gekoppeld aan prestatieresultaten. Elke waarschuwing moet aangeven welke drempelwaarde een aanhoudende inbreuk heeft gehad, de mogelijke impact en de betrokken onderdelen, zodat duidelijk is waar moet worden onderzocht en wat er wordt beïnvloed. Begin met standaard, bekende drempelwaarden en verfijn ze in de loop van de tijd op basis van waargenomen systeemgedrag en workloadkenmerken.

Wanneer directe waarschuwingen voor een externe afhankelijkheid niet mogelijk zijn, gebruikt u indirecte signalen, zoals duur van afhankelijkheidsaanroepen, foutpercentages of time-outgedrag om de impact ervan op systeemprestaties bij benadering te bepalen.

Elasticiteit bewaken

Meet hoe uw systeem reageert op wijzigingen in de vraag en schaal van gebeurtenissen.

Houd koude start- en initialisatielatentie bij om te begrijpen hoe opstartoverhead de reactiesnelheid beïnvloedt, met name tijdens uitschalende gebeurtenissen. Bewaak het gedrag van uitschalen en inschalen om te evalueren hoe snel het systeem zich aanpast aan wijzigingen in de belasting en of schaalacties de vraag in de gaten houden.

Prestaties na verloop van tijd bijhouden

Houd bij hoe de prestaties zich ontwikkelen met wijzigingen in uw ontwerp en externe factoren.

Stel basislijnen vast die de verwachte systeemprestaties vertegenwoordigen en vergelijk vervolgens het huidige gedrag met deze basislijnen om drift te detecteren, inclusief regressies en verbeteringen.

Koppel prestatiewijzigingen aan operationele gebeurtenissen, zoals implementaties, configuratie-updates en schaalacties. Aantekeningen toevoegen aan tijdlijnen met deze gebeurtenissen, zodat verschuivingen in gedrag duidelijke context hebben en kunnen worden teruggetraceerd naar waarschijnlijke oorzaken.

Gebruik deze doorlopende zichtbaarheid als feedbacklus voor technische beslissingen. Voer prestatie-inzichten in de planning en prioriteitstelling in en behandel ze als invoer voor normaal werk in plaats van alleen incidentrespons.

Continu prestatiedoelstellingen verfijnen naarmate het systeem zich ontwikkelt. Pas SLO's, drempelwaarden en verwachtingen aan op basis van waargenomen gedrag en gebruikspatronen, zodat doelen realistisch en afgestemd blijven op de werkelijke gebruikerservaring.

Prestatiegegevens van toepassingen verzamelen

U moet beschikken over de prestatiegegevens van de toepassing, zoals doorvoer, latentie en voltooiingstijden, voornamelijk verzameld via instrumenteringscode.

Kritieke uitvoeringspaden instrumenteren waarbij de prestaties het meest zichtbaar zijn: belangrijke aanvraagstromen, resource-intensieve bewerkingen en punten waar externe afhankelijkheden of herhalingspogingen plaatsvinden. Zorg ervoor dat de zichtbaarheid van end-to-end transacties zo is dat de totale uitvoeringstijd en de bijdragende stappen kunnen worden gemeten.

Leg drie kerntypen prestatiesignalen vast:

  • Metrische gegevens voor geaggregeerd prestatiegedrag (latentiedistributies, doorvoer, foutpercentages)
  • Traceringen voor inzicht in hoe tijd wordt verdeeld over aanvraagpaden en systeemonderdelen
  • Logboeken voor gedetailleerde uitvoeringscontext bij specifieke stappen of gebeurtenissen

Gebruik consistente metagegevens voor deze signalen, zodat prestatiegegevens kunnen worden gecorreleerd over lagen van het systeem en in verschillende services.

Vermijd het dupliceren van prestatiesignalen op lager niveau die al door het platform worden weergegeven, tenzij er extra granulariteit nodig is om workloadspecifiek gedrag of knelpunten uit te leggen.

Gegevens over resourceprestaties verzamelen

Verzamel prestatiegegevens op resourceniveau om te begrijpen hoe infrastructuuronderdelen zich gedragen onder belasting en hoe ze bijdragen aan de algehele workloadprestaties.

Elke service toont platformspecifieke metrische gegevens die de status en prestatiekenmerken weerspiegelen. Gebruik diagnostische instellingen om deze gegevens te exporteren, zodat deze kunnen worden geraadpleegd voor waarschuwingen, dashboards en analyse op langere termijn, voorbij de kortdurende gegevensopslag van het platform.

Verzamel metrische gegevens en logboeken voor alle resources. Houd het reken- en opslaggebruik bij op basis van verwachte bereiken om te bevestigen dat onderinrichting geen latentie introduceert en de prestaties onder belasting verslechtert. Overprovisioning kan ook worden gedetecteerd met deze gegevens door naar het P99-gebruik te kijken en dit te vergelijken met de overblijvende capaciteit van uw resources.

Netwerkverkeer bewaken als onderdeel van de resourceprestaties. Analyseer de verkeersstroom tussen subnetten en servicegrenzen om inzicht te hebben in latentie-, congestie- en gegevensoverdrachtpatronen die van invloed kunnen zijn op de prestaties van de werkbelasting.

Database- en opslaggegevens verzamelen

Database- en opslagsystemen produceren gespecialiseerde prestatiesignalen voor het identificeren van knelpunten, het valideren van capaciteit en het begrijpen van het gedrag van workloads. Deze signalen zijn doorgaans afkomstig van ingebouwde bewakingshulpprogramma's en door het systeem gegenereerde logboeken.

Focus op belangrijke prestatiedimensies:

Oppervlak Wat te meten Wat het u vertelt
doorvoersnelheid Lees-/schrijfvolume in de loop van de tijd Capaciteit voor gegevensoverdracht
Wachttijd Tijd per opslagbewerking Reactiesnelheid van opslag
IOPS Lees-/schrijfbewerkingen per seconde Mogelijkheid voor transactieafhandeling
Capaciteitsgebruik Gebruikte versus beschikbare opslag Behoeften voor schalen en capaciteitsplanning

Voor databases kunt u bewaking uitbreiden naar workloadspecifiek gedrag:

Oppervlak Wat te meten Wat het u vertelt
Prestaties van zoekopdracht Uitvoeringstijd, frequentie, resourcegebruik Efficiëntie van patronen voor gegevenstoegang
Transactieprestaties Duur, gelijktijdigheid, conflicten vergrendelen Conflicten en transactionele efficiëntie
Indexprestaties Fragmentatie, gebruik, optimalisatieimpact Effectiviteit van queryversnellingsstructuren
Resourcegebruik CPU, geheugen, schijf, netwerk Beperkingen op systeemniveau
Metrische gegevens over verbinding Actieve, mislukte, afgebroken verbindingen Stabiliteit en verbindingsdruk
Transactiesnelheid Transacties per seconde Workloadintensiteit en wijzigingen in de loop van de tijd
Foutpercentages Databasefouten en storingen Betrouwbaarheids- en prestatiedegradatiesignalen

Gebruik deze signalen samen om onderscheid te maken tussen trage query's, resourcesaturatie en structurele inefficiënties. Dit maakt gerichte optimalisatie mogelijk voor zowel opslagsystemen als databaseworkloads.

Prestatiegegevens van het besturingssysteem verzamelen

Verzamel voor workloads op infrastructuurniveau metrische gegevens op besturingssysteemniveau om te begrijpen hoe rekenresources worden gebruikt en waar resourcebeperkingen kunnen optreden.

Voorbeeld van prestatiemeteritems van het besturingssysteem met regelmatige tussenpozen om het gedrag op basis van tijd vast te leggen van het systeem dat wordt belast.

Oppervlak Wat te meten Wat het aangeeft
CPU CPU-gebruik (gebruiker/bevoegd), LENGTE VAN CPU-wachtrij Rekenverzadiging en planningsdruk
Processes Aantal threads, aantal handles Procesbelasting op toepassings- en besturingssysteemniveau
Memory Vastgelegd geheugen, beschikbaar geheugen, paginering snelheid, swap gebruik Geheugendruk en wisselactiviteit
schijf Lees-/schrijfsnelheid, doorvoer, schijfgebruik I/O-prestaties en knelpunten voor opslag
Network Interfacedoorvoer, RX/TX-fouten Problemen met netwerkcapaciteit en overdracht

Gebruik deze signalen om resourceverzadiging op besturingssysteemniveau te identificeren en onderscheid te maken tussen inefficiënties en infrastructuurbeperkingen op toepassingsniveau.

Synthetische gegevens genereren, indien nodig

Als uw systeem niet consistent wordt gebruikt, is het moeilijk om te zien of het goed presteert wanneer verkeer terugkeert.

Gebruik hiervoor synthetische transacties, waarmee geautomatiseerde aanvragen via uw systeem worden verzonden. Deze simuleren echt gebruik zonder dat dit van invloed is op de werkelijke gebruikers of gegevens. Dit helpt bij het actief houden van delen van uw systeem, het genereren van consistente metrische prestatiegegevens en het onthullen van patronen (zoals problemen met een bepaalde tijd) die onregelmatig gebruik kan verbergen.

Azure-ondersteuning

Azure Monitor biedt een geïntegreerd platform voor het verzamelen, analyseren en reageren op prestatiegegevens in uw hele workload. Hiermee worden gegevens uit toepassingen, infrastructuur en externe bronnen samengevoegd tot een gemeenschappelijk gegevensplatform.

Gegevensverzameling en -opslag: Gebruik Log Analytics-werkruimten om uw prestatiegegevens te centraliseren met configureerbaar bewaarbeleid. Maak meerdere werkruimten om gegevens te segmenteren op basis van omgevings- of nalevingsvereisten.

Toepassingsbewaking: Application Insights verzamelt telemetrie op toepassingsniveau, waaronder aanvraagsnelheden, reactietijden en uitzonderingen. Schakel gedistribueerde tracering in om de prestaties van gedistribueerde onderdelen te correleren.

Infrastructuurbewaking: schakel diagnostische instellingen in voor alle Azure-services om platformlogboeken en metrische gegevens te verzamelen. Gebruik de Azure Diagnostics-extensie voor gedetailleerde vm-prestatiegegevens. Verken telemetrieopties voor uw specifieke platform. Kubernetes-clusters verzenden bijvoorbeeld uitgebreide telemetriegegevens over prestaties via Prometheus-integraties .

Database en opslag: Azure Monitor biedt ingebouwde bewaking voor Azure SQL Database-, MySQL-, PostgreSQL- en opslagservices. Azure Storage Analytics houdt belangrijke prestatie-indicatoren bij, zoals doorvoer en latentie in Blob, Table en Queue Storage.

Waarschuwingen en analyses: maak waarschuwingsregels met aanpasbare drempelwaarden, tijdvensters en acties (e-mail, webhooks, Azure Functions). Gebruik Azure Monitor-logboeken om query's uit te voeren en prestatiegegevens te correleren. Zie Prijzen van Azure Monitor voor meer informatie over prijzen.

Examples

Controlelijst voor prestatie-efficiëntie

Raadpleeg de volledige reeks aanbevelingen.