Risolvere i problemi di prestazioni dei processi di Stream Analytics tramite metriche e dimensioni

Per comprendere la salute di un lavoro Analisi di flusso di Azure, devi sapere come utilizzare le metriche e le dimensioni del lavoro. Puoi ottenere le metriche e le dimensioni che ti interessano dal portale Azure, dall'estensione Visual Studio Code Stream Analytics o da un SDK.

Il ritardo del watermark e gli eventi di input in coda sono le principali metriche che determinano le prestazioni di un processo di Stream Analytics. Se il watermark delay del job aumenta continuamente e gli eventi di input si accumulano, il job non riesce a tenere il passo con il ritmo degli eventi di input in arrivo e non riesce a generare output in tempo.

Questo articolo ti mostra come utilizzare le metriche e le dimensioni dei job di Stream Analytics nel portale Azure per diagnosticare le prestazioni di un lavoro. Le sezioni seguenti illustrano diversi esempi che partono dalla metrica Watermark Delay per diagnosticare problemi di prestazioni comuni.

L'assenza di input in una determinata partizione aumenta il ritardo del watermark del job

Se il ritardo del watermark del tuo processo altamente parallelo aumenta costantemente, apri Metrics nel portale di Azure. Poi usa questi passaggi per scoprire se la causa principale è la mancanza di dati in alcune partizioni della tua sorgente di input:

  1. Verifica quale partizione presenta un ritardo del watermark in aumento. Selezionare la metrica Ritardo limite e dividerla in base alla dimensione ID partizione. Nell'esempio seguente, la partizione 465 presenta un ritardo limite massimo.

    Schermata di un grafico che mostra il ritardo del watermark suddiviso per ID della partizione nel caso in cui non vi sia alcun input in una partizione.

  2. Controlla se mancano dati di input per questa partizione. Selezionare la metrica Eventi di input e filtrarla in base a questo ID di partizione specifico.

    Schermata di un grafico che mostra gli eventi di input suddivisi per ID partizione nel caso di assenza di input in una partizione.

Il ritardo del watermark per questa partizione sta aumentando perché non stanno arrivando eventi di input a questa partizione. Se la finestra di tolleranza del processo per gli arrivi in ritardo è di diverse ore e non confluisce alcun dato di input in una partizione, è normale che il ritardo del watermark per quella partizione continui ad aumentare fino a raggiungere la finestra degli arrivi in ritardo.

Ad esempio, se l'intervallo di tolleranza per gli arrivi in ritardo è di sei ore e i dati in ingresso non arrivano nella partizione di input 1, il ritardo del watermark per la partizione di output 1 aumenterà fino a raggiungere le sei ore. Controlla se la tua sorgente di input produce i dati come previsto.

L'asimmetria dei dati di input causa un ritardo limite massimo

Quando il tuo job perfettamente parallelizzabile presenta un watermark delay elevato, per prima cosa suddividi la metrica Watermark Delay in base alla dimensione Partition ID. Poi identifica se tutte le partizioni presentano un ritardo del watermark alto oppure solo alcune.

Nell'esempio seguente, le partizioni 0 e 1 presentano una latenza della watermark più elevata (circa 20-30 secondi) rispetto alle altre otto partizioni. I ritardi limite delle altre partizioni sono sempre costanti a circa 8-10 secondi.

Screenshot di un grafico che mostra il ritardo del watermark suddiviso in base all'ID partizione nel caso di sbilanciamento dei dati.

Controlla come appaiono i dati di input tra queste partizioni dividendo la metrica degli Eventi di Input per ID Partizione:

Schermata di un grafico che mostra la suddivisione degli eventi di input in base all'ID della partizione nel caso di squilibrio dei dati.

Nell'esempio precedente, le partizioni (0 e 1) che hanno un ritardo elevato nella filigrana ricevono significativamente più dati in ingresso rispetto alle altre partizioni. Questa condizione è chiamata sfasamento dei dati. I nodi di streaming che elaborano le partizioni con data skew consumano più risorse di CPU e memoria rispetto agli altri, come mostra lo screenshot seguente.

Screenshot di un grafico che mostra l'utilizzo delle risorse delle partizioni con asimmetria dei dati.

I nodi di streaming che elaborano partizioni con maggiore data skew mostrano un utilizzo % CPU e SU (Memory) % Utilizzo più elevato. Questa pressione sulle risorse influisce sulle prestazioni del processo e aumenta il ritardo del watermark. Per mitigarlo, ripartiziona i dati di input in modo più uniforme.

Puoi anche risolvere questo problema usando il diagramma fisico del lavoro. Per ulteriori informazioni, vedi Diagramma fisico del lavoro: Identificare gli eventi di input distribuiti diseguali (data-skew).

Il sovraccarico della CPU o della memoria aumenta il ritardo del watermark

Quando un lavoro imbarazzantemente parallelo ha un ritardo crescente della filigrana, il ritardo potrebbe colpire tutte le partizioni, non solo una o più. Per confermare che il tuo lavoro si trova in questa situazione, usa questi passaggi:

  1. Suddividi la metrica Ritardo del watermark per ID partizione Ad esempio:

    Schermata di un grafico che mostra il Watermark Delay suddiviso per ID di partizione nel caso di sovraccarico di CPU e memoria.

  2. Dividi la metrica degli Eventi di Input per ID di Partizione per confermare se c'è un distorsione dei dati di ingresso per ogni partizione.

  3. Controlla le metriche CPU % Utilizzo e SU (Memoria) % Utilizzo per vedere se l'utilizzo è troppo alto in tutti i nodi di streaming.

    Screenshot di un grafico che mostra l'utilizzo di CPU e della memoria diviso in base al nome del nodo per il caso di CPU e memoria sovraccarichi.

  4. Se entrambe le metriche sono alte (oltre l'80 percento) in tutti i nodi di streaming, si può concludere che ogni nodo di streaming sta elaborando una grande quantità di dati.

    Controlla quante partizioni sono allocate a un nodo di streaming usando la metrica Input Events . Filtrare per ID del nodo di streaming con la dimensione Nome del nodo e suddividere per ID partizione.

    Schermata di un grafico che mostra il numero di partizioni su un nodo di streaming nel caso di sovraccarico di CPU e memoria.

  5. Lo screenshot precedente mostra che quattro partizioni vengono allocate a un nodo di streaming che occupa circa il 90-100% della risorsa del nodo di streaming. Usa un approccio simile per controllare gli altri nodi di streaming e confermare che stessero anche processando dati da quattro partizioni.

Ridurre il numero di partizioni gestite da ogni nodo di streaming per diminuire i dati di input per nodo. Per farlo, raddoppiare le SU in modo che ogni nodo di streaming gestisca i dati da due partizioni, oppure quadruplicare le SU in modo che ogni nodo di streaming gestisca i dati di una partizione. Per informazioni sulla relazione tra l'assegnazione delle SU e il numero dei nodi di streaming, vedere Informazioni e modifica delle unità di streaming.

Cosa si dovrebbe fare se il ritardo del watermark continua ad aumentare quando un nodo di streaming sta gestendo dati provenienti da una partizione? Fare una ripartizione degli input con più partizioni per ridurre la quantità di dati in ogni partizione. Per maggiori dettagli, vedere Usare la ripartizione per ottimizzare i processi di Analisi di flusso di Azure.

Puoi anche risolvere questo problema con il diagramma fisico del lavoro. Per maggiori informazioni, vedi Diagramma fisico del lavoro: Identificare la causa del sovraccarico della CPU o della memoria.