
Utilizza il rilevatore di colli di bottiglia di Dataflow per diagnosticare i blocchi di avanzamento e ottimizzare le prestazioni della pipeline nei job di streaming di Dataflow. Il rilevatore evidenzia automaticamente i componenti delle pipeline di dati che limitano la velocità effettiva e causano backlog.
Identificando la posizione esatta e la causa probabile dei ritardi di esecuzione, il rilevatore di colli di bottiglia consente di risolvere i problemi delle pipeline di streaming Apache Beam complesse senza dover ricorrere a tentativi ed errori.
Come funziona il rilevamento dei colli di bottiglia
Le pipeline di streaming in genere sono costituite da una sequenza di passaggi collegati da code. I dati scorrono in sequenza dalle origini upstream tramite trasformazioni intermedie ai sink downstream.
In molte pipeline, la velocità effettiva complessiva è vincolata da un singolo componente o
passaggio, creando un collo di bottiglia o un rallentamento dell'avanzamento del job. Se un componente downstream non è in grado di elaborare i dati con la stessa rapidità con cui un componente upstream li produce, la coda tra di essi inizia a riempirsi. Ad esempio, se un componente di shuffle di streaming upstream produce dati più rapidamente di quanto un DoFn definito dall'utente downstream lento possa elaborarli, la coda si riempie.
Nel tempo, questo ritardo influisce su tutti i passaggi di una pipeline. Il backlog aumenta a monte, limitando infine la velocità con cui la pipeline può inserire ed elaborare l'input dall'origine originale. Questo comportamento è chiamato propagazione del backlog.
Quando si verifica la propagazione del backlog, più fasi della pipeline possono apparire non integre o lente, anche se solo un singolo passaggio sta causando il vincolo sottostante. Il rilevatore di colli di bottiglia monitora continuamente i ritardi di esecuzione in tutti i componenti, inclusi i seguenti:
- Shuffle di streaming
- Funzioni definite dall'utente (thread
DoFn) - Commit dello stato persistente
Quando un componente subisce un ritardo di elaborazione superiore a cinque minuti, il rilevatore di colli di bottiglia di Dataflow lo registra come collo di bottiglia. Evidenzia il passaggio nel grafico di esecuzione del job e fornisce informazioni diagnostiche dettagliate.
Tipi di colli di bottiglia

Quando un collo di bottiglia è attivo, il rilevatore lo classifica in uno dei seguenti stati:
- L'elaborazione è bloccata e non procede: l'avanzamento della pipeline è completamente interrotto al passaggio interessato.
- L'elaborazione è in corso, ma è in ritardo: il passaggio corrente è in funzione, ma non è in grado di elaborare i dati in entrata con la stessa rapidità con cui arrivano, con conseguente aumento del backlog.
- L'elaborazione è in corso, ma il backlog è stabile: il passaggio elabora i dati a una velocità pari alla velocità in entrata. Il backlog non aumenta, ma rimane elevato.
- L'elaborazione è in corso e sta recuperando da un backlog: il passaggio sta eliminando correttamente il backlog. Se avvii una pipeline con un backlog esistente, questo stato è normale e non richiede alcun intervento.
Per ulteriori informazioni sulla visualizzazione della diagnostica del rilevatore di colli di bottiglia e su come risolverli, consulta Rilevare e risolvere i colli di bottiglia.
Passaggi successivi
- Scopri come rilevare e risolvere i colli di bottiglia della pipeline di Dataflow.
- Consulta Risolvere i problemi relativi ai job di streaming lenti o bloccati.
- Per la profilazione avanzata delle prestazioni, consulta Monitorare le prestazioni della pipeline utilizzando Cloud Profiler.