Soluciona problemas de trabajos por lotes lentos o atascados

En esta página, se explica cómo solucionar las causas comunes de trabajos por lotes de Dataflow lentos o atascados.

Si tu trabajo por lotes es lento o está bloqueado, usa la pestaña Detalles de la ejecución para encontrar más información sobre el trabajo y, también, identificar la etapa o el trabajador que genera un cuello de botella.

Identifica la causa raíz

  1. Verifica si el trabajo tiene problemas durante el inicio del trabajador. Para obtener más información, consulta Error de sincronización del pod.

    Para verificar que el trabajo haya comenzado a procesar datos, busca la siguiente entrada de registro en el registro de mensajes del trabajo:

    All workers have finished the startup processes and began to receive work requests
    
  2. Para comparar el rendimiento del trabajo entre diferentes trabajos, asegúrate de que el volumen de datos de entrada, la configuración del trabajador, el comportamiento de ajuste de escala automático y la configuración de Dataflow Shuffle sean los mismos.

  3. Revisa los registros de mensajes del trabajo para detectar problemas como límites de cuota, problemas de falta de stock o agotamiento de la dirección IP.

  4. En la pestaña Detalles de la ejecución, compara el progreso de la etapa para identificar las etapas que tardaron más.

  5. Busca rezagados en el trabajo. Para obtener más información, consulta Solución de problemas de rezagados en trabajos por lotes.

  6. Verifica las métricas de capacidad de procesamiento, CPU y uso de memoria.

  7. Revisa los registros del trabajador para detectar advertencias y errores.

  8. Verifica las teclas de acceso rápido.

  9. Si no usas Dataflow Shuffle, revisa los registros de shuffler para detectar advertencias y errores durante la operación de shuffle. Si ves un error de tiempo de espera de RPC en el puerto 12345 o 12346, es posible que a tu trabajo le falte una regla de firewall. Consulta Reglas de firewall para Dataflow.

  10. Si Runner v2 está habilitado, revisa los registros de harness para detectar errores. Para obtener más información, consulta Soluciona problemas de Runner v2.

Identifica los rezagados

Un retraso es un elemento de trabajo que es lento en relación con otros elementos de trabajo en la etapa. Para obtener información sobre cómo identificar y corregir rezagados, consulta Solución de problemas de los rezagados en trabajos por lotes.

Identifica etapas lentas o bloqueadas

Para identificar etapas lentas o atascadas, usa la vista Progreso de la etapa. Las barras más largas indican que la etapa tarda más tiempo. Usa esta vista para identificar las etapas más lentas en tu canalización.

Después de encontrar la etapa de cuello de botella, puedes seguir los siguientes pasos:

  • Identifica el trabajador atrasado dentro de esa etapa.
  • Si no hay trabajadores atrasados, identifica el paso más lento mediante el panel Información de la etapa. Usa esta información a fin de identificar candidatos para la optimización del código de usuario.

Identifica a un trabajador que se retrasa

Para identificar a un trabajador atrasado en una etapa específica, usa la vista Progreso del trabajador. En esta vista, se muestra si todos los trabajadores están procesando el trabajo hasta el final del escenario o si un solo trabajador está atascado en una tarea de retraso. Si encuentras un trabajador atrasado, sigue estos pasos:

Herramientas para la depuración

Cuando tienes una canalización lenta o atascada, las siguientes herramientas pueden ayudarte a diagnosticar el problema.

Para obtener métricas adicionales que no están incluidas en la interfaz web de supervisión de Dataflow, consulta la lista completa de métricas de Dataflow en Google Cloud métricas.