Estadísticas de subprocesos múltiples – Blog de rendimiento de base de datos de Percona

En esta publicación de blog, hablaré sobre las estadísticas de esclavos de subprocesos múltiples impresas en el archivo de registro de errores de MySQL.

MySQL versión 5.6 y posteriores le permiten ejecutar eventos replicados con subprocesos paralelos. Esta característica se llama Multi-Threaded Slave (MTS), y para activarla, debe modificarla
trabajadores_paralelos_esclavos variable a un valor mayor que 1.

Recientemente, algunos clientes han cuestionado la importancia de algunas estadísticas nuevas impresas en sus archivos de registro de errores al activar MTS. Estos mensajes de error son similares al siguiente ejemplo:

El manual de referencia de MySQL no muestra ninguna información sobre estas estadísticas. Completé un informe de error pidiéndole a Oracle que agregara información sobre estas estadísticas en la documentación de MySQL. También reporté este error #85747.

Antes de actualizar la documentación, podemos usar el código MySQL para comprender mejor el significado de las estadísticas. También podemos determinar cuántas veces se imprimen estas estadísticas en el archivo de registro de errores. Mirando el archivo rpl_slave.cc, encontramos que cuando habilita MTS, y la variable de advertencias de registro es mayor que 1 (log-error-verbosidad mayor que 2 para MySQL 5.7), es el momento de imprimir estas estadísticas en el registro MySQL el error es de 120 segundos. Está determinado por un número codificado constante. El siguiente código muestra esto:

¿Significa esto que cada 120 segundos MTS imprime estadísticas en su registro de errores de MySQL (si está habilitado)? La respuesta es no. MTS imprime estadísticas en el periodo mencionado según el nivel de actividad de tu esclavo. La siguiente línea en el código MySQL verifica el nivel de actividad del esclavo para imprimir estadísticas:

Del código anterior, necesita MTS habilitado y la operación del módulo entre
mts_events_asignado variables y 1024 igual a 1 en orden de foto tu Estadísticas. tu
mts_events_asignado variable almacena el número de eventos asignados a la fila paralela. Si está replicando un nivel bajo de eventos, o no los está replicando en absoluto, MySQL no imprimirá las estadísticas en el registro de errores. Por otro lado, si replicas una gran cantidad de eventos todo el tiempo, y el
mts_events_asignado ha aumentado su valor hasta que el resto de la división entre esta variable y 1024 es 1, MySQL imprime estadísticas de MTS en el registro de errores casi cada 120 segundos.

Puede encontrar la explicación de estas estadísticas a continuación (recopiladas de la información en el código fuente):

  1. La línea de trabajadores se llenó por encima del nivel superior.: MTS tiende a cargar eventos equilibrados entre todos los trabajadores paralelos, y el
    trabajadores_paralelos_esclavos variable determina el número de trabajadores. Esta estadística muestra el nivel de saturación que sufren los trabajadores. Si una cola de trabajos paralelos está casi llena, este contador se incrementa y el evento de replicación de trabajos se retrasa para evitar alcanzar los límites de la cola de trabajos.
  2. Esperado debido a una línea completa de trabajo: Esta estadística aumenta cuando el subproceso del coordinador tiene que esperar a que la cola de los trabajadores lo sepa.
  3. Esperado debido al tamaño total: esta estadística muestra la cantidad de veces que el subproceso del coordinador duerme para alcanzar el límite de memoria disponible en la fila de trabajo para evitar que se apliquen los eventos. Si esta estadística continúa aumentando cuando se imprime en su registro de errores de MySQL, debe cambiar su tamaño.
    slave_pending_jobs_size_max variable a un valor más alto para evitar el tiempo de espera del subproceso coordinador.
  4. Conflictos de reloj esperados: En caso de posibles dependencias entre transacciones, esta estadística muestra el tiempo de espera correspondiente a la detección y resolución del conflicto de sello de tiempo lógico.
  5. Esperado (cuenta) cuando se usa ocupado: Un contador de cuantas veces el coordinador ha visto trabajadores llenos de “bastante” con asignaciones. La definición depende bastante del tipo de programador (por base de datos o basado en reloj).
  6. Esperando a que lleguen los trabajadores: Estas son estadísticas para calcular el tiempo de espera del cable del coordinador para cualquier trabajador disponible y se aplican solo al programador de reloj de confirmación.
Conclusiones

El esclavo de subprocesos múltiples es una característica interesante que le permite replicar eventos más rápidamente y mantenerlos sincronizados con la instancia maestra. Al cambiar la variable de advertencias de registro a un valor superior a 1, puede obtener información del archivo de registro de errores del esclavo sobre el rendimiento de subprocesos múltiples.

Author: Ing. Luis

A lo largo de conocer Windows y otros sistemas operativos me eh encontrado con diversos tipos de error, ahora brindo soluciones según mi experiencia-

Deja un comentario