Un nivel alto de IOPS en una instancia de ApsaraDB RDS for MySQL suele indicar que las consultas leen datos del disco en lugar de la memoria. Use el informe de diagnóstico de Database Autonomy Service (DAS) para identificar la causa raíz y, después, finalice las sesiones responsables.
Causas
Los picos de IOPS en RDS for MySQL se deben a una de estas dos causas principales:
Memoria insuficiente para el almacenamiento en caché o la ordenación: cuando la capacidad de memoria de la instancia de RDS no cubre los requisitos de almacenamiento en caché u ordenación de datos, se genera un volumen elevado de E/S física.
Escaneos completos de tablas o consultas poco eficientes: las consultas que revisan muchas filas sin usar un índice generan una cantidad de E/S proporcional a las filas examinadas, no a las devueltas. Las ordenaciones repetidas sin un plan de ejecución eficiente agravan este efecto.
Reducir el uso de IOPS
Use uno o ambos de los métodos a continuación.
Generar un informe de diagnóstico (recomendado)
El informe de diagnóstico con un solo clic de DAS muestra las sesiones activas, los bloqueos mutuos y las consultas lentas en una sola vista. Además, ofrece sugerencias de optimización que puede aplicar de inmediato.
Log in to the RDS instance en la consola de Data Management (DMS).
Haga clic con el botón secundario en la instancia de RDS y seleccione Performance > One-click diagnosis.
En la consola de DAS, revise las sesiones en tiempo real, los bloqueos mutuos y las consultas lentas.
Haga clic en el enlace de detalles del módulo correspondiente y aplique las sugerencias de optimización.
Finalizar sesiones anómalas
Si no hay un informe de diagnóstico disponible o no es posible aplicar los cambios de optimización de inmediato, finalice las sesiones que generan lecturas físicas excesivas. En la vista de sesiones de DAS, concéntrese en aquellas donde Physical_sync_read o Physical_async_read muestren un valor alto, ya que ambas métricas indican una carga intensa de lecturas en disco físico.
Finalizar las sesiones proporciona un alivio temporal. Detenga las consultas en la aplicación para evitar que se vuelvan a conectar y ejecutar.
Finalizar sesiones en DMS
Log in to the RDS instance en la consola de Data Management (DMS).
Haga clic con el botón secundario en la instancia de RDS y seleccione Performance > Instance session.
Seleccione la sesión que desea finalizar y haga clic en Kill Selected.
Finalizar sesiones desde la línea de comandos de MySQL
Los comandos SHOW PROCESSLIST y SHOW FULL PROCESSLIST devuelven una instantánea de las sesiones activas en el momento en que se ejecutan. Ejecútelos varias veces para identificar las sesiones que permanecen activas de forma constante o que consumen más recursos.
Conéctese a la instancia de RDS mediante la herramienta de línea de comandos de MySQL.
-
Identifique las sesiones anómalas:
Ejecute
SHOW PROCESSLIST;para obtener una vista resumida.
Si hay muchas sesiones activas, ejecute
SHOW FULL PROCESSLIST;para ver el texto completo de la consulta.
-
Finalice las sesiones anómalas. Reemplace
[$ID]con el valor de la columna ID.kill [$ID]
Si no puede conectarse a la instancia
Cuando el número de conexiones alcanza el límite máximo, tanto DMS como la herramienta de línea de comandos de MySQL fallan al intentar conectarse. Establezca el parámetro wait_timeout en un valor bajo, como 60, desde la consola de ApsaraDB RDS. Esto hace que la instancia cierre automáticamente las conexiones inactivas por más de 60 segundos y libera espacios de conexión para que pueda iniciar sesión y comenzar el diagnóstico.
Ámbito de aplicación
ApsaraDB RDS for MySQL