Monitoraggio delle prestazioni e delle risorse specifico dell'istanza - 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à.

Monitoraggio delle prestazioni e delle risorse specifico dell'istanza

Il monitoraggio a livello di istanza è fondamentale per comprendere la distorsione della connessione, del carico di lavoro e della distorsione dei dati, nonché per capire quando aggiungere router o split shard per aumentare la velocità di trasmissione e mantenere la latenza.

Panoramica di

Quando l'applicazione invia una query, tale richiesta attraversa un sofisticato sistema distribuito prima di restituire risultati. Un'SELECTistruzione apparentemente semplice 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 le applicazioni, si interpretano i dati di monitoraggio e si diagnosticano i problemi di prestazioni.

Questa guida fornisce informazioni tecniche approfondite sull'architettura delle istanze:

  • 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

raggiunge la scalabilità orizzontale attraverso la separazione funzionale tra due tipi di istanze specializzate:

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

  • Le istanze Shard forniscono i dati e il livello di calcolo: memorizzano i dati delle tabelle, eseguono query su dati locali e gestiscono le transazioni. Gli shard sono stateful, ognuno dei quali possiede un sottoinsieme specifico di dati determinato da un hashing coerente.

Questa separazione consente 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 interrogazioni Archiviazione dei dati ed esecuzione delle interrogazioni
Stato Senza stato (nessuna memorizzazione dei dati) Stateful (possiede i dati)
Scalabilità Aggiungi/rimuovi istantaneamente Richiede il ribilanciamento dei dati
Attenzione alle risorse CPU per il coordinamento; memoria moderata CPU per le interrogazioni; elevata capacità di memoria per la cache
Scaling Trigger Numero elevato di connessioni, velocità txn distribuita CPU, volume di dati e velocità di esecuzione delle query elevati

Monitoraggio delle prestazioni dell’istanza

La comprensione delle prestazioni a livello di istanza è fondamentale per operare in modo efficace. Il monitoraggio specifico dell'istanza rivela i modelli di distribuzione che influiscono sulle prestazioni: distorsione della connessione, distorsione del carico di lavoro e distorsione dei dati.

Rilevamento dell'inclinazione

In un'implementazione ideale, il carico di lavoro e le risorse vengono distribuiti in modo uniforme tra le istanze. In pratica, le applicazioni presentano spesso una distribuzione asimmetrica e irregolare 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

  • Inclinazione del carico di lavoro: carico irregolare delle query tra gli shard a causa delle chiavi hot shard

  • Inclinazione dei dati: volume di dati non uniforme tra gli shard 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 vista Load Distribution di Database Insights, che offre visibilità immediata sulla distribuzione delle sessioni attive tra le istanze.

Per accedere a Load Distribution:

  1. Vai alla console RDS → Your Limitless Cluster

  2. Seleziona la scheda «Performance Insights»

  3. Fai clic sulla sezione «Distribuzione del carico»

Modello sano: carico distribuito in modo relativamente uniforme tra le istanze

  • I router possono mostrare un AAS leggermente superiore a quello degli shard (sovraccarico di coordinazione)

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

Riguardo al modello: concentrazione significativa su casi specifici

  • Un router con > 70% del carico del router → Connessione distorta

  • Uno shard con > 50% del carico sullo shard → Carico di lavoro o distorsione dei dati

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

CloudWatch metriche

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

La 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% → Disallineamento della connessione o concentrazione del carico di lavoro tra shard

  • Condividi la varianza ACU > 40% → Inclinazione dei dati o del carico di lavoro

  • Qualsiasi istanza costantemente al massimo ACU → Limite di capacità

Monitoraggio e risoluzione dei problemi del router

I router possono presentare problemi di prestazioni dovuti a due cause principali: distribuzione non uniforme delle connessioni e concentrazione del carico di lavoro tra shard.

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 stabilite rapidamente)

  • Riavvio del server delle applicazioni

Rimedi:

  • Assicurati di utilizzare l'endpoint Limitless specificato nella console

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

  • Per le applicazioni libpq usa la funzionalità LOADBALANCEHOSTS

  • Per le applicazioni JDBC usa il Limitless connection Plugin

  • Usa un NLB per gestire sessioni e distribuzioni

Monitoraggio e risoluzione dei problemi degli shard

Gli shards presentano problemi di prestazioni dovuti a tre cause principali: limitazioni delle 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 come utilizzo delle risorse, ovvero l'istanza consumerà di più. ACUs

Strategie di riparazione:

  1. Rivaluta la selezione delle chiavi dello shard: esamina la cardinalità e i modelli di accesso delle chiavi shard. Prendi in considerazione le chiavi shard composite per una migliore distribuzione.

  2. Dividi lo shard: distribuisci il carico su più istanze dello shard

Quando dividere i frammenti:

  • Frammento singolo in modo uniforme con una ACU massima superiore all'80%

  • Velocità effettiva delle query limitata dalla capacità di un singolo shard

Condividete i volumi di dati

Usa le funzioni SQL 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 di un utilizzo non uniforme

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

Considerazioni importanti:

  • I tasti dello shard da spostare non possono essere controllati

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

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

La suddivisione degli shard consente un'ulteriore scalabilità e le suddivisioni consecutive degli shard sono il percorso verso un throughput più elevato e un'ulteriore scalabilità, pur mantenendo 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 ai router per evitare costi di base non necessari

Limitazioni degli shard:

  • Gli shard non possono essere uniti: le divisioni degli shard 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

  • Aggiungi la capacità in modo incrementale secondo necessità

  • Scatta istantanee prima delle principali modifiche alla topologia

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