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:
Nella console Google Cloud, vai alla pagina Job di Dataflow.
Vai a Job
Fai clic sul nome del job.
Nella pagina dei dettagli del job, fai clic sulla scheda Dettagli esecuzione.
Nell'elenco Visualizzazione grafico, seleziona Avanzamento fase. Il grafico di avanzamento mostra i conteggi aggregati di tutti i ritardatari rilevati in ogni fase.
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:
Nella console Google Cloud, vai alla pagina Job di Dataflow.
Vai a Job
Fai clic sul nome del job.
Nella pagina dei dettagli del job, fai clic sulla scheda Dettagli esecuzione.
Nell'elenco Visualizzazione grafico, seleziona Avanzamento dei lavoratori.
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.
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:
- Modifica la chiave dei dati. Applica una trasformazione
ParDo
per generare nuove coppie chiave-valore. - Per i job Java, utilizza la trasformazione
Combine.PerKey.withHotKeyFanout
. - Per i job Python, utilizza la trasformazione
CombinePerKey.with_hot_key_fanout
. - Attiva Dataflow Shuffle.
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
- Scopri come utilizzare l'interfaccia di monitoraggio di Dataflow.
- Scopri la scheda Dettagli esecuzione nell'interfaccia di monitoraggio.