Solucionar problemas de retrasos en tareas por lotes

Los elementos de trabajo rezagados son elementos que ralentizan las tareas de Dataflow porque impiden que se realicen en paralelo.

En las canalizaciones por lotes, un elemento rezagado es un elemento de trabajo que tiene las siguientes características:

  • Se tarda mucho más en completar que otros elementos de trabajo de la misma fase.
  • Reduce el paralelismo en la fase.
  • Impide que se inicie un nuevo trabajo.

En el peor de los casos, un rezagado impide que se complete una fase porque un pequeño porcentaje del trabajo está en curso, lo que provoca retrasos generales en un trabajo.

Dataflow detecta los elementos que se retrasan durante las tareas por lotes. Si Dataflow detecta un elemento rezagado, también intenta determinar la causa.

Ver los elementos aislados en la consola Google Cloud

Una vez que hayas iniciado una tarea de Dataflow, puedes usar la Google Cloud consola para ver los elementos que se hayan quedado atrás.

Puedes ver los elementos que se han quedado atrás por fase o por trabajador. Usa estas vistas para identificar las fases en las que hay elementos de trabajo que se han quedado atrás y, a continuación, localiza los trabajadores en los que se han producido esos retrasos en cada fase.

Ver los rezagados por fase

Para ver los participantes que se han quedado atrás en cada fase, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Trabajos de Dataflow.

    Ve a Tareas.

  2. Haz clic en el nombre del trabajo.

  3. En la página de detalles del trabajo, haz clic en la pestaña Detalles de la ejecución.

  4. En la lista Vista de gráfico, selecciona Progreso de la fase. El gráfico de progreso muestra los recuentos agregados de todos los elementos que se han quedado atrás en cada fase.

  5. Para ver los detalles de una fase, mantén el puntero sobre la barra correspondiente. Para ver los trabajadores de la fase, haz clic en Ver trabajadores en el panel de detalles.

Ver los retrasos por trabajador

Para ver los rezagados por trabajador, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Trabajos de Dataflow.

    Ve a Tareas.

  2. Haz clic en el nombre del trabajo.

  3. En la página de detalles del trabajo, haz clic en la pestaña Detalles de la ejecución.

  4. En la lista Vista de gráfico, selecciona Progreso de los trabajadores.

  5. En la lista Filtrar trabajadores por fase, selecciona la fase. El gráfico de progreso muestra los retrasos detectados en esa fase. La barra tiene un tono más oscuro en el punto en el que se detectó por primera vez el elemento rezagado.

  6. Para ver los detalles de un trabajador, coloca el puntero sobre la barra correspondiente.

En el panel Información de la fase, la sección Detalles de los rezagados muestra los rezagados de todos los trabajadores que aparecen en la página, junto con la siguiente información:

  • Hora de inicio en la que se detectó el rezagado.
  • El trabajador que ha experimentado el retraso.
  • La causa, si se conoce.

Solucionar problemas de retrasos en lotes

Dataflow detecta las siguientes causas de retrasos en los flujos de procesamiento por lotes:

  • Tecla de acceso rápido. Una tecla de acceso rápido es una tecla que representa muchos más elementos que otras teclas del mismo PCollection. Para obtener más información, consulta el artículo Solucionar problemas de retrasos causados por teclas de acceso rápido de este documento.

  • Trabajador lento. En un trabajador lento, los elementos de trabajo se ejecutan más despacio de lo habitual. A menudo, la velocidad de procesamiento de un trabajador lento es inferior a la de los trabajadores que realizan un trabajo similar en la misma fase. Hay muchos factores que pueden provocar que los trabajadores vayan lentos, como la falta de recursos de CPU, el thrashing, la arquitectura de la máquina y los procesos de los trabajadores bloqueados. Cuando se produce una ralentización, Dataflow intenta mitigar el problema automáticamente. Para obtener más información, consulta Mitigar automáticamente los retrasos causados por trabajadores lentos en este documento.

  • Causa indeterminada. Si no se determina la causa de los retrasos, consulta los pasos generales para solucionar problemas de tareas por lotes lentas en "Solucionar problemas de tareas lentas o bloqueadas".

Solucionar problemas de retrasos causados por las teclas de acceso rápido

Hay varios factores que pueden provocar que se produzcan retrasos, pero una causa habitual es la existencia de una tecla de acceso rápido. Una tecla de acceso rápido es una tecla que representa muchos más elementos que otras teclas del mismo PCollection. Las claves activas pueden crear elementos rezagados porque limitan la capacidad de Dataflow para procesar elementos en paralelo.

Si Dataflow detecta un elemento rezagado provocado por una clave activa, el panel Detalles del elemento rezagado mostrará Hot Key como causa.

De forma predeterminada, Dataflow no muestra el valor de la clave de la clave activa. Para mostrar el valor de la clave, asigna el valor true a la opción de canalización hotKeyLoggingEnabled cuando ejecutes el trabajo.

Para solucionar este problema, compruebe que sus datos estén distribuidos de forma uniforme. Si una clave tiene un número de valores desproporcionado, puedes hacer lo siguiente:

Por ejemplo, si una canalización realiza una operación JOIN como parte de una transformación de SQL, es probable que una clave determinada contenga una cantidad desproporcionada de datos cuando se introduzca en la GroupByKey que se realiza como parte de la operación JOIN ampliada.

Para obtener más información, consulta la siguiente solicitud de función: beam-issue/28186.

Mitiga automáticamente los retrasos causados por trabajadores lentos

Los trabajadores lentos no son habituales en Dataflow, pero pueden afectar al rendimiento de los trabajos. Para evitar problemas de rendimiento, cuando Dataflow detecta trabajadores lentos, intenta mitigar el problema antes de que los trabajadores provoquen retrasos.

La mitigación automática simula un evento de mantenimiento del host. El evento es un mecanismo de mantenimiento de Compute Engine que se produce periódicamente. En función de la política de mantenimiento del host del trabajador, este se migra en directo o se reinicia. Si se produce una migración en directo, la carga de trabajo no se interrumpe. Si se reinicia el trabajador, se pierde el trabajo en curso del trabajador lento y se reinicia el procesamiento.

Si se detecta un trabajador lento y se mitiga correctamente, se mostrará el siguiente mensaje en los registros de job-message:

Slow worker ... detected and automatically remediated ...

Como los trabajadores lentos no son rezagados, no es necesario que hagas nada más.

Si la mitigación no tiene éxito, el trabajador lento provoca un retraso que se muestra en la interfaz de monitorización de Dataflow.

La mitigación automática puede fallar si tu proyecto se queda sin cuota para las solicitudes de simulación de eventos de mantenimiento de instancias. Para obtener más información sobre la cuota predeterminada, consulta Límites de frecuencia de las APIs de métricas regionales en "Cuotas de uso de recursos y gestión de permisos". Para solicitar un aumento de cuota, consulta la sección Solicitar un ajuste de cuota del artículo "Ver y gestionar cuotas".

Siguientes pasos