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á enfrentando 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 no registro job-message a seguinte entrada de registro:
All workers have finished the startup processes and began to receive work requests
Para comparar o desempenho de diferentes jobs, verifique se o volume de dados de entrada, a configuração do worker, o comportamento de escalonamento automático e as configurações do Dataflow Shuffle são os mesmos.
Verifique os registros de job-message para problemas como limites de cota, falta de estoque ou esgotamento de endereços IP.
Na guia Detalhes da execução, compare o progresso da etapa para identificar as que levaram mais tempo.
Procure por fios restantes no job. Para mais informações, consulte Resolver problemas de stragglers em jobs em lote.
Verifique as métricas de capacidade, CPU e utilização da 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. Confira 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 as mensagens
Operation ongoing
nos registros do worker. Confira o stack trace para saber onde a etapa está gastando tempo. Para mais informações, consulte Processamento travado ou operação em andamento.
Se você não estiver usando o Dataflow Shuffle, verifique os registros do shuffler para 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 de harness para 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. As barras mais longas indicam que o estágio 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 à otimização do código do usuário.
- Para encontrar gargalos de paralelismo, use as métricas de monitoramento do Dataflow.
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:
- Confira os arquivos de registro desse worker. Para mais informações, consulte Monitorar e visualizar registros de pipeline.
- Confira 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 registros deste worker os seguintes problemas:
Ferramentas para depuração
Quando um pipeline está 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 o 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 de job do Dataflow.
A lista a seguir tem métricas úteis:
- A métrica Bytes de backlog (
backlog_bytes
) mede a quantidade de entrada não processada em bytes por fase. Use essa métrica para encontrar uma etapa combinada que não tenha capacidade de processamento. Da mesma forma, a métrica de elementos do backlog (backlog_elements
) mede o número de elementos de entrada não processados de uma fase. - A métrica Chaves de paralelismo de processamento (
processing_parallelism_keys
) mede o número de chaves de processamento paralelo para uma fase específica do pipeline nos últimos cinco minutos. Use essa métrica para investigar das seguintes maneiras:- Restrinja o problema a fases específicos e confirme os avisos de teclas de atalho, como
A hot key ... was detected
. - Encontre gargalos de capacidade de processamento causados por paralelismo insuficiente. Esses gargalos podem resultar em pipelines lentos ou travados.
- Restrinja o problema a fases específicos e confirme os avisos de teclas de atalho, como
- A métrica de atraso do sistema (
system_lag
) e a métrica de atraso do sistema por fase (per_stage_system_lag
) medem o tempo máximo que um item de dados ficou em processamento ou aguardando processamento. Use essas métricas para identificar fases e gargalos ineficientes das fontes de dados.
- A métrica Bytes de backlog (
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 Métricas do Google Cloud Platform.