Resolver problemas de retardatários em jobs de streaming

Para canais de streaming, um straggler é definido como um item de trabalho com as seguintes características:

  • Ela impede que a marca d'água avance por um período significativo (por volta de minutos).
  • Ele é processado por muito tempo em relação a outros itens de trabalho no mesmo estágio.

Os retardatários impedem a marca d'água e adicionam latência ao job. Se o atraso for aceitável para seu caso de uso, você não precisará fazer nada. Se você quiser reduzir a latência de um job, comece resolvendo os retardatários.

Veja os retardatários de streaming no Console do Google Cloud

Depois de iniciar um job do Dataflow, você pode usar o console do Google Cloud para visualizar os stragglers detectados.

É possível ver os retardatários de streaming na visualização de progresso do estágio ou na visualização do fluxo de trabalho do estágio.

Ver retardatários por progresso no estágio

Para visualizar os retardatários por progresso de estágio:

  1. No console do Google Cloud, acesse a página Jobs do Dataflow.

    Acessar "Jobs"

  2. Clique no nome do job.

  3. Na página Detalhes do job, clique na guia Detalhes da execução.

  4. Na lista Visualização de gráfico, selecione Progresso do estágio. O gráfico de progresso mostra contagens agregadas de todos os stragglers detectados em cada estágio.

    Uma captura de tela da visualização de progresso do cenário.

  5. Para ver os detalhes de um cenário, mantenha o ponteiro do mouse sobre a barra do cenário. O painel de detalhes inclui um link para os registros do worker. Clicar neste link abre o Cloud Logging com escopo para o worker e o intervalo de tempo em que o retardatário foi detectado.

    Captura de tela do card de detalhes do retardatário.

Ver retardatários por fluxo de trabalho do estágio

Para visualizar os retardatários por fluxo de trabalho do estágio:

  1. No console do Google Cloud, acesse a página Jobs do Dataflow.

    Acesse Jobs

  2. Clique no nome do job.

  3. Na página de detalhes do job, clique na guia Detalhes da execução.

  4. Na lista Visualização de gráfico, selecione Progresso do estágio. O Fluxo de trabalho do estágio mostra os estágios de execução do job, representados como um gráfico de fluxo de trabalho.

    Uma captura de tela da visualização do fluxo de trabalho do cenário.

Resolver problemas de retardatários de streaming

Se um retardatário for detectado, isso significa que uma operação no pipeline está em execução há muito tempo.

Para solucionar o problema, primeiro verifique se os insights do Dataflow identificam os problemas.

Se ainda não for possível determinar a causa, verifique nos registros do worker o estágio que relatou o retardatário. Para ver os registros de worker relevantes, veja os detalhes do retardatário no progresso do estágio. Em seguida, clique no link do worker. Esse link abre o Cloud Logging, com escopo para o worker e o período em que o retardatário foi detectado. Procure problemas que possam estar deixando o cenário mais lento, como:

  • Bugs no código DoFn ou travado DoFns. Procure rastreamentos de pilha nos registros, próximos ao carimbo de data/hora em que o retardatário foi detectado.
  • Chamadas para serviços externos que levam muito tempo para serem concluídas Para atenuar esse problema, faça chamadas em lote para serviços externos e defina tempos limite em RPCs.
  • Limites de cota em coletores. Se o pipeline for enviado para um serviço do Google Cloud, talvez seja possível aumentar a cota. Para mais informações, consulte Trabalhar com sub-redes. Além disso, consulte a documentação do serviço específico para estratégias de otimização, bem como a documentação do conector de E/S.
  • DoFns que executam grandes operações de leitura ou gravação no estado persistente. Refatore seu código para realizar leituras ou gravações menores no estado persistente.

Também é possível usar o painel Informações secundárias para encontrar as etapas mais lentas no cenário. Uma dessas etapas pode ser a causa do atraso. Clique no nome da etapa para ver os registros de trabalho dela.

Depois de determinar a causa, atualize seu pipeline com um novo código e monitore o resultado.

A seguir