Nesta página, explicamos como resolver problemas comuns de jobs em lote lentos ou travados do Dataflow.
Se o job em lote estiver lento ou travado, use a guia Detalhes da execução para encontrar mais informações sobre o job e identificar a fase ou worker que está causando um gargalo.
Identificar a causa raiz
Verifique se o job está apresentando problemas durante a inicialização do worker. Para mais informações, consulte Erro ao sincronizar o pod.
Para verificar se o job começou a processar dados, procure a seguinte entrada de registro no registro de mensagens do job:
All workers have finished the startup processes and began to receive work requestsPara comparar o desempenho de jobs diferentes, verifique se o volume de dados de entrada, a configuração do worker, o comportamento do escalonamento automático e as configurações do Dataflow Shuffle são os mesmos.
Verifique os registros de mensagens do job para problemas como limites de cota, problemas de falta de estoque ou esgotamento de endereços IP.
Na guia Detalhes da execução, compare o progresso da fase para identificar as fases que levaram mais tempo.
Procure stragglers no job. Para mais informações, consulte Resolver problemas de stragglers em jobs em lote.
Verifique as métricas de capacidade de processamento, CPU e utilização de memória.
Verifique os registros do worker em busca de avisos e erros.
- Se os registros do worker contiverem erros, consulte o stack trace. Investigue se o erro é causado por um bug no código.
- Procure erros do Dataflow. Consulte Resolver erros do Dataflow.
- Procure erros de falta de memória, que podem causar um pipeline travado. Se você encontrar erros de falta de memória, siga as etapas em Resolver erros de falta de memória do Dataflow.
- Para identificar uma etapa lenta ou travada, verifique os registros do worker em busca de mensagens
Operation ongoing. Consulte o stack trace para ver onde a etapa está gastando tempo. Para mais informações, consulte Processamento travado ou operação em andamento.
Se você não estiver usando Dataflow Shuffle, verifique os registros do shuffler em busca de avisos e erros durante a operação de embaralhamento. Se você encontrar um erro de tempo limite de RPC na porta 12345 ou 12346, talvez o job esteja sem uma regra de firewall. Consulte Regras de firewall para o Dataflow.
Se o Runner v2 estiver ativado, verifique os registros do harness em busca de erros. Para mais informações, consulte Resolver problemas do Runner v2.
Identificar stragglers
Um straggler é um item de trabalho lento em relação a outros itens de trabalho da fase. Para saber mais sobre como identificar e corrigir stragglers, consulte Resolver problemas de stragglers em jobs em lote.
Identificar fases lentas ou travadas
Para identificar fases lentas ou travadas, use a visualização Progresso da fase. Barras mais longas indicam que a fase leva mais tempo. Use essa visualização para identificar as fases mais lentas do pipeline.
Depois de encontrar a fase de gargalo, siga estas etapas:
- Identifique o worker com atraso nessa fase.
- Se não houver workers com atraso, use o painel Informações da fase para identificar a etapa mais lenta. Use essas informações para identificar candidatos para a otimização do código do usuário.
Identifique um worker com atraso
Para identificar um worker com atraso de uma fase específica, use a visualização Progresso do worker. Essa visualização mostra se todos os workers estão processando o trabalho até o final da fase ou se um único worker está parado em uma tarefa atrasada. Se você encontrar um worker com atraso, siga as etapas a seguir:
- Consulte os arquivos de registro desse worker. Para mais informações, consulte Monitorar e visualizar registros de pipeline.
- Consulte as métricas de utilização da CPU e os detalhes do progresso do worker para workers com atraso. Se você perceber uma utilização de CPU excepcionalmente alta ou baixa, procure nos arquivos de registro desse worker os seguintes problemas:
Ferramentas para depuração
Quando você tem um pipeline lento ou travado, as ferramentas a seguir podem ajudar a diagnosticar o problema.
- Para correlacionar incidentes e identificar gargalos, use o Cloud Monitoring para Dataflow.
- Para monitorar a performance do pipeline, use Cloud Profiler.
- Algumas transformações são mais adequadas para pipelines de alto volume do que outras. As mensagens de registro podem identificar uma transformação de usuário travada em pipelines em lote ou de streaming.
- Para saber mais sobre um job travado, use as métricas do job do Dataflow.
Para conferir outras métricas não incluídas na interface da Web de monitoramento do Dataflow, consulte a lista completa de métricas do Dataflow em Google Cloud Métricas.