Risolvere i problemi relativi ai job in ritardo nello streaming

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

  • Impedisce alla filigrana di avanzare per un periodo di tempo significativo (dell'ordine di minuti).
  • Viene elaborato a lungo 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 intraprendere alcuna azione. Se vuoi ridurre la latenza di un job, inizia a risolvere i problemi relativi ai ritardatari.

Visualizzare i ritardatari dello streaming nella console Google Cloud

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

Puoi visualizzare i ritardatari dello streaming nella visualizzazione avanzamento fase o nella visualizzazione workflow 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 a grafico, seleziona Avanzamento fase. Il grafico di avanzamento mostra i conteggi aggregati di tutti i ritardatari rilevati in ogni fase.

    Uno screenshot della visualizzazione avanzamento fase.

  5. Per visualizzare i dettagli di una fase, tieni il puntatore sopra la barra della fase. Il riquadro dei dettagli include un link ai log dei 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 del ritardatario.

Visualizzare gli elementi in ritardo per flusso di lavoro della fase

Per visualizzare i ritardatari 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 a grafico, seleziona Flusso di lavoro di gestione temporanea. 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 di streaming in ritardo

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

Per risolvere il problema, verifica innanzitutto se Dataflow Insights individua eventuali problemi.

Se non riesci ancora a determinare la causa, controlla i log del worker per la fase che ha segnalato il problema. Per visualizzare i log del worker pertinenti, visualizza i dettagli dei ritardatari nell'avanzamento della fase. Poi fai clic sul link del lavoratore. Questo link apre Cloud Logging, con ambito il worker e l'intervallo di tempo in cui è stato rilevato lo straggler. Cerca problemi che potrebbero rallentare lo stage, ad esempio:

  • Bug nel codice DoFn o blocco DoFns. Cerca gli stack trace nei log, vicino al timestamp in cui è stato rilevato il ritardatario.
  • Chiamate a servizi esterni che richiedono molto tempo per essere completate. Per risolvere questo problema, raggruppa in batch le chiamate ai servizi esterni e imposta i timeout per le RPC.
  • Limiti di quota nei sink. Se la tua pipeline genera output in un servizio Google Cloud, potresti essere in grado di aumentare la quota. Per maggiori informazioni, vedi Utilizzo delle quote. Consulta anche 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 persistente.

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

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

Passaggi successivi