¿Cómo puedo resolver problemas de latencia de los volúmenes de Amazon EBS provocados por un cuello de botella de IOPS en mi instancia de Amazon RDS?

Última actualización: 11/10/2021

Tengo una instancia de base de datos de Amazon Relational Database Service (Amazon RDS). Quiero resolver los problemas de latencia de los volúmenes de Amazon Elastic Block Store (Amazon EBS) en mi instancia de Amazon RDS.

Resolución

Los motivos más comunes de la latencia en una instancia de Amazon RDS causada por un cuello de botella de IOPS o de rendimiento son los siguientes, entre otros:

  • Un cuello de botella de IOPS a nivel de instancia
  • Un cuello de botella de IOPS a nivel de volumen
  • Un cuello de botella de rendimiento a nivel de instancia
  • Un cuello de botella de rendimiento a nivel de volumen
  • Microrráfagas

Siga estos pasos de solución de problemas según su caso de uso.

Instancia de RDS con SSD de uso general (gp2)

Lleve a cabo las verificaciones siguientes:

  1. Verifique la información de configuración de la instancia de Amazon RDS, como la clase de instancia de base de datos y el tamaño de almacenamiento. Esta información puede ayudarlo a hacer un seguimiento de los límites de IOPS y rendimiento. Debe conocer estos valores cuando solucione problemas que causan un cuello de botella de IOPS o de rendimiento.
  2. Utilice los gráficos de Amazon CloudWatch para verificar si hay picos en los valores de DiskQueueDepth, ReadLatency y WriteLatency. En circunstancias normales, se recomienda utilizar un DiskQueueDepth de uno por minuto por cada 1000 IOPS. Se espera que ReadLatency y WriteLatency sean inferiores a 10 milisegundos. Si nota picos, identifique el momento del pico.
  3. Utilice los gráficos de CloudWatch para ver las métricas de ReadIOPS y WriteIOPS. Verifique si se ha superado el límite de IOPS a nivel de volumen durante el periodo de tiempo de los picos en los valores de DiskQueueDepth, ReadLatency y WriteLatency.
  4. Utilice el gráfico de CloudWatch para verificar si hay una caída en el valor de BurstBalance. Esta verificación solo se aplica a volúmenes con un tamaño inferior a 1 TB. Una caída en el valor de BurstBalance confirma la aparición de un cuello de botella de IOPS durante el periodo de tiempo del pico.
  5. Utilice los gráficos de CloudWatch para ver las métricas de ReadThroughput y WriteThroughput. Verifique si se ha superado el límite de rendimiento a nivel de volumen durante el periodo de tiempo de los picos en los valores de ReadThroughput y WriteThroughput.
  6. Si utiliza una clase de instancia de RDS optimizada para EBS, utilice los gráficos de CloudWatch para verificar si hay limitación controlada de IOPS o rendimiento. Para las clases de instancia con capacidad de ampliación, vea las métricas de EBSIOBalance% y EBSByteBalance% en los gráficos de CloudWatch. Los valores bajos constantes de EBSIOBalance% o EBSByteBalance% indican un cuello de botella de IOPS o de rendimiento a nivel de instancia.

La limitación controlada de IOPS, el rendimiento o ambos indican que las IOPS o el rendimiento son inadecuados para su carga de trabajo a nivel de almacenamiento. Para solucionar este problema, haga lo siguiente:

  • Busque las consultas SQL que generan más carga en la base de datos y, a continuación, optimice estas consultas. Si la carga de trabajo es la esperada o no hay margen para ajustar las consultas SQL, es posible que deba aumentar el tamaño del almacenamiento para obtener una mayor capacidad de IOPS.
    Nota: Después de aumentar el tamaño de almacenamiento de una instancia de RDS, no podrá reducirlo al valor anterior.
  • Considere la posibilidad de cambiar el volumen de uso general (gp2) a IOPS provisionadas (io1). Si la instancia de base de datos es Single-AZ y utiliza un grupo de parámetros personalizado, cambiar entre gp2 e io1 podría provocar un breve tiempo de inactividad. Si su instancia es Multi-AZ, no experimentará ningún tiempo de inactividad.
  • Si observa una limitación controlada de IOPS o del rendimiento a nivel de instancia, debe escalar verticalmente la clase de instancia para obtener una mayor capacidad de IOPS o rendimiento.

Instancia de RDS con IOPS provisionadas (io1)

  1. Verifique la información de configuración de la instancia de Amazon RDS, como la clase de instancia de base de datos y las IOPS provisionadas definidas, para determinar el límite de IOPS o el límite de rendimiento de la clase de instancia de base de datos.
  2. Utilice los gráficos de CloudWatch para verificar si hay picos en los valores de DiskQueueDepth, ReadLatency y WriteLatency. En circunstancias normales, se recomienda utilizar un DiskQueueDepth de uno por minuto por cada 1000 IOPS. Se espera que ReadLatency o WriteLatency estén dentro de los 10 milisegundos. Si nota picos, identifique el momento del pico.
  3. Utilice los gráficos de CloudWatch para ver las métricas de ReadIOPS y WriteIOPS. Verifique si se ha superado el límite de IOPS durante el periodo de tiempo de picos en los valores de DiskQueueDepth, ReadLatency y WriteLatency.
  4. Utilice los gráficos de CloudWatch para ver las métricas de ReadThroughput y WriteThroughput. Verifique si se ha superado el límite de rendimiento durante el periodo de tiempo de picos en los valores de ReadThroughput y WriteThroughput.
  5. Si utiliza una clase de instancia de RDS optimizada para EBS, utilice los gráficos de CloudWatch para verificar si hay limitación controlada de IOPS o rendimiento. Para las clases de instancia con capacidad de ampliación, vea las métricas de EBSIOBalance% y EBSByteBalance% en los gráficos de CloudWatch. Los valores porcentuales uniformemente bajos de EBSIOBalance% o EBSByteBalance%, respectivamente, indican un cuello de botella de IOPS o de rendimiento en el nivel de instancia.

La limitación controlada de IOPS o de rendimiento indica que las IOPS o el rendimiento son inadecuados para la carga de trabajo en el nivel de almacenamiento. Para solucionar este problema, haga lo siguiente:

  • Busque las consultas SQL que generan más carga en la base de datos y, a continuación, optimice estas consultas. Si la carga de trabajo es la esperada o no hay margen para ajustar las consultas SQL, es posible que deba aumentar las IOPS aprovisionadas.
  • Si observa una limitación controlada de IOPS o de rendimiento a nivel de instancia, debe escalar verticalmente la clase de instancia para obtener un mayor rendimiento o capacidad de IOPS.

Microrráfagas

Las microrráfagas se producen cuando un volumen de EBS “se dispara” y tiene un alto rendimiento o IOPS durante periodos significativamente más cortos que el periodo de recopilación. Las métricas de CloudWatch se recopilan en un intervalo de 60 segundos. Debido a que el volumen aumenta las IOPS o el rendimiento durante un periodo de tiempo menor que el periodo de recopilación, CloudWatch no refleja la ráfaga. Puede utilizar Monitoreo mejorado para identificar si la microrráfaga causa la latencia. Active Monitoreo mejorado con una pormenorización de 1 segundo. Puede utilizar las métricas de lectura de E/S y escritura de E/S para determinar el uso real de IOPS. Puede utilizar los Kb/s de lectura y los Kb/s de escritura para determinar el uso real del rendimiento por segundo. Para obtener más información, consulte Descripciones de métricas de Monitoreo mejorado.