Resolva problemas com trabalhos em lote lentos ou bloqueados

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

  1. 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 requests
    
  2. Para 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.

  3. Verifique os registos de job-message para detetar problemas como limites de quota, problemas de rutura de stock ou esgotamento de endereços IP.

  4. No separador Detalhes da execução, compare o progresso da fase para identificar as fases que demoraram mais tempo.

  5. Procure eventuais atrasos no trabalho. Para mais informações, consulte o artigo Resolução de problemas de tarefas pendentes em trabalhos em lote.

  6. Verifique as métricas de débito, CPU e utilização de memória.

  7. Verifique se existem avisos e erros nos registos de trabalhadores.

  8. Verifique se existem teclas de atalho.

  9. 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.

  10. 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 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:

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.
    • 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.

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.