¿Cómo soluciono los picos de latencia de escritura en mi instancia de base de datos de Amazon RDS?

Última actualización: 14/07/2022

Quiero solucionar los picos de latencia de escritura en mi instancia de base de datos de Amazon Relational Database Service (Amazon RDS).

Descripción corta

La métrica WriteLatency de Amazon CloudWatch define la cantidad promedio de tiempo que se emplea en cada operación de E/S del disco. Idealmente, la latencia de escritura no debe ser superior a un milisegundo de un dígito.

El pico en la latencia de escritura de la instancia de base de datos puede deberse a las siguientes acciones:

El pico también puede deberse a IOPS o cuellos de botella en el rendimiento causados por una gran carga de trabajo en la base de datos.

Resolución

Solucionar problemas de picos de latencia

1.    Para solucionar las causas de una latencia alta de lectura o escritura en la instancia de base de datos, consulte las siguientes métricas de CloudWatch:

  • ReadLatency y WriteLatency
  • ReadIOPS y WriteIOPS
  • ReadThroughput y WriteThroughput
  • DiskQueueDepth
  • BurstBalance (para almacenamiento gp2)

Supongamos que observa uno o más de los siguientes síntomas:

  • Los valores de latencia son altos.
  • Los valores de rendimiento e IOPS han alcanzado sus límites máximos.
  • El valor de DiskQueueDepth es alto.
  • El valor de BurstBalance es bajo (para gp2).

Esto significa que la instancia de RDS está sometida a una gran carga de trabajo y necesita más recursos. Para más información consulte, ¿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?

Para solucionar problemas que causan un cuello de botella de IOPS o rendimiento, haga lo siguiente:

Para una instancia de RDS con SSD de uso general (gp2), compruebe la clase de instancia de base de datos y el tamaño de almacenamiento.

Para una instancia de RDS con IOPS aprovisionadas (io1), compruebe la clase de instancia de base de datos y defina las IOPS aprovisionadas.

Para obtener más información, consulte Clases de instancias de base de datos e Instancias optimizadas para Amazon EBS.

2.    Si las métricas de CloudWatch no indican ninguna limitación de recursos, compruebe las E/S de lectura y escritura de E/S mediante Supervisión mejorada.

Las métricas de CloudWatch se registran en un intervalo de 60 segundos. Por lo tanto, es posible que no se registre cada pico o caída. Sin embargo, puede configurar la granularidad de Supervisión mejorada hasta un segundo como máximo para capturar datos. Supervisión mejorada puede capturar cualquier pico en la utilización de recursos dentro de un intervalo de 60 segundos. Para obtener más información, consulte ¿Cómo se identifica si se presentan microrráfagas en el volumen de EBS y cómo se puede evitar que esto ocurra?

3.    Si todas las comprobaciones anteriores no indican la causa del problema, compruebe las métricas de CloudWatch NetworkReceiveThroughput y NetworkTransmitThroughput para asegurarse de que no haya problemas con la red.

Reducir el impacto de la carga diferida

Al restaurar una instancia de base de datos de RDS a partir de una instantánea, la instancia de base de datos sigue cargando datos en segundo plano. Este proceso se conoce como carga diferida.

La carga diferida puede ocurrir en todos los escenarios que requieren restauración a partir de una instantánea, como la restauración a un punto en el tiempo, la conversión de una instancia Single-AZ a una instancia Multi-AZ y la creación de una nueva réplica de lectura. Si intenta acceder a datos que aún no están cargados, la instancia de base de datos descarga inmediatamente los datos solicitados de Amazon Simple Storage Service (Amazon S3). A continuación, la instancia sigue cargando el resto de los datos en segundo plano. Para obtener más información, consulte Instantáneas de Amazon EBS. Para ayudar a mitigar los efectos de la carga diferida en las tablas a las que necesita acceder rápidamente, puede realizar operaciones que impliquen análisis completos de la tabla, como SELECT*. Esto permite que RDS descargue todos los datos de las tablas con copia de seguridad a partir de Amazon S3.

Siga las prácticas recomendadas

Tenga en cuenta las siguientes prácticas recomendadas y soluciones alternativas cuando trabaje con una latencia de escritura alta en su instancia de base de datos:

  • Asegúrese de tener suficientes recursos asignados a la base de datos para ejecutar consultas. Con RDS, la cantidad de recursos asignados depende del tipo de instancia.
  • Si ni las métricas de CloudWatch ni las métricas de Supervisión mejorada indican que exista limitación de recursos, utilice Información sobre rendimiento para supervisar la carga de trabajo de la base de datos. Con Información sobre rendimiento, puede identificar las consultas SQL subyacentes que se ejecutan en su base de datos cuando experimenta latencia con su aplicación. Puede utilizar esta información para evaluar la carga de la base de datos y determinar otras acciones. Para obtener más información, consulte Supervisión de la carga de base de datos con Información sobre rendimiento en Amazon RDS.
  • Puede evitar la microrráfaga si cambia el tamaño o el tipo del volumen de Amazon EBS de acuerdo con su caso de uso.
  • Para optimizar el rendimiento de la base de datos, asegúrese de que las consultas estén correctamente ajustadas.
  • Si va a convertir su instancia de base de datos Single-AZ a una instancia Multi-AZ, considere hacerlo fuera del horario comercial.
  • Para reducir el impacto de la carga diferida después de una conversión Multi-AZ, considere realizar una de las siguientes acciones:
    • Realice una conmutación por error manual poco después de la conversión a la instancia Multi-AZ.
    • Ejecute un volcado completo o simplemente las consultas necesarias para cargar todos los datos de las tablas. Este proceso puede ayudar a cargar los datos y forzar que todos los bloques se envíen desde S3 al nuevo host. Para las instancias de Amazon RDS para PostgreSQL, puede ejecutar el comando pg_prewarm.
  • Puede configurar alarmas de Amazon CloudWatch en métricas clave de RDS, lo cual es útil para determinar el motivo de los picos de latencia de escritura en las instancias de RDS. Algunos ejemplos de estas métricas son ReadIOPS, WriteIOPS, ReadThroughput, WriteThroughput, DiskQueueDepth, ReadLatency y WriteLatency. Puede usar estas alarmas para asegurarse de que la instancia no sufra limitaciones.