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
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
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.
Verifica los registros de job-message para detectar problemas, como límites de cuota, problemas de falta de stock o agotamiento de la dirección IP.
En la pestaña Detalles de ejecución, compara el progreso de la etapa para identificar las etapas que tardaron más.
Busca cualquier rezagado en el trabajo. Para obtener más información, consulta Solución de problemas de rezagados en trabajos por lotes.
Verifica las métricas de capacidad de procesamiento, CPU y uso de memoria.
Revisa los registros del trabajador para detectar advertencias y errores.
- Si los registros del trabajador contienen errores, consulta el seguimiento de pila. Investiga si el error se debe a un bug en tu código.
- Busca errores de Dataflow. Consulta Soluciona errores de Dataflow.
- Busca errores de memoria insuficiente, que pueden provocar que la canalización se detenga. Si ves errores de memoria insuficiente, sigue los pasos que se indican en Soluciona problemas de errores de memoria insuficiente de Dataflow.
- Para identificar un paso lento o atascado, verifica los registros del trabajador en busca de mensajes de
Operation ongoing
. Consulta el seguimiento de pila para ver dónde se detiene el paso. Para obtener más información, consulta Procesamiento atascado o en curso.
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.
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 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.
- Para detectar cuellos de botella de paralelismo, usa las métricas de supervisión de Dataflow.
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:
- Consulta los archivos de registro de ese trabajador. Para obtener más información, consulta Supervisa y visualiza los registros de canalización.
- Consulta las métricas de uso de CPU y los detalles de progreso del trabajador para los trabajadores atrasados. Si ves un uso de CPU inusualmente alto o bajo, en los archivos de registro de ese trabajador, busca los siguientes problemas:
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.
- Limita el problema a etapas específicas y confirma las advertencias de claves de acceso rápido, como
- 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.
- La métrica Bytes de tareas pendientes (
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 la página sobre métricas de Google Cloud Platform.