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:
Vai alla console RDS → Your Limitless Cluster
Seleziona la scheda «Performance Insights»
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à
LOADBALANCEHOSTSPer 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:
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.
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