In questa pagina viene spiegato come risolvere le cause comuni dei job batch Dataflow lenti o bloccati.
Se il job batch è lento o bloccato, utilizza la scheda Dettagli esecuzione per trovare ulteriori informazioni sul job e identificare la fase o il worker che sta causando un collo di bottiglia.
Identifica la causa principale
Verifica se il job riscontra problemi durante l'avvio del worker. Per saperne di più, consulta Errore durante la sincronizzazione del pod.
Per verificare che il job abbia iniziato a elaborare i dati, cerca la seguente voce di log nel log dei messaggi del job:
All workers have finished the startup processes and began to receive work requestsPer confrontare il rendimento dei job tra job diversi, assicurati che il volume dei dati di input, la configurazione dei worker, il comportamento della scalabilità automatica e le impostazioni di Dataflow Shuffle siano gli stessi.
Controlla i log dei messaggi del job per verificare la presenza di problemi come limiti di quota, problemi di esaurimento delle scorte o esaurimento degli indirizzi IP.
Nella scheda Dettagli esecuzione, confronta l' avanzamento delle fasi per identificare le fasi che hanno richiesto più tempo.
Cerca eventuali elementi in ritardo nel job. Per saperne di più, consulta Risolvere i problemi relativi agli elementi in ritardo nei job batch.
Controlla le metriche di throughput, CPU e utilizzo della memoria.
Controlla i log dei worker per verificare la presenza di avvisi ed errori.
- Se i log dei worker contengono errori, visualizza lo analisi dello stack. Verifica se l'errore è causato da un bug nel codice.
- Cerca gli errori di Dataflow. Consulta Risolvere i problemi relativi agli errori di Dataflow.
- Cerca gli errori di memoria insufficiente, che possono causare il blocco di una pipeline. Se visualizzi errori di memoria insufficiente, segui i passaggi descritti in Risolvere i problemi relativi agli errori di memoria insufficiente di Dataflow.
- Per identificare un passaggio lento o bloccato, controlla i log dei worker per i messaggi
Operation ongoing. Visualizza l'analisi dello stack per vedere dove il passaggio sta impiegando tempo. Per saperne di più, consulta Elaborazione bloccata o operazione in corso.
Se non utilizzi Dataflow Shuffle, controlla i log di shuffle per verificare la presenza di avvisi ed errori durante l'operazione di shuffle. Se visualizzi un errore di timeout RPC sulla porta 12345 o 12346, è possibile che al job manchi una regola firewall. Consulta Regole firewall per Dataflow.
Se Runner v2 è abilitato, controlla i log dell'harness per verificare la presenza di errori. Per saperne di più, consulta Risolvere i problemi relativi a Runner v2.
Identifica gli elementi in ritardo
Un elemento in ritardo è un elemento di lavoro lento rispetto ad altri elementi di lavoro nella fase. Per informazioni su come identificare e correggere gli elementi in ritardo, consulta Risolvere i problemi relativi agli elementi in ritardo nei job batch.
Identifica le fasi lente o bloccate
Per identificare le fasi lente o bloccate, utilizza la visualizzazione Avanzamento fase. Le barre più lunghe indicano che la fase richiede più tempo. Utilizza questa visualizzazione per identificare le fasi più lente della pipeline.
Dopo aver trovato la fase di collo di bottiglia, puoi procedere nel seguente modo:
- Identifica il worker in ritardo all'interno di quella fase.
- Se non ci sono worker in ritardo, identifica il passaggio più lento utilizzando il riquadro Informazioni fase. Utilizza queste informazioni per identificare i candidati per l'ottimizzazione del codice utente.
Identifica un worker in ritardo
Per identificare un worker in ritardo per una fase specifica, utilizza la visualizzazione Avanzamento worker. Questa visualizzazione mostra se tutti i worker stanno elaborando il lavoro fino alla fine della fase o se un singolo worker è bloccato su un'attività in ritardo. Se trovi un worker in ritardo, procedi nel seguente modo:
- Visualizza i file di log per quel worker. Per saperne di più, consulta Monitorare e visualizzare i log della pipeline.
- Visualizza le metriche di utilizzo della CPU e i dettagli sull'avanzamento dei worker in ritardo. Se noti un utilizzo della CPU insolitamente alto o basso, nei file di log per quel worker cerca i seguenti problemi:
Strumenti per il debug
Quando hai una pipeline lenta o bloccata, i seguenti strumenti possono aiutarti a diagnosticare il problema.
- Per correlare gli incidenti e identificare i colli di bottiglia, utilizza Cloud Monitoring per Dataflow.
- Per monitorare il rendimento della pipeline, utilizza Cloud Profiler.
- Alcune trasformazioni sono più adatte alle pipeline ad alto volume rispetto ad altre. I messaggi di log possono identificare una trasformazione dell'utente bloccata nelle pipeline batch o di streaming.
- Per saperne di più su un job bloccato, utilizza le metriche dei job Dataflow.
Per altre metriche non incluse nell'interfaccia web di monitoraggio di Dataflow, consulta l'elenco completo delle metriche di Dataflow in Google Cloud metriche.