Come posso risolvere i problemi di latenza dei volumi Amazon EBS causata da un collo di bottiglia IOPS sulla mia istanza Amazon RDS?

6 minuti di lettura
0

Ho un'istanza database Amazon Relational Database Service (Amazon RDS). Desidero risolvere i problemi di latenza dei volumi Amazon Elastic Block Store (Amazon EBS) nella mia istanza Amazon RDS.

Risoluzione

I motivi più comuni di latenza in un'istanza Amazon RDS causata da un collo di bottiglia di IOPS o della velocità effettiva sono i seguenti:

  • Un collo di bottiglia IOPS a livello di istanza
  • Un collo di bottiglia IOPS a livello di volume
  • Collo di bottiglia della velocità effettiva a livello di istanza
  • Collo di bottiglia della velocità effettiva a livello di volume
  • Micro-bursting

Segui i seguenti passaggi per la risoluzione dei problemi in base al tuo caso d'uso.

Istanza RDS con SSD per scopo generico (gp2)

Esegui le seguenti verifiche:

  1. Controlla le informazioni di configurazione dell'istanza Amazon RDS, ad esempio la classe dell'istanza database e le dimensioni dell'archiviazione. Queste informazioni possono aiutarti a tenere traccia degli IOPS e dei limiti di velocità effettiva. Devi conoscere questi valori quando risolvi i problemi che causano un collo di bottiglia di IOPS o della velocità effettiva.
  2. Utilizza i grafici di Amazon CloudWatch per controllare eventuali picchi nei valori di DiskQueueDepth, ReadLatency e WriteLatency. In circostanze normali, è best practice utilizzare un DiskQueueDepth di uno al minuto per ogni 1000 IOPS. ReadLatency e WriteLatency dovrebbero essere inferiori a 10 millisecondi. Se noti picchi, identifica l'ora del picco.
  3. Utilizza i grafici di CloudWatch per visualizzare i parametri ReadIOPS e WriteIOPS. Controlla se il limite IOPS è stato superato a livello di volume durante il periodo di tempo dei picchi nei valori di DiskQueueDepth, ReadLatency e WriteLatency.
  4. Utilizza il grafico di CloudWatch per controllare se c'è un calo del valore di BurstBalance. Questo controllo è applicabile solo per i volumi con dimensioni inferiori a 1 TB. Un calo del valore di BurstBalance conferma il verificarsi di un collo di bottiglia IOPS durante il periodo di tempo del picco.
  5. Utilizza i grafici di CloudWatch per visualizzare i parametri ReadThroughput e WriteThroughput. Controlla se il limite di velocità effettiva è stato superato a livello di volume durante il periodo di tempo dei picchi nei valori di ReadThroughput e WriteThroughput.
  6. Se utilizzi una classe di istanza RDS ottimizzata per EBS, utilizza i grafici di CloudWatch per controllare la limitazione di IOPS o della velocità effettiva. Per le classi di istanza con capacità di espansione, visualizza i parametri EBSIOBalance% e EBSByteBalance% nei grafici di CloudWatch. Valori costantemente bassi di EBSIOBalance% o EBSByteBalance% indicano un collo di bottiglia di IOPS o della velocità effettiva a livello di istanza.

La limitazione di IOPS, velocità effettiva o entrambi indica che IOPS o la velocità effettiva sono inadeguati per il carico di lavoro a livello di archiviazione. Per risolvere il problema, effettua le seguenti operazioni:

  • Individua le query SQL che creano più carico sul database e quindi ottimizza queste query. Se il carico di lavoro è quello previsto o non c'è spazio per la regolazione delle query SQL, potrebbe essere necessario aumentare le dimensioni dell'archiviazione per ottenere una maggiore capacità IOPS.
    Nota: dopo aver aumentato le dimensioni di archiviazione di un'istanza RDS, non puoi ridurre le dimensioni al valore precedente.
  • Valuta la possibilità di cambiare il volume da scopo generico (gp2) a IOPS con provisioning (io1). Se l'istanza database è Single-AZ e utilizzi un gruppo di parametri personalizzato, il passaggio da gp2 a io1 potrebbe causare un breve periodo di inattività. Se l'istanza è Multi-AZ, non si verificano tempi di inattività.
  • Se noti una limitazione di IOPS o della velocità effettiva a livello di istanza, devi aumentare la classe di istanza per ottenere una maggiore capacità di IOPS o di velocità effettiva.

Istanza RDS con IOPS con provisioning (io1)

  1. Controlla le informazioni di configurazione dell'istanza Amazon RDS, ad esempio la classe dell'istanza database e gli IOPS con provisioning definito, per determinare il limite di IOPS o il limite di velocità effettiva per la classe dell'istanza database.
  2. Utilizza i grafici di CloudWatch per controllare eventuali picchi nei valori di DiskQueueDepth, ReadLatency e WriteLatency. In circostanze normali, è best practice utilizzare un DiskQueueDepth di uno al minuto per ogni 1000 IOPS. ReadLatency o WriteLatency dovrebbero essere entro 10 millisecondi. Se noti picchi, identifica l'ora del picco.
  3. Utilizza i grafici di CloudWatch per visualizzare i parametri ReadIOPS e WriteIOPS. Controlla se il limite IOPS è stato superato durante l'intervallo di tempo dei picchi nei valori di DiskQueueDepth, ReadLatency e WriteLatency.
  4. Utilizza i grafici di CloudWatch per visualizzare i parametri ReadThroughput e WriteThroughput. Controlla se il limite di velocità effettiva è stato superato durante l'intervallo di tempo dei picchi nei valori di ReadThroughput e WriteThroughput.
  5. Se utilizzi una classe di istanza RDS ottimizzata per EBS, utilizza i grafici di CloudWatch per controllare la limitazione di IOPS o della velocità effettiva. Per le classi di istanze con capacità di espansione, visualizza i parametri EBSIOBalance% e EBSByteBalance% nei grafici di CloudWatch. Valori percentuali costantemente bassi di EBSIOBalance% o EBSByteBalance% indicano rispettivamente un collo di bottiglia di IOPS o della velocità effettiva a livello di istanza.

La limitazione di IOPS o di velocità effettiva indica che IOPS o velocità effettiva non sono adeguati per il carico di lavoro a livello di archiviazione. Per risolvere il problema, effettua le seguenti operazioni:

  • Individua le query SQL che creano più carico sul database e quindi ottimizza queste query. Se il carico di lavoro è quello previsto o non c'è spazio per la regolazione delle query SQL, potrebbe essere necessario aumentare gli IOPS con provisioning.
  • Se noti una limitazione di IOPS o della velocità effettiva a livello di istanza, devi aumentare la classe di istanza per ottenere una maggiore capacità di IOPS o di velocità effettiva.

Micro-bursting

Il micro-bursting si verifica quando un volume EBS esegue "burst" di IOPS o della velocità effettiva elevati per periodi significativamente più brevi rispetto al periodo di raccolta. I parametri di CloudWatch vengono raccolti a intervalli di 60 secondi. Poiché il volume esegue burst di IOPS o della velocità effettiva elevati per un periodo di tempo inferiore rispetto al periodo di raccolta, CloudWatch non riflette il burst. Puoi utilizzare il monitoraggio avanzato per identificare se il microbursting causa la latenza. Attiva il monitoraggio avanzato con una granularità di 1 secondo. Puoi utilizzare i parametri Read IO/s e Write IO/s per determinare l'utilizzo effettivo degli IOPS. Puoi utilizzare i KB/s di lettura e i KB/s di scrittura per determinare l'utilizzo reale della velocità effettiva al secondo. Per ulteriori informazioni, consulta Descrizioni dei parametri di monitoraggio avanzato.


Informazioni correlate

Parametri di Amazon RDS

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

Specifiche hardware per classi di istanze database

In che modo posso identificare se il mio volume EBS causa micro-bursting e come posso evitare che ciò accada?

Determinare gli IOPS necessari per un database Oracle su AWS

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa