Soluciona problemas de demora en trabajos por lotes

Los rezagados son elementos de trabajo que impiden que el trabajo de Dataflow se realice en paralelo y lo ralentiza.

En el caso de las canalizaciones por lotes, un rezagado se define como un elemento de trabajo con las siguientes características:

  • Se tarda mucho más tiempo en completarse en comparación con otros elementos de trabajo de la misma etapa.
  • Reduce el paralelismo dentro de la etapa.
  • Bloquea el inicio de un trabajo nuevo.

En el peor de los casos, un retraso demora la finalización de una etapa porque un pequeño porcentaje del trabajo está en progreso, lo que causa retrasos generales en un trabajo.

Dataflow detecta retrasos que se producen durante los trabajos por lotes. Si Dataflow detecta una demora, también intenta determinar la causa de esta demora.

Visualiza los rezagados en la consola de Google Cloud

Después de iniciar un trabajo de Dataflow, puedes usar la consola de Google Cloud para ver los retrasos demorados.

Puedes ver los demorados por etapa o por trabajador. Usa estas vistas para encontrar qué etapas tienen demora y, luego, identifica a los trabajadores en los que ocurrieron las demoraciones dentro de cada etapa.

Ver demorados por etapa

Para ver las demoras por etapa, sigue estos pasos:

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

    Ve a Trabajos

  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 Graph view, selecciona Stage stage. En el gráfico de progreso, se muestran los recuentos agregados de todas las demoras detectadas en cada etapa.

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

Ver demorados por trabajador

Para ver los demorados por trabajador, haz lo siguiente:

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

    Ve a Trabajos

  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 del trabajador.

  5. En la lista Filtrar trabajadores por etapa (Filter trabajadores por etapa), selecciona la etapa. En el gráfico de progreso, se muestra cualquier demora que se detecte para esa etapa. La barra tiene un sombreado más oscuro en el punto en el que se detectó por primera vez la demora.

  6. Para ver los detalles de un trabajador, mantén el puntero sobre la barra de ese trabajador.

En el panel Información de la etapa, la sección Detalles de la etapa enumera las demoras de todos los trabajadores que se muestran en la página, con la siguiente información:

  • La hora de inicio en la que se detectó el retraso.
  • El trabajador que experimentó la demora.
  • La causa, si se conoce.

Soluciona problemas de rezagados por lotes

Dataflow detecta las siguientes causas de los rezagados en las canalizaciones por lotes:

  • Tecla de acceso rápido. Una clave activa es una clave que representa muchos más elementos que otras en la misma PCollection. Para obtener más información, consulta Solución de problemas de demora demorados por claves de acceso rápido en este documento.

  • Trabajador lento. En un trabajador lento, los elementos de trabajo se ejecutan más lento de lo normal. A menudo, la velocidad de procesamiento de un trabajador lento es menor que la velocidad de procesamiento de los trabajadores que realizan trabajos similares en la misma etapa. Muchos factores pueden causar lentitud de los trabajadores, incluida la escasez de CPU, la hiperpaginación, la arquitectura de máquina y los procesos de trabajador atascados. Cuando se produce una lentitud, Dataflow intenta mitigar el problema de forma automática. Para obtener más información, consulta Mitiga automáticamente los rezagados causados por trabajadores lentos en este documento.

  • Causa indefinida. Para los demoradores con causa indeterminada, consulta los pasos generales de solución de problemas para trabajos por lotes lentos en "Soluciona problemas de trabajos lentos o atascados".

Soluciona problemas demorados causados por las teclas de acceso rápido

Varios factores pueden causar retrasos, pero una causa común es la existencia de una clave activa. Una clave de acceso rápido es una clave que representa muchos más elementos que otras claves en el mismo PCollection. Las claves de acceso rápido pueden crear retrasos que limitan la capacidad de Dataflow de procesar elementos en paralelo.

Si Dataflow detecta una demora que se debe a una clave de acceso rápido, en el panel Detalles de demora se muestra la causa Hot Key.

De forma predeterminada, Dataflow no muestra el valor de la clave de acceso rápido. Para mostrar el valor de la clave, configura la opción de canalización hotKeyLoggingEnabled en true cuando ejecutes el trabajo.

Para resolver este problema, verifica que tus datos estén distribuidos de manera uniforme. Si una clave tiene muchos valores de forma desproporcionada, considera las siguientes medidas:

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 incorporan a la GroupByKey que se realiza como parte de la operación JOIN expandida.

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

Mitiga automáticamente los rezagados causados por trabajadores lentos

Los trabajadores lentos no son comunes en Dataflow, pero pueden afectar el rendimiento del trabajo. Para evitar problemas de rendimiento, cuando Dataflow detecta trabajadores lentos, intenta mitigar el problema antes de que los trabajadores causen demoras.

La mitigación automática simula un evento de mantenimiento del host. El evento es un mecanismo de mantenimiento de Compute Engine que ocurre con regularidad. Según la política de mantenimiento del host del trabajador, este se migra en vivo o se reinicia. Si se produce una migración en vivo, la carga de trabajo no se interrumpe. Si se reinicia el trabajador, se pierde el trabajo en curso del trabajador lento y se reinicia.

Si se detecta un trabajador lento y se mitiga de forma correcta, el siguiente mensaje se muestra en los registros job-message:

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

Como los trabajadores lentos no son rezagados, no es necesario que realicen ninguna acción.

Si la mitigación no tiene éxito, el trabajador lento genera una demora que se muestra en la interfaz de supervisión de Dataflow.

La mitigación automática puede fallar si tu proyecto se queda sin cuota para instancias de eventos de mantenimiento simulados de instancia. Si deseas obtener más información de la cuota predeterminada, consulta Límites de frecuencia de la API para métricas regionales en "Cuotas de uso de recursos y administración de permisos". Para solicitar un límite de cuota más alto, consulta Solicita un límite de cuota más alto en "Visualiza y administra las cuotas".

¿Qué sigue?