Descripción general de la captura de rendimiento de Cloud SQL

La captura de 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 que se deben a la demanda cambiante del sistema. A medida que se escalan las cargas de trabajo de las aplicaciones y la infraestructura circundante se vuelve más compleja, las bases de datos están sujetas a demandas cada vez mayores e impredecibles. Estas presiones del sistema externo pueden causar ralentizaciones o bloqueos de la base de datos.

Cuando tu base de datos experimenta una degradación del rendimiento, las métricas estándar pueden ser insuficientes para identificar la causa raíz en el contexto de tu infraestructura más grande. La captura de rendimiento resuelve este problema capturando instantáneas detalladas y puntuales 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. Los activadores también pueden detectar transacciones de larga duración, que pueden ser las causas raíz de los problemas de rendimiento. Puedes configurar activadores para finalizar automáticamente las transacciones de larga duración.

Ejemplos de casos de uso

En esta sección, se enumeran ejemplos de casos de uso para que puedas usar la captura de rendimiento después de habilitarla para tu instancia.

Caso de uso Condición de activación Estadísticas de diagnóstico
Ralentización en todo el sistema debido a la acumulación de registros de deshacer Longitud de la lista del historial Identifica cuándo el proceso de purga de InnoDB se retrasa debido a lecturas de larga duración o grandes operaciones de lenguaje de manipulación de datos (DML). La demora puede aumentar la presión de almacenamiento y degradar el rendimiento.
Bloqueo de la base de datos causado por la contención interna del motor Esperas de semáforo Es útil para diagnosticar una base de datos que no responde. Este activador puede detectar la contención de mutex o de bloqueo de lectura y escritura dentro del motor de almacenamiento de InnoDB, como la contención del índice hash adaptable (AHI) o del grupo de búferes.
Contención de bloqueo a nivel de la aplicación o consultas sin indexar Esperas de bloqueo de transacciones Se activa cuando una gran cantidad de transacciones se encuentran en un estado LOCK WAIT, lo que indica una contención a nivel de la fila o transacciones inactivas de larga duración.
Sobrecarga de la instancia debido a una clasificación o agregación compleja Uso alto de CPU Captura el estado durante el uso alto de la CPU del contenedor, que suele deberse a consultas ineficientes o a aumentos masivos de simultaneidad.
Riesgo de reinicios por falta de memoria (OOM) Uso elevado de memoria Te ayuda a diagnosticar problemas como búferes por subproceso de gran tamaño o pérdidas de memoria antes de que provoquen una falla en la instancia.
Aumentos repentinos de tráfico o apps cliente con cuellos de botella Subprocesos en ejecución Es un indicador general de la carga de la instancia, útil para identificar aumentos repentinos en las conexiones activas simultáneas.
Datos obsoletos en la réplica debido a cargas de trabajo de escritura pesadas Segundos de retraso en relación con la fuente Supervisa el retraso de la replicación en las réplicas de lectura para ayudar a diagnosticar las demoras en la sincronización de datos desde la instancia principal.
Consultas de larga duración que bloquean la purga Transacciones de larga duración Identifica las transacciones que han estado abiertas durante demasiado tiempo y que podrían tener bloqueos críticos. Además, puedes finalizar automáticamente las transacciones de larga duración.

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 de rendimiento, tu instancia de Cloud SQL hace lo siguiente para capturar datos de rendimiento:

  1. El agente sondea la configuración de tu instancia para leer los activadores basados en umbrales que definiste. Luego, el agente sondea las métricas de tu instancia en un intervalo configurable, probingIntervalSeconds, que se establece en 30 segundos de forma predeterminada.

  2. Si se detecta un problema y se superó el umbral de un activador, el agente continúa comparando el estado en vivo de la instancia con tus reglas. Para evitar falsas alarmas por aumentos temporales, el agente activa una captura de rendimiento completa. Una captura se activa solo si se cumple la condición durante los sondeos consecutivos para el probeThreshold configurado, que tiene el valor predeterminado 3. Este umbral consecutivo evita las capturas debido a aumentos transitorios.

    Por ejemplo, el agente podría activar una captura de rendimiento si detecta que la cantidad de subprocesos es alta para tres sondeos seguidos.

    Si se configuran varias condiciones de activación, Cloud SQL inicia una captura si se cumple alguna de las condiciones.

  3. Cuando se activa una captura, la captura de rendimiento se conecta a la base de datos y ejecuta una serie de comandos de diagnóstico para capturar una instantánea detallada.

  4. 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 una transmisión de registro específica llamada mysql-performance-capture.log.

Períodos de recuperación y retirada adaptables

Para evitar el registro excesivo y la sobrecarga del sistema, la captura de rendimiento implementa un período de recuperación después de una captura.

Recuperación estándar

Después de una captura exitosa, la captura de rendimiento inicia un período de inactividad estándar de 30 minutos. Durante este tiempo, el agente no activa capturas nuevas, incluso si la instancia se encuentra en un estado de problema extendido.

Recuperación y retirada adaptables

Si una instancia activa capturas de forma repetida para la misma infracción, la captura de rendimiento usa un mecanismo de retirada de recuperación adaptable. Este mecanismo ayuda a limitar el volumen de registro y el costo de los umbrales mal configurados.

Según este mecanismo, sucede lo siguiente:

  • La recuperación se extiende a 24 horas.
  • La captura de rendimiento ingresa en un modo de suspensión, que suspende todas las verificaciones de activación y las capturas de diagnóstico.
  • La instancia se limita a una sola captura de rendimiento por día.

Activadores de captura de rendimiento

En esta sección, se enumeran los activadores que están disponibles para la captura de rendimiento de MySQL. Todos los activadores que se enumeran en la tabla, excepto cuando se indica, usan los valores de configuración de sondeo probingIntervalSeconds y probeThreshold para validar las condiciones de activación sostenidas.

Nombre de la condición de activación Nombre de la API Descripción Valor predeterminado Rango de configuración
Uso alto de CPU
utilización
cpuUtilizationThresholdPercent Activa una captura cuando el uso general de la CPU de la instancia de base de datos supera de forma constante este porcentaje. Esto ayuda a detectar la sobrecarga de la instancia, que suele deberse a consultas ineficientes con clasificación y agregación masivas, indexación insuficiente o simultaneidad muy alta. Para evitar capturas en aumentos menores, configura el valor predeterminado para que esté en el rango de porcentaje más alto de tu instancia. 0 (inhabilitado) 0 o
10-99 (%)
Uso elevado de memoria
memoryUsageThresholdPercent Activa una captura cuando el uso de memoria del contenedor de la base de datos supera de forma constante este porcentaje de la memoria asignada de la instancia. Este activador puede ayudar a diagnosticar posibles problemas de falta de memoria, pérdidas de memoria o configuración de memoria ineficiente. Para evitar la captura de aumentos menores, establece el valor predeterminado en el extremo superior del rango de tu instancia. 0 (inhabilitado) 0 o
10-99 (%)
Uso elevado de
archivos temporales
No configurable Este activador se habilita automáticamente para MySQL 8.0 y versiones posteriores. Activa automáticamente una captura cuando hay un aumento significativo en el uso del disco de los archivos temporales creados por el proceso de MySQL. A menudo, los archivos temporales se borran, pero un proceso de MySQL los mantiene abiertos.

El umbral de este activador usa un modelo de escalamiento progresivo para los umbrales de diferencia. Comienza en 100 GB y se duplica de forma secuencial a 200 GB, 400 GB y hasta 1.6 TB después de cada recuperación. Con un modelo de escalamiento progresivo, la captura de rendimiento se produce solo si la diferencia en el uso de archivos temporales aumenta a un nivel alto.
Habilitado No disponible
Longitud de la lista del historial
historyListLengthThresholdCount Activa una captura cuando la longitud de la lista del historial (HLL) de InnoDB supera el valor configurado. Una HLL alta de forma persistente indica que el proceso de purga de InnoDB no puede mantenerse al día y que la cantidad de transacciones no purgadas aumenta, a menudo debido a transacciones de larga duración. Esta gran cantidad puede aumentar el consumo de almacenamiento y generar problemas de rendimiento.

Este umbral depende de la carga de trabajo. Algunas instancias pueden funcionar de manera suficiente incluso con una HLL alta de forma constante. Sin embargo, puedes usar este activador para destacar posibles problemas, como lecturas de larga duración, grandes instrucciones de lenguaje de manipulación de datos (DML) o cuellos de botella de subprocesos de purga.
0 (inhabilitado) 0 o
10000-10000000
Transacciones de larga duración
transactionDurationThreshold Se registra una transacción si se ejecuta durante más tiempo que la duración configurada en segundos. Este activador es útil para identificar operaciones que podrían tener bloqueos durante períodos excesivos o consumir recursos durante demasiado tiempo.

Las transacciones que superan transactionDurationThreshold se evalúan después de cada intervalo especificado en la configuración probingIntervalSeconds (30 segundos de forma predeterminada). Sin embargo, para administrar el volumen de registros, los detalles de hasta 10 de estas transacciones de larga duración se envían a Cloud Logging como máximo una vez por período de inactividad (30 minutos). El texto completo de la consulta de hasta 1,024 bytes de INFORMATION_SCHEMA.INNODB_TRX se incluye en cada entrada de registro para las 10 transacciones principales.
3600 (segundos) 60 o más
Error de subproceso de SQL/IO
de réplica
No configurable Este activador está habilitado de forma predeterminada en todas las instancias de réplica y no se puede inhabilitar. Activa una captura de inmediato si el subproceso de SQL o el subproceso de IO de replicación en una instancia de réplica encuentra algún error y se detiene. Este activador es fundamental para mantener la integridad de la réplica y para identificar fallas de replicación.

Este activador no usa ningún parámetro de configuración de sondeo, como probingIntervalseconds o probeThreshold, para validar las condiciones de captura de rendimiento.
Habilitado No disponible
Subprocesos en ejecución runningThreadsThreshold Activa una captura cuando la cantidad de subprocesos activos en ejecución según la variable de estado threads_running supera el valor especificado. Por ejemplo, puedes configurar el umbral para ejecutar la captura de rendimiento si la cantidad de subprocesos activos en ejecución supera los 100.

Este activador es obligatorio para la captura de rendimiento. Si no configuras este activador de forma explícita, el valor predeterminado se calcula en función de la cantidad de CPU virtuales que pertenecen a la instancia.
MIN(600, cpuCount * 20) 10 o más
Segundos de retraso
en relación con la fuente
secondsBehindSourceThreshold Activa una captura cuando el retraso de la replicación en la instancia de réplica de lectura, medido en segundos, supera el valor especificado. Puedes usar este activador para supervisar y diagnosticar demoras en la replicación. Este activador se habilita automáticamente para las instancias de réplica. Si no configuras el activador de forma explícita, el valor predeterminado es de 900 segundos. Te recomendamos que configures el valor en el extremo superior para evitar capturas excesivas y recuperaciones frecuentes. 900 (segundos) 1 o más
Esperas de semáforo semaphoreWaitThresholdCount Activa una captura cuando la cantidad de subprocesos que esperan en los semáforos internos de InnoDB supera el valor configurado de este activador. Esta métrica avanzada indica la contención, ya sea con un mutex o un bloqueo de lectura y escritura, dentro del motor de almacenamiento de InnoDB. Las contenciones habituales que se observan son la contención del índice hash adaptable (AHI), la contención del grupo de búferes y la contención de IO del disco.

También se activa una captura si el tiempo de espera máximo para cualquier semáforo único supera los 200 segundos, independientemente del valor configurado de este activador.
0 (inhabilitado) 0 o
10-10000
Esperas de bloqueo
de transacciones
transactionLockWaitThresholdCount Activa una captura cuando la cantidad de transacciones en un estado LOCK WAIT supera el recuento configurado. Una pequeña cantidad de transacciones en estado de espera de bloqueo puede ser normal en un sistema ocupado, pero una gran cantidad de esperas de bloqueo de forma constante es un indicador sólido de la contención de bloqueo a nivel de la aplicación, los DML sin indexar, las transacciones inactivas de larga duración y las contenciones de filas de alta simultaneidad que pueden degradar gravemente el rendimiento y la capacidad de procesamiento. 0 (inhabilitado) 0 o
10-10000

Precios

La captura de rendimiento está disponible en todas las regiones de Cloud SQL sin costos adicionales. Los cargos estándar se aplican solo a los recursos de la base de datos subyacentes. La captura de rendimiento almacena registros en Cloud Logging, lo que puede generar costos adicionales de almacenamiento de Cloud Logging.

Para obtener más información sobre los precios del almacenamiento de registros en Logging, consulta Precios.

Limitaciones

  • Debes habilitar Estadísticas de consultas para usar la captura de rendimiento. Si inhabilitas Estadísticas de consultas, también se inhabilita la captura de rendimiento.
  • La captura de rendimiento solo está disponible para Cloud SQL para MySQL 5.7 y versiones posteriores.

¿Qué sigue?