La captura del rendimiento de Cloud SQL para MySQL te ayuda a diagnosticar y resolver problemas de rendimiento complejos y transitorios en tu base de datos de MySQL.
Cuando tu instancia experimenta una degradación del rendimiento, como una ralentización o una detención de la base de datos, las métricas estándar pueden ser insuficientes para determinar la causa raíz. La captura del rendimiento resuelve este problema, ya que captura instantáneas detalladas de la base de datos en el momento en que se detecta un problema. Puedes usar activadores configurables para tomar instantáneas en todo el sistema cuando se producen problemas transitorios y para detectar transacciones de larga duración.
Ejemplos de casos de uso
En esta sección, se enumeran ejemplos de casos de uso para mostrar cómo puedes usar la captura de rendimiento después de habilitarla para tu instancia.
Diagnostica una detención de la base de datos
Problema: Una instancia no responde desde hace varios minutos, pero las métricas solo muestran una disminución en las consultas por segundo (QPS) y un aumento en las conexiones.
Ejemplo de uso: Define un activador de umbral con runningThreadsThreshold.
El registro de captura de rendimiento revela una gran cantidad de esperas de semáforo, lo que identifica una contención de mutex específica (por ejemplo, en el índice hash adaptable) como la causa raíz.
Analiza la degradación de las consultas
Problema: El rendimiento de las consultas se degrada repentinamente en todo el sistema.
Ejemplo de uso: El registro de captura de rendimiento revela una sola transacción de larga duración que acumuló una gran cantidad de registros de deshacer. El registro identifica la transacción de larga duración, el usuario y el texto de la consulta.
Investiga el retraso de replicación
Problema: Una réplica de lectura está muy atrasada con respecto a su fuente.
Ejemplo de uso: Configuras un umbral de activación de valor alto para secondsBehindSourceThreshold. Puedes consultar el registro de captura de rendimiento para identificar el GTID específico que causa el retraso.
Administra transacciones de larga duración
Problema: Un trabajo por lotes o una consulta del usuario se ejecuta durante un tiempo excesivo y mantiene bloqueos.
Ejemplo de uso: Configuras un activador de umbral para transactionDurationThreshold.
El registro de captura de rendimiento identifica la transacción que supera el umbral. Puedes usar esta información para investigar.
Cómo se capturan los datos de rendimiento
La captura de rendimiento funciona como un servicio basado en agentes que supervisa tu instancia. Cuando habilitas la captura del rendimiento, tu instancia de Cloud SQL hace lo siguiente para capturar los datos de rendimiento:
El agente sondea la configuración de tu base de datos para leer los activadores que definiste. Luego, el agente sondea las métricas de tu base de datos en un intervalo configurable, que se establece en 30 segundos de forma predeterminada.
Si se detecta un problema y se supera el umbral de un activador, el agente sigue comparando el estado activo de la base de datos con tus reglas. Para evitar falsas alarmas por aumentos temporales, el agente activa una captura completa del rendimiento solo si detecta el problema durante una cantidad consecutiva de sondeos. Por ejemplo, el agente podría activar una captura de rendimiento si detecta que la cantidad de subprocesos es alta para tres sondeos seguidos.
Cuando se activa una captura de rendimiento, el agente se conecta a la base de datos y ejecuta una serie de comandos de diagnóstico para capturar una instantánea detallada.
La información capturada se formatea en entradas de registro y se envía directamente a Cloud Logging del proyecto para la instancia de Cloud SQL en un flujo de registros específico llamado
mysql-performance-capture.log.
Activadores configurables
Puedes configurar los siguientes activadores para la captura de rendimiento:
runningThreadsThreshold: Se activa cuando la cantidad de subprocesos activos que se ejecutan en una instancia principal supera el valor especificado. Por ejemplo, puedes configurar el umbral para que se ejecute la captura del rendimiento si la cantidad de subprocesos activos en ejecución supera los 100.secondsBehindSourceThreshold: Se activan para las réplicas cuando el retraso de la replicación supera la cantidad de segundos especificada. Por ejemplo, puedes configurar el umbral para ejecutar la captura del rendimiento si el retraso de la réplica de lectura es superior a 300 segundos.transactionDurationThreshold: Activa el registro de transacciones individuales que se ejecutan durante más tiempo que la duración especificada. Por ejemplo, puedes configurar el activador para registrar cualquier transacción individual que se ejecute durante más de 10 minutos.
Período de inactividad después de una captura de rendimiento
Para evitar el registro excesivo y la sobrecarga del sistema durante un evento de rendimiento sostenido, la captura de rendimiento implementa un período de enfriamiento de 30 minutos después de una captura de instantánea exitosa. Este período de espera se activa automáticamente para evitar que el agente active capturas nuevas y redundantes mientras el sistema se encuentra en un estado de problema extendido.
Precios
El registro de rendimiento almacena registros en Cloud Logging, lo que puede generar costos de almacenamiento adicionales.
Para obtener más información sobre los precios del almacenamiento de registros en Logging, consulta Precios.
Limitaciones
- Debes tener habilitadas las estadísticas de consultas para usar la captura del rendimiento. Si inhabilitas las estadísticas de consultas, también inhabilitarás la captura del rendimiento.
- La captura del rendimiento solo está disponible para Cloud SQL para MySQL 5.7 y versiones posteriores.