View a markdown version of this page

Instance-specific monitoraggio delle prestazioni e delle risorse - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Instance-specific monitoraggio delle prestazioni e delle risorse

Il monitoraggio a livello di istanza è fondamentale per comprendere la distorsione della connessione, la distorsione del carico di lavoro e la distorsione dei dati, nonché per capire quando aggiungere router o split shard per aumentare la scalabilità e ottenere un throughput più elevato con una latenza mantenuta.

Panoramica di

Quando l'applicazione invia una query su Amazon Aurora PostgreSQL Limitless Database, tale richiesta attraversa un sofisticato sistema distribuito prima di restituire i risultati. Un apparentemente semplice SELECT un'istruzione potrebbe riguardare più istanze di database, ognuna delle quali svolge un ruolo distinto nell'elaborazione della richiesta. La comprensione di questo percorso e delle istanze che lo alimentano trasforma il modo in cui si progettano applicazioni, interpretano i dati di monitoraggio e diagnosticano i problemi di prestazioni.

Questa guida fornisce informazioni tecniche approfondite sull'architettura delle istanze di Aurora PostgreSQL Limitless Database:

  • Aggiornamento, router e shard di Limitless Architecture

  • Quando e come scalare ogni tipo di istanza per soddisfare i requisiti di prestazioni e capacità

  • Come monitorare, risolvere i problemi e ottimizzare le prestazioni a livello di istanza

  • Le migliori pratiche per la progettazione di applicazioni che sfruttano efficacemente l'architettura distribuita

Nozioni fondamentali sull'architettura delle istanze

Aurora PostgreSQL Limitless Database raggiunge la scalabilità orizzontale attraverso la separazione funzionale tra due tipi di istanze specializzati:

  • Istanze del router forniscono il livello di orchestrazione: accettano connessioni client, analizzano le query, coordinano le operazioni distribuite e aggregano i risultati. I router sono stateless, ossia non memorizzano dati e possono essere aggiunti o rimossi senza migrazione dei dati.

  • Istanze condivise forniscono il livello di dati e di elaborazione: archiviano i dati delle tabelle, eseguono query sui dati locali e gestiscono le transazioni. Gli shard sono statici, ognuno dei quali possiede un sottoinsieme specifico dei dati determinato da un hashing coerente.

Questa separazione consente ad Aurora PostgreSQL Limitless Database di scalare la gestione delle connessioni, il coordinamento delle query e l'archiviazione dei dati in modo indipendente in base alle caratteristiche del carico di lavoro.

Confronto tra router e shard

Caratteristica Istanze del router Istanze condivise
Ruolo principale Coordinamento e distribuzione delle domande Archiviazione dei dati ed esecuzione delle interrogazioni
Stato Stateless (nessuna memorizzazione dei dati) Steful (possiede i dati)
Scalabilità Add/remove istantaneamente Richiede il ribilanciamento dei dati
Focalizzazione sulle risorse CPU per la coordinazione; memoria moderata CPU per le interrogazioni; memoria elevata per la cache
Trigger di ridimensionamento Numero elevato di connessioni, velocità txn distribuita CPU, volume di dati e velocità di interrogazione elevati

Monitoraggio delle prestazioni dell’istanza

La comprensione delle prestazioni a livello di istanza è fondamentale per il funzionamento efficace di Aurora PostgreSQL Limitless Database. Instance-specific il monitoraggio rivela i modelli di distribuzione che influiscono sulle prestazioni: distorsione della connessione, distorsione del carico di lavoro e distorsione dei dati.

Rilevamento dell'asimmetria

In una distribuzione ideale di Aurora PostgreSQL Limitless Database, il carico di lavoro e le risorse vengono distribuiti uniformemente tra le istanze. In pratica, le applicazioni presentano spesso una distribuzione asimmetrica, ossia una distribuzione non uniforme che concentra il carico su istanze specifiche.

Tre tipi di inclinazione da monitorare:

  • Disallineamento della connessione: distribuzione non uniforme delle connessioni client tra i router

  • Distorsione del carico di lavoro: caricamento irregolare delle query tra gli shard a causa dei tasti hot shard

  • Distorsione dei dati: volume di dati non uniforme tra i frammenti a causa della frequenza delle chiavi degli shard

distribuzione del carico di Database Insights

Il modo più rapido per valutare lo stato di salute a livello di istanza è la visualizzazione Load Distribution di Database Insights, che offre una visibilità immediata sulla distribuzione delle sessioni attive tra le istanze.

Per accedere a Load Distribution:

  1. Accedi alla console RDS → Your Limitless Cluster

  2. Seleziona la scheda «Performance Insights»

  3. Fai clic sulla sezione «Distribuzione del carico»

Schema sano: Carico distribuito in modo relativamente uniforme tra le istanze

  • I router possono mostrare un AAS leggermente superiore rispetto agli shard (sovraccarico di coordinazione)

  • I valori AAS degli shard entro il 20% l'uno dall'altro indicano un buon equilibrio

Per quanto riguarda il modello: Concentrazione significativa su casi specifici

  • Un router con > 70% del carico del router → distorsione della connessione

  • Un frammento con > 50% del carico condiviso → Carico di lavoro o distorsione dei dati

  • Grande varianza tra i frammenti → Analizza la distribuzione delle chiavi degli shard

CloudWatch metriche

Per un'analisi più approfondita oltre a Database Insights, CloudWatch fornisce metriche specifiche per le istanze che rivelano i modelli di utilizzo delle risorse.

Il ServerlessDatabaseCapacity metrica con dimensione DBShardGroupInstance mostra il consumo di ACU per istanza, fornendo la visione più diretta dell'utilizzo delle risorse.

Quando indagare:

  • Varianza ACU del router > 30% → distorsione della connessione o concentrazione del carico di lavoro trasversale

  • Varianza ACU condivisa > 40% → Distorsione dei dati o del carico di lavoro

  • Qualsiasi istanza sempre al massimo ACU → Vincolo di capacità

Monitoraggio e risoluzione dei problemi del router

I router possono riscontrare problemi di prestazioni dovuti a due cause principali: distribuzione non uniforme della connessione e concentrazione del carico di lavoro tra più parti.

Sessioni distribuite in modo non uniforme

Sintomo: Un router gestisce una quota sproporzionata di connessioni

Causa principale: La memorizzazione nella cache DNS causa la risoluzione di più richieste di connessione sullo stesso endpoint del router.

Più comune durante:

  • Analisi comparativa con strumenti come pgbench

  • Inizializzazione del pool di connessioni (molte connessioni vengono stabilite rapidamente)

  • Il server delle applicazioni si riavvia

Rimedi:

  • Assicurati di utilizzare l'endpoint Limitless specificato nella console

  • Bilanciamento manuale: estrai gli endpoint del router e connetti diverse applicazioni a router diversi

  • Per le applicazioni libpq usa la funzione LOADBALANCEHOSTS

  • Per le applicazioni JDBC, usa il plug-in di connessione Limitless

  • Usa un NLB per gestire sessioni e distribuzioni

Monitoraggio e risoluzione dei problemi relativi agli shard

Gli shard presentano problemi di prestazioni dovuti a tre cause principali: vincoli di risorse, distorsione dei dati e distorsione del carico di lavoro.

Utilizzo delle risorse condivise

Uno shard con le chiavi shard più diffuse conterrà più dati e carichi di lavoro più elevati. Ciò si manifesta con l'utilizzo delle risorse, ovvero l'istanza consumerà più ACU.

Strategie di riparazione:

  1. Re-assess selezione di chiavi condivise: Rivedi la cardinalità delle chiavi dello shard e i modelli di accesso. Prendi in considerazione le chiavi shard composite per una migliore distribuzione.

  2. Dividi il frammento: Distribuisci il carico su più istanze dello shard

Quando dividere i frammenti:

  • Un solo frammento in modo costante a una ACU massima > 80%

  • Throughput delle query limitato dalla capacità di un singolo shard

Volumi di dati condivisi

Usa le funzioni SQL di Aurora PostgreSQL Limitless Database per interrogare i volumi di dati:

SELECT subcluster_id, subcluster_type, pg_size_pretty(db_size) FROM rds_aurora.limitless_stat_database_size('postgres_limitless') ORDER BY 1;

Per visualizzare i dati per tabella e per frammento:

SELECT * FROM rds_aurora.limitless_stat_relation_sizes('public', 'table_name');

Risoluzione dell'utilizzo irregolare

Quando il carico di lavoro o la distorsione dei dati si concentra su frammenti specifici, la suddivisione degli shard ridistribuisce il carico su più istanze.

Considerazioni importanti:

  • Le chiavi shard da spostare non possono essere controllate

  • Non è possibile annullare una divisione senza ripristinare un'istantanea manuale scattata prima della divisione

  • Tutte le istanze, incluso un nuovo shard, consumano l'ACU minima dell'istanza quando sono inattive

La suddivisione degli shard consente un ulteriore ridimensionamento e la suddivisione consecutiva degli shard consente di aumentare il throughput e l'ulteriore scalabilità, mantenendo al contempo una bassa latenza.

Limitazioni

Siate consapevoli di questi vincoli operativi:

Limitazioni del router:

  • I router non possono essere rimossi - Una volta aggiunti, i router rimangono nel cluster

  • Pianifica attentamente le aggiunte di router per evitare costi di base non necessari

Limitazioni condivise:

  • I frammenti non possono essere uniti - Gli shard split sono operazioni unidirezionali

  • Unica opzione di ripristino: ripristino dall'istantanea scattata prima della divisione

Strategie di mitigazione:

  • Inizia con un numero minimo di istanze valide

  • Aggiungete la capacità in modo incrementale in base alle esigenze

  • Scatta istantanee prima delle principali modifiche alla topologia

  • Monitora i costi di base man mano che il cluster cresce