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. Comprueba 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 job-message:

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

  3. Verifica los registros de job-message para detectar problemas, como límites de cuota, problemas de falta de stock o agotamiento de direcciones IP.

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

  5. Busca cualquier rezagado 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, consulta los registros del mezclador para ver las advertencias y los errores durante la operación de mezcla. 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, verifica los registros de harness para detectar errores. Si deseas 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 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 correlacionar incidentes y, también, identificar cuellos de botella, usa Cloud Monitoring para Dataflow.
  • Para supervisar el rendimiento de la canalización, usa Cloud Profiler.
  • Algunas transformaciones son más adecuadas para canalizaciones de gran volumen que otras. Los mensajes de registro pueden identificar una transformación de usuario atascado en canalizaciones por lotes o de transmisión.
  • Para obtener más información sobre un trabajo atascado, usa las métricas del trabajo de Dataflow. En la siguiente lista, se incluyen métricas útiles:
    • La métrica Bytes de tareas pendientes (backlog_bytes) mide la cantidad de entradas sin procesar en bytes por etapa. Usa esta métrica para encontrar un paso fusionado que no tenga capacidad de procesamiento. De manera similar, la métrica de elementos pendientes (backlog_elements) mide la cantidad de elementos de entrada no procesados de una etapa.
    • La métrica Procesa claves de paralelismo (processing_parallelism_keys) mide la cantidad de claves de procesamiento paralelo para una etapa en particular de la canalización durante los últimos cinco minutos. Usa esta métrica para investigar de las siguientes maneras:
      • Limita el problema a etapas específicas y confirma las advertencias de claves de acceso rápido, como A hot key ... was detected.
      • Detecta cuellos de botella de capacidad de procesamiento causados por un paralelismo insuficiente. Estos cuellos de botella pueden provocar canalizaciones lentas o atascadas.
    • La métrica Retraso del sistema (system_lag) y la métrica Retraso del sistema por etapa (per_stage_system_lag) miden la cantidad máxima de tiempo que se procesa un elemento de datos. o en espera de procesamiento. Usa estas métricas para identificar etapas ineficaces y cuellos de botella en las fuentes de datos.

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 las métricas deGoogle Cloud .