Resolver problemas de desempenho da tarefa do Stream Analytics utilizando métricas e dimensões

Para compreender o estado de funcionamento de uma tarefa do Azure Stream Analytics, precisa de saber como utilizar as métricas e dimensões da tarefa. Podes obter as métricas e dimensões que te interessam através do portal Azure, da extensão Visual Studio Code Stream Analytics ou de um SDK.

O atraso da marca de água e os eventos de entrada em atraso são as principais métricas que determinam o desempenho de uma tarefa do Stream Analytics. Se o atraso do watermark da tarefa aumentar continuamente e os eventos de entrada estiverem acumulados em fila, a tarefa não consegue acompanhar o ritmo dos eventos de entrada e não consegue produzir saídas atempadamente.

Este artigo mostra-te como usar métricas e dimensões de trabalhos do Stream Analytics no portal do Azure para diagnosticar o desempenho de um trabalho. As secções seguintes explicam vários exemplos que partem da métrica Watermark Delay para diagnosticar problemas de desempenho comuns.

A ausência de dados de entrada numa determinada partição aumenta o atraso do watermark do processo

Se o atraso da marca de água do teu trabalho embaraçosamente paralelo aumentar constantemente, abre o portal Métricas no Azure. Depois, use estes passos para descobrir se a causa raiz é a falta de dados em algumas partições da sua fonte de entrada:

  1. Verifique qual partição tem o atraso crescente do watermark. Selecione a métrica Atraso da marca de água e divida-a por ID da partição. No exemplo a seguir, a partição 465 tem um alto atraso de marca d'água.

    Captura de tela de um gráfico que mostra a divisão do atraso da marca d'água por ID de partição para o caso de nenhuma entrada em uma partição.

  2. Verifique se falta algum dado de entrada para esta partição. Selecione a métrica Eventos de entrada e filtre-a para esse ID de partição específico.

    Captura de tela de um gráfico que mostra Eventos de Entrada dividindo por ID de Partição para o caso de nenhuma entrada em uma partição.

O atraso do watermark para esta partição está a aumentar porque não estão a chegar eventos de entrada a esta partição. Se a janela de tolerância a chegadas tardias da sua tarefa for de várias horas e não estiverem a entrar dados de entrada numa partição, é expectável que o atraso da marca de água dessa partição continue a aumentar até atingir a janela de tolerância a chegadas tardias.

Por exemplo, se a sua janela de chegadas tardias for de seis horas e os dados de entrada não estiverem a fluir para a partição de entrada 1, o atraso da marca-d’água da partição de saída 1 aumentará até chegar às seis horas. Verifique se a sua fonte de entrada está a produzir dados conforme esperado.

A assimetria dos dados de entrada causa um atraso elevado da marca temporal limite

Quando o teu trabalho embaraçosamente paralelo tiver um atraso elevado, primeiro divide a métrica de Atraso de Marca de Água pela dimensão do ID da Partição . Depois identifica se todas as partições têm um atraso elevado, ou apenas algumas.

No exemplo seguinte, as partições 0 e 1 apresentam um atraso de marca d'água maior (cerca de 20 a 30 segundos) do que as outras oito partições. Os atrasos do watermark das outras partições mantêm-se sempre estáveis, entre cerca de 8 e 10 segundos.

Captura de tela de um gráfico que mostra o atraso da marca d'água dividido por ID de partição para o caso de distorção de dados.

Verifique como são os dados de entrada entre estas partições dividindo a métrica de Eventos de Entrada pelo ID da Partição:

Captura de tela de um gráfico que mostra Eventos de Entrada divididos por ID de Partição para o caso de distorção de dados.

No exemplo anterior, as partições (0 e 1) que apresentam um atraso elevado recebem significativamente mais dados de entrada do que as outras partições. Esta condição chama-se desvio de dados. Os nós de streaming que processam as partições com data skew consomem mais recursos de CPU e memória do que os outros, como mostra a captura de ecrã seguinte.

Captura de tela de um gráfico que mostra a utilização de recursos de partições com distorção de dados.

Os nós de streaming que processam partições com maior assimetria dos dados apresentam uma maior % de utilização da CPU e % de utilização de SU (Memória). Esta pressão sobre os recursos afeta o desempenho da tarefa e aumenta o atraso de watermark. Para mitigar isso, reparticiona os teus dados de entrada de forma mais uniforme.

Também pode depurar este problema usando o diagrama físico de trabalho. Para mais informações, consulte Diagrama físico da tarefa: identificar os eventos de entrada distribuídos de forma desigual (data-skew).

CPU ou memória sobrecarregada aumenta o atraso da marca d'água

Quando um trabalho embaraçosamente paralelo apresenta um atraso crescente na marca d'água, o atraso pode afetar todas as partições, não apenas uma ou várias. Para confirmar que o seu emprego está nesta situação, siga estes passos:

  1. Divida a métrica Atraso da marca de água por ID da partição. Por exemplo:

    Captura de tela de um gráfico que mostra o atraso da marca d'água dividido pelo ID da partição para o caso de CPU e memória sobrecarregadas.

  2. Divida a métrica de Eventos de Entrada pelo ID da Partição para confirmar se há desvio de dados nos dados de entrada de cada partição.

  3. Verifique as métricas % de utilização da CPU e % de utilização de SU (memória) para verificar se a utilização é demasiado elevada em todos os nós de transmissão.

    Captura de tela de um gráfico que mostra a utilização da CPU e da memória dividida por nome de nó para o caso de CPU e memória sobrecarregadas.

  4. Se ambas as métricas estiverem elevadas (mais de 80 por cento) em todos os nós de streaming, pode-se concluir que cada nó de streaming está a processar uma grande quantidade de dados.

    Verifique quantas partições são alocadas a um nó de streaming usando a métrica de Eventos de Entrada . Filtrar pelo ID do nó de streaming com a dimensão Nome do nó e dividir por ID da partição.

    Captura de ecrã de um gráfico que mostra a contagem de partições num nó de streaming no caso de sobrecarga de CPU e memória.

  5. A captura de tela anterior mostra que quatro partições são alocadas para um nó de streaming que ocupa cerca de 90 a 100% do recurso do nó de streaming. Use uma abordagem semelhante para verificar os restantes nós de streaming e confirmar que também estão a processar dados de quatro partições.

Reduzir o número de partições que cada nó de streaming processa para reduzir os dados de entrada por nó. Para isso, duplicar os SUs para que cada nó de streaming trate dados de duas partições, ou quadruplicar os SUs para que cada nó de streaming trate 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, consulte Compreender e ajustar unidades de streaming.

O que deve fazer se o atraso do watermark continuar a aumentar quando um nó de streaming estiver a processar dados de uma partição? Reparticione sua entrada com mais partições para reduzir a quantidade de dados em cada partição. Para obter detalhes, consulte Usar o reparticionamento para otimizar os trabalhos do Azure Stream Analytics.

Também pode diagnosticar este problema com o diagrama físico da tarefa. Para mais informações, consulte Diagrama físico de trabalho: Identificar a causa da sobrecarga da CPU ou memória.