Solucionar problemas de retrasos en las tareas de streaming

En las canalizaciones de streaming, un elemento de trabajo rezagado se define como un elemento de trabajo con las siguientes características:

  • Evita que la marca de agua avance durante un periodo de tiempo considerable (del orden de minutos).
  • Se procesa durante mucho tiempo en comparación con otros elementos de trabajo de la misma fase.

Los paquetes perdidos retrasan la marca de agua y añaden latencia al trabajo. Si la latencia es aceptable para tu caso práctico, no tienes que hacer nada. Si quieres reducir la latencia de un trabajo, empieza por solucionar los problemas de los elementos que se retrasan.

Ver los rezagados de la transmisión 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 rezagados de la emisión en la vista de progreso de la fase o en la vista de flujo de trabajo de la fase.

Ver los participantes que se han quedado atrás según el progreso de la fase

Para ver los rezagados por fase, sigue estos pasos:

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

    Ir a Tareas

  2. Haz clic en el nombre del trabajo.

  3. En la página Detalles del trabajo, haga 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.

    Una captura de pantalla de la vista de progreso de la fase.

  5. Para ver los detalles de una fase, mantén el puntero sobre la barra de esa fase. El panel de detalles incluye un enlace a los registros de los trabajadores. Al hacer clic en este enlace, se abre Cloud Logging con el ámbito del trabajador y el intervalo de tiempo en el que se detectó el retraso.

    Una captura de pantalla de la tarjeta de detalles de los rezagados.

Ver los usuarios que se han quedado atrás por fase del flujo de trabajo

Para ver los usuarios que se han quedado atrás en el flujo de trabajo de las fases, 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 Fase del flujo de trabajo. El flujo de trabajo de la fase muestra las fases de ejecución de la tarea en un gráfico del flujo de trabajo.

    Una captura de pantalla de la vista del flujo de trabajo de la fase.

Solucionar problemas de streaming

Si se detecta un elemento rezagado, significa que una operación de tu canalización se ha estado ejecutando durante un tiempo inusualmente largo.

Para solucionar el problema, primero comprueba si Estadísticas de Dataflow señala algún problema.

Si sigues sin poder determinar la causa, consulta los registros del trabajador de la fase que ha informado del retraso. Para ver los registros de los trabajadores correspondientes, consulta los detalles de los elementos pendientes en el progreso de la fase. A continuación, haz clic en el enlace del trabajador. Este enlace abre Cloud Logging, con el ámbito del trabajador y el intervalo de tiempo en el que se detectó el rezagado. Busca problemas que puedan estar ralentizando la fase, como los siguientes:

  • Errores en el código de DoFn o bloqueo de DoFns. Busca seguimientos de pila en los registros, cerca de la marca de tiempo en la que se detectó el elemento rezagado.
  • Llamadas a servicios externos que tardan mucho en completarse. Para mitigar este problema, realiza llamadas en microlotes a servicios externos y define tiempos de espera en las RPCs.
  • Límites de cuota en los receptores. Si tu flujo de procesamiento genera datos en un servicio, es posible que puedas aumentar la cuota. Google CloudPara obtener más información, consulta la documentación de cuotas de Cloud. Además, consulta la documentación del servicio en cuestión para obtener estrategias de optimización, así como la documentación del conector de E/S.
  • DoFns que realizan operaciones de lectura o escritura de gran tamaño en el estado persistente. Considera la posibilidad de refactorizar tu código para realizar lecturas o escrituras más pequeñas en el estado persistente.

También puedes usar el panel Información lateral para encontrar los pasos más lentos de la fase. Puede que uno de estos pasos sea el que esté causando el retraso. Haz clic en el nombre del paso para ver los registros de los trabajadores de ese paso.

Una vez que hayas determinado la causa, actualiza tu canalización con el nuevo código y monitoriza el resultado.

Siguientes pasos