Risolvere i problemi relativi ai job batch lenti o bloccati

Questa pagina spiega come risolvere i problemi relativi alle cause comuni di job batch Dataflow lenti o bloccati.

Se il job batch è lento o bloccato, utilizza la scheda Dettagli esecuzione per trovare maggiori informazioni sul job e per identificare la fase o il worker che causa un collo di bottiglia.

Identificare la causa principale

  1. Controlla 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 job-message:

    All workers have finished the startup processes and began to receive work requests
    
  2. Per confrontare le prestazioni dei job tra job diversi, assicurati che il volume di dati di input, la configurazione dei worker, il comportamento di scalabilità automatica e le impostazioni di Dataflow Shuffle siano gli stessi.

  3. Controlla i log job-message per problemi come limiti di quota, problemi di esaurimento delle scorte o esaurimento degli indirizzi IP.

  4. Nella scheda Dettagli di esecuzione, confronta l'avanzamento della fase per identificare le fasi che hanno richiesto più tempo.

  5. Cerca eventuali elementi rimanenti nel job. Per saperne di più, vedi Risoluzione dei problemi relativi ai ritardatari nei job batch.

  6. Controlla le metriche di velocità effettiva, CPU e utilizzo della memoria.

  7. Controlla la presenza di avvisi ed errori nei log dei worker.

  8. Controlla la presenza di tasti di scelta rapida.

  9. Se non utilizzi Dataflow Shuffle, controlla i log di Shuffler per avvisi ed errori durante l'operazione di shuffle. Se visualizzi un errore di timeout RPC sulla porta 12345 o 12346, è possibile che nel job manchi una regola firewall. Consulta Regole firewall per Dataflow.

  10. Se Runner v2 è abilitato, controlla i log della briglia per verificare la presenza di errori. Per ulteriori informazioni, consulta Risolvere i problemi di Runner v2.

Identificare 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 i ritardatari, vedi Risolvere i problemi relativi ai ritardatari nei job batch.

Identificare 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.

Una volta individuata la fase del collo di bottiglia, puoi procedere nel seguente modo:

  • Identifica il worker in ritardo all'interno di quella fase.
  • Se non ci sono lavoratori in ritardo, identifica il passaggio più lento utilizzando il pannello Informazioni fase. Utilizza queste informazioni per identificare i candidati per l'ottimizzazione del codice utente.
  • Per trovare i colli di bottiglia del parallelismo, utilizza le metriche di monitoraggio di Dataflow.

Identificare un lavoratore in ritardo

Per identificare un worker in ritardo per una fase specifica, utilizza la visualizzazione Avanzamento worker. Questa visualizzazione mostra se tutti i worker elaborano il lavoro fino alla fine della fase o se un singolo worker è bloccato su un'attività in ritardo. Se trovi un lavoratore in ritardo, procedi nel seguente modo:

Strumenti per il debug

Quando 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 le prestazioni 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. Il seguente elenco include metriche utili:
    • La metrica Byte backlog (backlog_bytes) misura la quantità di input non elaborato in byte per fase. Utilizza questa metrica per trovare un passaggio unito che non ha throughput. Allo stesso modo, la metrica Elementi nel backlog (backlog_elements) misura il numero di elementi di input non elaborati per una fase.
    • La metrica Chiavi di parallelismo dell'elaborazione (processing_parallelism_keys) misura il numero di chiavi di elaborazione parallela per una determinata fase della pipeline negli ultimi cinque minuti. Utilizza questa metrica per eseguire indagini nei seguenti modi:
      • Restringi il problema a fasi specifiche e conferma gli avvisi relativi ai tasti di scelta rapida, ad esempio A hot key ... was detected.
      • Trova i colli di bottiglia del throughput causati da un parallelismo insufficiente. Questi colli di bottiglia possono causare pipeline lente o bloccate.
    • La metrica Ritardo sistema (system_lag) e la metrica Ritardo sistema per fase (per_stage_system_lag) misurano il tempo massimo per cui un elemento di dati è stato elaborato o è in attesa di elaborazione. Utilizza queste metriche per identificare le fasi inefficienti e i colli di bottiglia delle origini dati.

Per ulteriori metriche non incluse nell'interfaccia web di monitoraggio di Dataflow, consulta l'elenco completo delle metriche di Dataflow in Google Cloud Metriche.