Analisar o desempenho do trabalho do Stream Analytics com métricas e dimensões
Para entender a integridade do trabalho do Azure Stream Analytics, é importante saber como usar as métricas e dimensões dele. Você pode usar o portal do Azure, a extensão do Visual Studio Code Stream Analytics ou um SDK para obter as métricas e dimensões nas quais você está interessado.
Este artigo demonstra como usar métricas e dimensões do trabalho do Stream Analytics para analisar o desempenho de um trabalho por meio do portal do Azure.
O atraso de marca d'água e os eventos de entrada com lista de pendências são as principais métricas para determinar o desempenho do trabalho do Stream Analytics. Se o atraso de marca d'água do trabalho está aumentando continuamente e os eventos de entrada têm uma lista de pendências, seu trabalho não consegue acompanhar a taxa de eventos de entrada e produzir saídas em tempo hábil.
Vejamos vários exemplos para analisar o desempenho de um trabalho, tendo os dados da métrica de Atraso de marca d'água como ponto de partida.
Nenhuma entrada de uma determinada partição aumenta o atraso de marca d'água do trabalho
Se o atraso da marca d'água do trabalho perfeitamente paralelo estiver aumentando continuamente, acesse Métricas. Em seguida, use estas etapas para descobrir se a causa raiz é a falta de dados em algumas partições da fonte de entrada:
Verifique qual partição tem o atraso crescente da marca d'água. Selecione a métrica Atraso da marca-d'água e divida-a pela dimensão ID da partição. No exemplo a seguir, a partição 465 tem um grande atraso de marca d'água.
Verifique se já dados de entrada ausentes nessa partição. Selecione a métrica Eventos de entrada e filtre-a para essa ID de partição específica.
Qual outra ação você pode executar?
O atraso de marca d'água dessa partição está aumentando, pois não há eventos de entrada fluindo para ela. Se a janela de tolerância de chegada em atraso do trabalho for de várias horas e nenhum dado de entrada estiver fluindo para uma partição, o atraso de marca d'água dessa partição possivelmente continuará aumentando até que a janela de chegada em atraso seja atingida.
Por exemplo, se sua janela de chegada em atraso for de seis horas e os dados de entrada não estiverem fluindo para a partição de entrada 1, o atraso de marca d'água da partição de saída 1 aumentará até atingir seis horas. É possível verificar se a fonte de entrada está produzindo dados conforme o esperado.
A distorção de dados de entrada causa um alto atraso de marca d'água
Como mencionado no caso anterior, quando seu trabalho perfeitamente paralelo tiver um grande atraso de marca d'água, a primeira coisa a ser feita é dividir a métrica Atraso da marca d'água pela dimensão ID da partição. Em seguida, você pode identificar se todas as partições têm um grande atraso de marca d'água ou apenas algumas delas.
No exemplo a seguir, as partições 0 e 1 têm atraso de marca d'água maior (cerca de 20 a 30 segundos) do que as outras oito partições. Os atrasos de marca d'água das outras partições são sempre estáveis em oito a dez segundos.
Verifique os dados de entrada de todas essas partições com a métrica Eventos de entrada dividida por ID de partição:
Qual outra ação você pode executar?
Conforme mostrado no exemplo, as partições (0 e 1) com alto atraso de marca d'água estão recebendo significativamente mais dados de entrada do que outras partições. Isso é chamado de distorção de dados. Os nós de streaming que estão processando as partições com distorção de dados precisam consumir mais recursos de CPU e memória do que outros, conforme mostrado na captura de tela a seguir.
Nós de streaming que processam partições com maior distorção de dados exibirão maior utilização da CPU e/ou unidade de streaming (SU). Essa utilização afetará o desempenho do trabalho e aumentará o atraso da marca d'água. Para atenuar o problema, reparticione seus dados de entrada de maneira mais uniforme.
Você também pode depurar esse problema com o diagrama de trabalho físico, consulte Diagrama de trabalho físico: Identificar os eventos de entrada distribuídos irregulares (distorção de dados).
A sobrecarga de CPU ou memória aumenta o atraso da marca d'água
Quando ocorre o aumento do atraso de marca d'água em um trabalho perfeitamente paralelo, isso pode afetar não somente uma ou várias partições, mas todas elas. Como confirmar se o seu trabalho se enquadra nesse caso?
Divida a métrica Atraso da marca d'água por ID de partição. Por exemplo:
Divida a métrica Eventos de entrada com IDs de partição para confirmar se há distorção de dados nos dados de entrada por partição.
Verifique a utilização de CPU e SU para ver se ela está muito alta em todos os nós de streaming.
Se a utilização de CPU e SU for muito alta (superiro a 80 porcento) em todos os nós de streaming, isso significa que o trabalho tem uma grande quantidade de dados sendo processados em cada nó de streaming.
Você pode verificar ainda quantas partições são alocadas a um nó de streaming verificando a métrica Eventos de entrada. Filtre pela ID do nó de streaming com a dimensão Nome do Nó e divida pela ID de Partição.
A captura de tela anterior mostra que quatro partições foram alocadas para um nó de streaming que ocupa cerca de 90 a 100% do recurso do nó de streaming. É possível usar uma abordagem semelhante para verificar os nós de streaming restantes a fim de confirmar se eles também estão processando dados de quatro partições.
Qual outra ação você pode executar?
Você pode querer reduzir a contagem de partições para cada nó de streaming a fim de reduzir os dados de entrada de cada um deles. Para conseguir isso, é possível dobrar os SUs para que cada nó de fluxo identifique dados de duas partições. Ou você pode quadruplicar as SUs para que cada nó de streaming identifique dados de uma partição. Para obter informações sobre a relação entre a atribuição de SU e a contagem de nós de streaming, confira Compreender e ajustar unidades de streaming.
O que fazer se o atraso de marca d'água ainda estiver aumentando após modificar um nó de streaming para manipular os dados de uma única partição? Reparticione a entrada com mais partições para reduzir a quantidade de dados em cada uma delas. Para obter detalhes, consulte Usar o reparticionamento para otimizar trabalhos do Azure Stream Analytics.
Você também pode depurar esse problema com o diagrama de trabalho físico, consulte Diagrama de trabalho físico: Identificar a causa da CPU ou memória sobrecarregada.