Risolvere i problemi relativi agli elementi in ritardo nei job di flussi di dati

Per le pipeline in modalità flusso, un elemento in ritardo viene definito come un elemento di lavoro con le seguenti caratteristiche:

  • Impedisce alla filigrana di avanzare per un periodo di tempo significativo (nell'ordine di minuti).
  • L'elaborazione avviene a lungo rispetto ad altri elementi di lavoro nella stessa fase.

Gli elementi in ritardo trattengono la filigrana e aggiungono latenza al job. Se il ritardo è accettabile per il tuo caso d'uso, non devi fare nulla. Se vuoi ridurre la latenza di un job, inizia risolvendo gli elementi in ritardo.

Visualizza gli elementi in ritardo dei flussi nella console Google Cloud

Dopo aver avviato un job Dataflow, puoi utilizzare la console Google Cloud per visualizzare eventuali elementi in ritardo rilevati.

Puoi visualizzare gli elementi in ritardo dei flussi nella visualizzazione di avanzamento della fase o nella visualizzazione del flusso di lavoro della fase.

Visualizza gli elementi in ritardo per avanzamento fase

Per visualizzare gli elementi in ritardo in base all'avanzamento della fase:

  1. Nella console Google Cloud, vai alla pagina Job di Dataflow.

    Vai a Job

  2. Fai clic sul nome del job.

  3. Nella pagina Dettagli job, fai clic sulla scheda Dettagli esecuzione.

  4. Nell'elenco Visualizzazione grafico, seleziona Avanzamento fase. Il grafico di avanzamento mostra i conteggi aggregati di tutti gli elementi in ritardo rilevati in ogni fase.

    Uno screenshot della visualizzazione di avanzamento fase.

  5. Per visualizzare i dettagli di uno stage, tieni il puntatore sulla barra dello stage. Il riquadro dei dettagli include un link ai log dei worker. Se fai clic su questo link, Cloud Logging si apre sul worker e sull'intervallo di tempo in cui è stato rilevato il elemento in ritardo.

    Uno screenshot della scheda dei dettagli degli elementi in ritardo.

Visualizza gli elementi in ritardo per flusso di lavoro della fase

Per visualizzare gli elementi in ritardo in base al flusso di lavoro della fase:

  1. Nella console Google Cloud, vai alla pagina Job di Dataflow.

    Vai a Job.

  2. Fai clic sul nome del job.

  3. Nella pagina dei dettagli del job, fai clic sulla scheda Dettagli esecuzione.

  4. Nell'elenco Visualizzazione grafico, seleziona Flusso di lavoro Stage. Il flusso di lavoro della fase mostra le fasi di esecuzione del job, rappresentate da un grafico del flusso di lavoro.

    Uno screenshot della visualizzazione del flusso di lavoro della fase.

Risolvere i problemi relativi agli elementi in ritardo dello streaming

Se viene rilevato un elemento in ritardo, significa che un'operazione nella pipeline è in esecuzione da molto tempo.

Per risolvere il problema, verifica innanzitutto se gli approfondimenti di Dataflow individuano eventuali problemi.

Se non riesci ancora a determinare la causa, controlla nei log del worker la fase che ha segnalato l'elemento in ritardo. Per visualizzare i log dei worker pertinenti, visualizza i dettagli degli elementi in ritardo nell'avanzamento della fase. Quindi fai clic sul link relativo al lavoratore. Questo link apre Cloud Logging, limitato all'ambito del worker e dell'intervallo di tempo in cui è stato rilevato l'elemento in ritardo. Cerca problemi che potrebbero rallentare la fase, ad esempio:

  • Bug nel codice DoFn o bloccato DoFns. Cerca le analisi dello stack nei log, vicino al timestamp di rilevamento dell'elemento in ritardo.
  • Chiamate a servizi esterni il cui completamento richiede molto tempo. Per ridurre il problema, esegui in batch le chiamate a servizi esterni e imposta i timeout sulle RPC.
  • Limiti di quota nei sink. Se la tua pipeline restituisce un output a un servizio Google Cloud, potresti essere in grado di aumentare la quota. Per ulteriori informazioni, consulta Utilizzare le quote. Inoltre, consulta la documentazione del servizio specifico per le strategie di ottimizzazione, nonché la documentazione del connettore I/O.
  • DoFns che eseguono operazioni di lettura o scrittura di grandi dimensioni in stato permanente. Valuta la possibilità di eseguire il refactoring del codice per eseguire letture o scritture più piccole in stato persistente.

Puoi anche utilizzare il riquadro Informazioni laterali per trovare i passaggi più lenti nella fase. Uno di questi passaggi potrebbe causare il ritardo. Fai clic sul nome del passaggio per visualizzare i log del worker per quel passaggio.

Dopo aver determinato la causa, aggiorna la pipeline con un nuovo codice e monitora il risultato.

Passaggi successivi