Risolvere i problemi relativi ai job in ritardo nello streaming

Per le pipeline di streaming, un elemento in ritardo è definito come un elemento di lavoro con le seguenti caratteristiche:

  • Impedisce all'anteprima di avanzare per un periodo di tempo significativo (dell'ordine di minuti).
  • L'elaborazione richiede molto tempo rispetto ad altri elementi di lavoro nella stessa fase.

Gli elementi in ritardo bloccano il livello raggiunto 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 a risolvere i problemi relativi ai job in ritardo.

Visualizzare gli elementi in ritardo nello streaming 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 i ritardatari dello streaming nella visualizzazione dell'avanzamento della fase o nella visualizzazione del flusso di lavoro della fase.

Visualizzare i ritardatari in base all'avanzamento della fase

Per visualizzare i ritardatari 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 i ritardatari rilevati in ogni fase.

    Uno screenshot della visualizzazione dell'avanzamento della fase.

  5. Per visualizzare i dettagli di una fase, tieni premuto il cursore sopra la barra della fase. Il riquadro dei dettagli include un link ai log del worker. Se fai clic su questo link, si apre Cloud Logging con ambito limitato al worker e all'intervallo di tempo in cui è stato rilevato il ritardatario.

    Uno screenshot della scheda dei dettagli dei ritardatari.

Visualizzare gli elementi in ritardo per flusso di lavoro della fase

Per visualizzare i job in ritardo per 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 delle fasi. 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 ai ritardi nello streaming

Se viene rilevato un elemento in ritardo, significa che un'operazione nella pipeline è in esecuzione da un periodo di tempo insolitamente lungo.

Per risolvere il problema, verifica innanzitutto se Approfondimenti sul flusso di dati individua eventuali problemi.

Se non riesci ancora a determinare la causa, controlla i log del worker per la fase che ha segnalato il ritardatario. Per visualizzare i log dei worker pertinenti, consulta i dettagli degli elementi in ritardo nell'avanzamento della fase. Fai clic sul link del worker. Questo link apre Cloud Logging, con ambito limitato al worker e all'intervallo di tempo in cui è stato rilevato il ritardatario. Cerca eventuali problemi che potrebbero rallentare la fase, ad esempio:

  • Bug nel codice DoFn o DoFns bloccato. Cerca le tracce dello stack nei log, vicino al timestamp in cui è stato rilevato il ritardatario.
  • Chiamate a servizi esterni che richiedono molto tempo per essere completate. Per attenuare questo problema, raggruppa le chiamate ai servizi esterni e imposta i timeout sulle RPC.
  • Limiti di quota nei sink. Se la pipeline genera output in un servizio Google Cloud, potresti essere in grado di aumentare la quota. Per ulteriori informazioni, consulta Utilizzo delle quote. Consulta inoltre la documentazione del servizio specifico per le strategie di ottimizzazione, nonché la documentazione di I/O Connector.
  • DoFns che eseguono operazioni di lettura o scrittura di grandi dimensioni sullo stato permanente. Valuta la possibilità di eseguire il refactoring del codice per eseguire letture o scritture più piccole sullo stato permanente.

Puoi anche utilizzare il riquadro Informazioni aggiuntive per trovare i passaggi più lenti della fase. Uno di questi passaggi potrebbe essere la causa del ritardo. Fai clic sul nome del passaggio per visualizzare i log del worker per quel passaggio.

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

Passaggi successivi