Risolvere i problemi relativi ai job in batch in ritardo

Gli elementi in ritardo sono elementi di lavoro che rallentano i job Dataflow impedendo l'esecuzione contemporanea del lavoro.

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

  • Il completamento richiede molto più tempo rispetto ad altri elementi di lavoro nella stessa fase.
  • Riduce il parallelismo all'interno della fase.
  • Blocca l'avvio di nuovi lavori.

Nel peggiore dei casi, un elemento in ritardo impedisce il completamento di una fase perché una piccola percentuale del lavoro è in corso, causando ritardi complessivi in un job.

Dataflow rileva gli elementi in ritardo che si verificano durante i job batch. Se Dataflow rileva un ritardatario, tenta anche di determinarne la causa.

Visualizzare i ritardatari 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 per fase o per worker. Utilizza queste visualizzazioni per trovare le fasi in cui sono presenti elementi in ritardo e poi individua i worker in cui si sono verificati elementi in ritardo all'interno di ogni fase.

Visualizzare i ritardatari per fase

Per visualizzare i ritardatari per 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 Avanzamento fase. Il grafico di avanzamento mostra i conteggi aggregati di tutti i ritardatari rilevati in ogni fase.

  5. Per visualizzare i dettagli di una fase, tieni premuto il cursore sopra la barra della fase. Per visualizzare i worker per la fase, fai clic su Visualizza worker nel riquadro dei dettagli.

Visualizzare i ritardatari per utente

Per visualizzare i ritardatari per worker:

  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 Avanzamento dei lavoratori.

  5. Nell'elenco Filtra worker per fase, seleziona la fase. Il grafico di avanzamento mostra eventuali elementi in ritardo rilevati per la fase. La barra ha una tonalità più scura nel punto in cui è stato rilevato per la prima volta il ritardatario.

  6. Per visualizzare i dettagli di un lavoratore, tieni premuto il cursore sopra la barra corrispondente.

Nel riquadro Informazioni sulla fase, la sezione Dettagli elementi in ritardo elenca gli elementi in ritardo per tutti i lavoratori mostrati nella pagina, con le seguenti informazioni:

  • L'ora di inizio in cui è stato rilevato il ritardatario.
  • Il lavoratore che ha riscontrato il ritardatario.
  • La causa, se nota.

Risolvere i problemi relativi ai job in ritardo

Dataflow rileva le seguenti cause di elementi in ritardo nelle pipeline batch:

  • Tasto di scelta rapida. Una hot key è una chiave che rappresenta molti più elementi rispetto alle altre chiavi nello stesso PCollection. Per saperne di più, consulta Risolvere i problemi relativi agli elementi in ritardo causati dai tasti di scelta rapida in questo documento.

  • Lavoratore lento. Su un worker lento, gli elementi di lavoro vengono eseguiti più lentamente del solito. Spesso, la velocità di elaborazione di un worker lento è inferiore a quella dei worker che svolgono un lavoro simile nella stessa fase. Molti fattori possono causare la lentezza dei worker, tra cui la fame di CPU, il thrashing, l'architettura della macchina e i processi dei worker bloccati. In caso di lentezza, Dataflow tenta di mitigare il problema automaticamente. Per ulteriori informazioni, consulta Mitigare automaticamente i ritardatari causati da worker lenti in questo documento.

  • Causa indeterminata. Per gli elementi in ritardo con causa indeterminata, consulta i passaggi di risoluzione dei problemi generali per i job batch lenti in "Risolvere i problemi relativi ai job lenti o bloccati".

Risolvere i problemi relativi agli elementi in ritardo causati dai tasti di scelta rapida

Vari fattori possono causare ritardi, ma una causa comune è l'esistenza di un'hot key. Una hot key è una chiave che rappresenta molti più elementi rispetto alle altre chiavi nella stessa PCollection. I tasti di scelta rapida possono creare elementi in ritardo perché limitano la capacità di Dataflow di elaborare gli elementi in parallelo.

Se Dataflow rileva un elemento in ritardo causato da un tasto di scelta rapida, il riquadro Dettagli elemento in ritardo elenca Hot Key come causa.

Per impostazione predefinita, Dataflow non mostra il valore della chiave della tastiera rapida. Per visualizzare il valore della chiave, imposta l'opzione della pipeline hotKeyLoggingEnabled su true quando esegui il job.

Per risolvere il problema, verifica che i dati siano distribuiti in modo uniforme. Se una chiave ha un numero sproporzionato di valori, valuta le seguenti opzioni:

Ad esempio, se una pipeline esegue un'operazione JOIN nell'ambito di una trasformazione SQL, è probabile che una determinata chiave contenga una quantità sproporzionata di dati quando viene inserita nell'istruzione GroupByKey eseguita nell'ambito dell'operazione JOIN espansa.

Per ulteriori informazioni, consulta la seguente richiesta di funzionalità: beam-issue/28186.

Ridurre automaticamente i ritardi causati da worker lenti

I worker lenti sono rari in Dataflow, ma possono influire sulle prestazioni dei job. Per evitare problemi di prestazioni, quando Dataflow rileva worker lenti, cerca di mitigare il problema prima che i worker causino ritardi.

La mitigazione automatica simula un evento di manutenzione dell'host. L'evento è un meccanismo di manutenzione di Compute Engine che si verifica regolarmente. A seconda del criterio di manutenzione dell'host, viene eseguita la migrazione live o il riavvio del worker. Se si verifica una migrazione live, il carico di lavoro non viene interrotto. Se il worker viene riavviato, il lavoro in corso del worker lento viene perso e l'elaborazione viene riavviata.

Se viene rilevato un worker lento e il problema viene risolto, nei log job-message viene visualizzato il seguente messaggio:

Slow worker ... detected and automatically remediated ...

Poiché i lavoratori lenti non sono in ritardo, non è necessaria alcuna azione da parte tua.

Se la mitigazione non va a buon fine, il worker lento causa un ritardatario visualizzato nell'interfaccia di monitoraggio di Dataflow.

La mitigazione automatica potrebbe non riuscire se il progetto esaurisce la quota per le richieste di simulazione di eventi di manutenzione delle istanze. Per ulteriori informazioni sulla quota predefinita, consulta Limiti di frequenza dell'API per le metriche regionali in "Quote di utilizzo delle risorse e gestione delle autorizzazioni". Per richiedere un limite di quota più alto, consulta Richiedi un limite di quota più alto in "Visualizza e gestisci le quote".

Passaggi successivi