Esta página explica como resolver causas comuns de tarefas em lote do Dataflow lentas ou bloqueadas.
Se a tarefa em lote estiver lenta ou bloqueada, use o separador Detalhes da execução para encontrar mais informações sobre a tarefa e identificar a fase ou o trabalhador que está a causar um gargalo.
Identifique a causa principal
Verifique se o trabalho está a ter problemas durante o arranque do trabalhador. Para mais informações, consulte Erro ao sincronizar o pod.
Para verificar se a tarefa começou a processar dados, procure a seguinte entrada de registo no registo job-message:
All workers have finished the startup processes and began to receive work requestsPara comparar o desempenho das tarefas entre diferentes tarefas, certifique-se de que o volume de dados de entrada, a configuração dos trabalhadores, o comportamento da escala automática e as definições do Dataflow Shuffle são iguais.
Verifique os registos de job-message para detetar problemas como limites de quota, problemas de rutura de stock ou esgotamento de endereços IP.
No separador Detalhes da execução, compare o progresso da fase para identificar as fases que demoraram mais tempo.
Procure eventuais atrasos no trabalho. Para mais informações, consulte o artigo Resolução de problemas de tarefas pendentes em trabalhos em lote.
Verifique as métricas de débito, CPU e utilização de memória.
Verifique se existem avisos e erros nos registos de trabalhadores.
- Se os registos do trabalhador contiverem erros, veja o rastreio da pilha. Investigue se o erro é causado por um erro no seu código.
- Procure erros do Dataflow. Consulte o artigo Resolva problemas de erros do Dataflow.
- Procure erros de falta de memória, que podem causar um pipeline bloqueado. Se vir erros de falta de memória, siga os passos descritos no artigo Resolva problemas de erros de falta de memória do Dataflow.
- Para identificar um passo lento ou bloqueado, verifique as mensagens
Operation ongoingnos registos do trabalhador. Veja o rastreio de pilha para ver onde o passo está a gastar tempo. Para mais informações, consulte o artigo Processamento bloqueado ou operação em curso.
Se não estiver a usar o Dataflow Shuffle, verifique os registos do shuffler para ver avisos e erros durante a operação de mistura. Se vir um erro de limite de tempo de RPC na porta 12345 ou 12346, a sua tarefa pode não ter uma regra de firewall. Consulte o artigo Regras de firewall para o Dataflow.
Se o Runner v2 estiver ativado, verifique se existem erros nos registos do arnês. Para mais informações, consulte o artigo Resolva problemas do Runner v2.
Identifique elementos isolados
Um elemento atrasado é um item de trabalho que é lento em relação a outros itens de trabalho na fase. Para obter informações sobre como identificar e corrigir valores atípicos, consulte o artigo Resolva problemas de valores atípicos em tarefas em lote.
Identifique fases lentas ou bloqueadas
Para identificar fases lentas ou bloqueadas, use a vista Progresso da fase. As barras mais longas indicam que a fase demora mais tempo. Use esta vista para identificar os estágios mais lentos no seu pipeline.
Depois de encontrar a fase de estrangulamento, pode seguir os seguintes passos:
- Identifique o trabalhador em atraso nessa fase.
- Se não existirem trabalhadores com atrasos, identifique o passo mais lento através do painel Informações da fase. Use estas informações para identificar candidatos à otimização do código do utilizador.
- Para encontrar gargalos de paralelismo, use as métricas de monitorização do Dataflow.
Identifique um trabalhador com desempenho inferior
Para identificar um trabalhador com atraso numa fase específica, use a vista Progresso do trabalhador. Esta vista mostra se todos os trabalhadores estão a processar o trabalho até ao final da fase ou se um único trabalhador está bloqueado numa tarefa com atraso. Se encontrar um trabalhador com atraso, siga estes passos:
- Veja os ficheiros de registo desse trabalhador. Para mais informações, consulte o artigo Monitorize e veja registos de pipelines.
- Veja as métricas de utilização da CPU e os detalhes do progresso do trabalhador para trabalhadores com atraso. Se vir uma utilização da CPU invulgarmente alta ou baixa, nos ficheiros de registo desse trabalhador, procure os seguintes problemas:
Ferramentas para depuração
Quando tem um pipeline lento ou bloqueado, as seguintes ferramentas podem ajudar a diagnosticar o problema.
- Para correlacionar incidentes e identificar gargalos, use o Cloud Monitoring para o Dataflow.
- Para monitorizar o desempenho do pipeline, use o Cloud Profiler.
- Algumas transformações são mais adequadas para pipelines de grande volume do que outras. As mensagens de registo podem identificar uma transformação de utilizador bloqueada em pipelines de processamento em lote ou de streaming.
- Para saber mais sobre uma tarefa bloqueada, use as métricas de tarefas do Dataflow.
A lista seguinte inclui métricas úteis:
- A métrica Bytes pendentes (
backlog_bytes) mede a quantidade de entrada não processada em bytes por fase. Use esta métrica para encontrar um passo fundido que não tenha débito. Da mesma forma, a métrica de elementos pendentes (backlog_elements) mede o número de elementos de entrada não processados para 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 esta métrica para investigar das seguintes formas:- Restrinja o problema a fases específicas e confirme os avisos de teclas de atalho, como
A hot key ... was detected. - Encontre restrições de débito causadas por paralelismo insuficiente. Estes gargalos podem resultar em pipelines lentos ou bloqueados.
- Restrinja o problema a fases específicas e confirme os avisos de teclas de atalho, como
- A métrica Atraso do sistema (
system_lag) e a métrica de atraso do sistema por fase (per_stage_system_lag) medem a quantidade máxima de tempo que um item de dados está a ser processado ou a aguardar processamento. Use estas métricas para identificar fases ineficientes e gargalos das origens de dados.
- A métrica Bytes pendentes (
Para métricas adicionais que não estão incluídas na interface Web de monitorização do Dataflow, consulte a lista completa de métricas do Dataflow nas métricas da Google Cloud Platform.