Para pipelines de streaming, um elemento atrasado é definido como um item de trabalho com as seguintes características:
- Impede que a marca de água avance durante um período significativo (da ordem dos minutos).
- É processado durante muito tempo em relação a outros itens de trabalho na mesma fase.
Os valores atípicos atrasam a marca de água e adicionam latência à tarefa. Se o atraso for aceitável para o seu exemplo de utilização, não tem de fazer nada. Se quiser reduzir a latência de uma tarefa, comece por resolver os problemas de tarefas pendentes.
Veja os atrasos no streaming na Google Cloud consola
Depois de iniciar uma tarefa do Dataflow, pode usar a Google Cloud consola para ver os atrasos detetados.
Pode ver os atrasos no streaming na vista de progresso da fase ou na vista de fluxo de trabalho da fase.
Veja os atrasos por progresso da fase
Para ver os atrasos por progresso da fase:
Na Google Cloud consola, aceda à página Tarefas do Dataflow.
Clique no nome da tarefa.
Na página Detalhes da tarefa, clique no separador Detalhes da execução.
Na lista Vista de gráfico, selecione Progresso da fase. O gráfico de progresso mostra as contagens agregadas de todos os atrasados detetados em cada fase.
Para ver os detalhes de uma fase, mantenha o ponteiro sobre a barra da fase. O painel de detalhes inclui um link para os registos do trabalhador. Clicar neste link abre o Cloud Logging com âmbito definido para o trabalhador e o intervalo de tempo em que o valor atípico foi detetado.
Veja os atrasos por fluxo de trabalho de fase
Para ver os atrasos por fluxo de trabalho de fase:
Na Google Cloud consola, aceda à página Tarefas do Dataflow.
Aceda a Tarefas
Clique no nome da tarefa.
Na página de detalhes da tarefa, clique no separador Detalhes da execução.
Na lista Vista de gráfico, selecione Fluxo de trabalho de preparação. O fluxo de trabalho de fases mostra as fases de execução da tarefa, representadas como um gráfico de fluxo de trabalho.
Resolva problemas de streaming intermitente
Se for detetado um valor atípico, significa que uma operação no seu pipeline está a ser executada durante um período invulgarmente longo.
Para resolver o problema, verifique primeiro se a funcionalidade Estatísticas do fluxo de dados identifica problemas.
Se ainda não conseguir determinar a causa, verifique os registos do trabalhador para a fase que comunicou o atraso. Para ver os registos de trabalhadores relevantes, consulte os detalhes de atrasos no progresso da fase. Em seguida, clique no link do trabalhador. Este link abre o Cloud Logging, com âmbito para o trabalhador e o intervalo de tempo em que o valor atípico foi detetado. Procure problemas que possam estar a abrandar o palco, como:
- Erros no código
DoFnou bloqueiosDoFns. Procure rastreios de pilha nos registos, perto da data/hora em que o valor atípico foi detetado. - Chamadas para serviços externos que demoram muito tempo a concluir. Para mitigar este problema, faça chamadas em lote para serviços externos e defina limites de tempo em RPCs.
- Limites de quota em destinos. Se o seu pipeline gerar resultados para um Google Cloud serviço, pode aumentar a quota. Para mais informações, consulte a documentação das quotas da nuvem. Consulte também a documentação do serviço específico para conhecer as estratégias de otimização, bem como a documentação do conector de E/S.
DoFnsque realizam operações de leitura ou escrita de grandes dimensões no estado persistente. Considere refatorar o seu código para fazer leituras ou escritas mais pequenas no estado persistente.
Também pode usar o painel Informações laterais para encontrar os passos mais lentos na fase. Um destes passos pode estar a causar o atraso. Clique no nome do passo para ver os registos do trabalhador desse passo.
Depois de determinar a causa, atualize o pipeline com o novo código e monitorize o resultado.
O que se segue?
- Saiba como usar a interface de monitorização do Dataflow.
- Compreenda o separador Detalhes da execução na interface de monitorização.