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