Come posso risolvere i picchi di latenza di scrittura nella mia istanza database di Amazon RDS?

6 minuti di lettura
0

Desidero risolvere i picchi di latenza di scrittura nella mia istanza database Amazon Relational Database Service (Amazon RDS).

Breve descrizione

Il parametro WriteLatency di Amazon CloudWatch definisce il tempo medio impiegato per l'operazione di I/O su disco. In teoria, la latenza di scrittura non deve essere superiore a un millisecondo a singola cifra.

Il picco di latenza di scrittura per l'istanza database potrebbe essere dovuto a:

Il picco potrebbe anche derivare da IOPS o da un collo di bottiglia del throughput causato da un carico di lavoro pesante sul database.

Risoluzione

Risoluzione dei problemi relativi al picco di latenza

1.    Per risolvere le cause di un'elevata latenza di lettura o scrittura sull'istanza database, controlla i seguenti parametri di CloudWatch:

  • ReadLatency e WriteLatency
  • ReadIOPS e WriteIOPS
  • ReadThroughput e WriteThroughput
  • DiskQueueDepth
  • BurstBalance (per spazio di archiviazione gp2)

Supponiamo di notare uno o più dei seguenti elementi:

  • I valori di latenza sono elevati.
  • I valori di throughput e IOPS hanno raggiunto i rispettivi limiti massimi.
  • Il valore di DiskQueueDepth è elevato.
  • Il valore di BurstBalance è basso (per gp2).

Ciò significa che l'istanza RDS è sottoposta a un carico di lavoro pesante e necessita di più risorse. Per ulteriori informazioni, consulta Come posso risolvere la latenza dei volumi Amazon EBS causata da un collo di bottiglia IOPS nella mia istanza Amazon RDS?

Per risolvere i problemi che causano un collo di bottiglia di IOPS o di throughput, completa la seguente procedura:

Per un'istanza RDS con SSD (gp2) a scopo generico, controlla la classe dell'istanza database e le dimensioni di archiviazione.

Per un'istanza RDS con capacità di IOPS allocata (io1), controlla la classe dell'istanza database e la capacità di IOPS allocata definita.

Per maggiori informazioni, consulta Classi di istanze database e Istanze ottimizzate per Amazon EBS.

2.    Se i parametri di CloudWatch non indicano alcuna limitazione delle risorse, controlla gli I/O di lettura e scrittura utilizzando il monitoraggio avanzato.

I parametri di CloudWatch vengono registrati a intervalli di 60 secondi. Pertanto, è possibile che non tutti i picchi o i cali vengano registrati. Tuttavia, puoi impostare il dettaglio del monitoraggio avanzato per l'acquisizione dei dati su un massimo di un secondo. Qualsiasi picco nell'utilizzo delle risorse entro un intervallo di 60 secondi può essere rilevato dal monitoraggio avanzato. Per ulteriori informazioni, consulta In che modo posso identificare se il mio volume EBS causa micro-bursting e come posso evitare che ciò accada?

3.    Se tutti i controlli precedenti non indicano la causa del problema, controlla i parametri di CloudWatch NetworkReceiveThroughput e NetworkTransmitThroughput per assicurarti che non ci siano problemi con la rete.

Mitiga l'impatto del lazy loading

Quando ripristini un'istanza di database RDS da uno snapshot, l'istanza database continua a caricare i dati in background. Questo processo è noto come lazy loading, o caricamento lento.

Il caricamento lento può verificarsi in tutti gli scenari che richiedono il ripristino da uno snapshot, ad esempio un ripristino temporale, la conversione di un'istanza Single-AZ in un'istanza Multi-AZ e la creazione di una nuova replica di lettura. Se si prova ad accedere a dati non ancora caricati, l'istanza database scarica immediatamente i dati richiesti da Amazon Simple Storage Service (Amazon S3). Quindi, l'istanza continua a caricare il resto dei dati in background. Per ulteriori informazioni, consulta Snapshot di Amazon EBS. Per ridurre gli effetti del caricamento lento sulle tabelle a cui è necessario accedere rapidamente, è possibile eseguire operazioni che coinvolgono scansioni di tabelle complete, come SELECT *. Ciò consente a RDS di scaricare tutti i dati della tabella di backup da Amazon S3.

Segui le best practice

Quando hai a che fare con un'elevata latenza di scrittura nell'istanza database, tieni in considerazione le seguenti best practice e soluzioni alternative:

  • Accertati di disporre di risorse sufficienti allocate al database per eseguire le query. Con RDS, la quantità di risorse allocate dipende dal tipo di istanza.
  • Se né i parametri di CloudWatch né i parametri di monitoraggio avanzato indicano una limitazione delle risorse, utilizza Performance Insights per monitorare il carico di lavoro del database. Utilizzando Performance Insights, quando si verifica una latenza con l'applicazione potrai identificare le query SQL sottostanti in esecuzione nel database. Queste informazioni possono essere utilizzate per valutare il carico sul database e determinare ulteriori azioni. Per ulteriori informazioni, consulta Monitoraggio del carico del database con Performance Insights su Amazon RDS.
  • Previeni il micro-bursting modificando le dimensioni o il tipo di volume Amazon EBS in base al tuo caso d'uso.
  • Per ottimizzare le prestazioni del database, assicurati che le tue query siano correttamente ottimizzate.
  • Se stai convertendo l'istanza di database Single-AZ in un'istanza Multi-AZ, valuta la possibilità di farlo durante le ore non lavorative.
  • Per ridurre l'impatto del lazy loading dopo una conversione Multi-AZ, prendi in considerazione una delle seguenti opzioni:
  • Esegui un failover manuale subito dopo la conversione nell'istanza Multi-AZ.
  • Esegui un dump completo o solo delle query richieste per caricare tutti i dati dalle tabelle. Questo processo può aiutare a caricare i dati e forzare il push di tutti i blocchi da S3 al nuovo host. Per le istanze di Amazon RDS per PostgreSQL, puoi eseguire il comando pg_prewarm.
  • Puoi configurare gli allarmi di Amazon CloudWatch sui parametri chiave di RDS utili per determinare il motivo dei picchi di latenza di scrittura nelle istanze RDS. Esempi di questi parametri includono ReadIOPS, WriteIOPS, ReadThroughput, WriteThroughput, DiskQueueDepth, ReadLatency e WriteLatency. Puoi utilizzare questi allarmi per assicurarti che l'istanza non venga limitata.

Informazioni correlate

Best practice per Amazon RDS

Comprensione delle prestazioni di espansione rispetto a quelle di base con Amazon RDS e GP2

Modifica di un'istanza database come implementazione di istanze database Multi-AZ

Tutorial: ripristino di un'istanza database di Amazon RDS da uno snapshot del database

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa