Analisar o desempenho da tarefa do Stream Analytics com métricas e dimensões

Para compreender o estado de funcionamento de uma tarefa do Azure Stream Analytics, é importante saber como utilizar as métricas e dimensões da tarefa. Pode utilizar o portal do Azure, a extensão do Stream Analytics do Visual Studio Code ou um SDK para obter as métricas e dimensões em que está interessado.

Este artigo demonstra como utilizar métricas e dimensões de tarefas do Stream Analytics para analisar o desempenho de uma tarefa através do portal do Azure.

O atraso da marca d'água e os eventos de entrada com registo de tarefas pendentes são as principais métricas para determinar o desempenho da tarefa do Stream Analytics. Se o atraso da marca d'água da tarefa estiver a aumentar continuamente e os eventos de entrada estiverem bloqueados, a tarefa não conseguirá acompanhar a taxa de eventos de entrada e produzir saídas em tempo útil.

Vejamos vários exemplos para analisar o desempenho de uma tarefa através dos dados da métrica Atraso de Marca d'Água como ponto de partida.

Nenhuma entrada para uma determinada partição aumenta o atraso da marca d'água da tarefa

Se o atraso da marca d'água da tarefa embaraçosamente paralela estiver a aumentar constantemente, aceda a Métricas. Em seguida, utilize estes passos para descobrir se a causa raiz é a falta de dados em algumas partições da sua origem de entrada:

  1. Verifique qual a partição que tem o aumento do atraso 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 seguinte, a partição 465 tem um atraso de marca d'água elevado.

    Captura de ecrã a mostrar um gráfico que mostra o atraso da divisão da marca d'água por ID da Partição para as maiúsculas e minúsculas de nenhuma entrada numa partição.

  2. Verifique se faltam dados de entrada para esta partição. Selecione a métrica Eventos de Entrada e filtre-a para este ID de partição específico.

    Captura de ecrã a mostrar um gráfico que mostra Eventos de Entrada a dividir por ID de Partição para o caso de nenhuma entrada numa partição.

Que medidas adicionais pode tomar?

O atraso da marca d'água para esta partição está a aumentar porque não existem eventos de entrada a fluir para esta partição. Se a janela de tolerância da tarefa para chegadas tardias for de várias horas e não houver dados de entrada a fluir para uma partição, espera-se que o atraso da marca d'água para essa partição continue a aumentar até que a janela de chegada tardia seja atingida.

Por exemplo, se a janela de chegada tardia for de 6 horas e os dados de entrada não estiverem a fluir para a partição de entrada 1, o atraso da marca d'água para a partição de saída 1 aumentará até atingir as 6 horas. Pode verificar se a origem de entrada está a produzir dados conforme esperado.

A distorção de dados de entrada causa um atraso elevado na marca d'água

Conforme mencionado no caso anterior, quando a tarefa embaraçosamente paralela tem um atraso de marca d'água elevado, a primeira coisa a fazer é dividir a métrica Atraso da Marca d'Água pela dimensão ID da Partição . Em seguida, pode identificar se todas as partições têm um atraso de marca d'água elevado ou apenas algumas delas.

No exemplo seguinte, as partições 0 e 1 têm um atraso de marca d'água superior (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 constantes em cerca de 8 a 10 segundos.

Captura de ecrã a mostrar um gráfico que mostra o Atraso da Marca d'Água dividido pelo ID da Partição para o caso de distorção de dados.

Vamos verificar o aspeto dos dados de entrada para todas estas partições com a métrica Eventos de Entrada divididos pelo ID da Partição:

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

Que medidas adicionais pode tomar?

Conforme mostrado no exemplo, as partições (0 e 1) que têm um atraso de marca d'água elevada estão a receber significativamente mais dados de entrada do que outras partições. Chamamos a esta distorção de dados. Os nós de transmissão em fluxo que estão a processar as partições com distorção de dados precisam de consumir mais recursos de CPU e memória do que outros, conforme mostrado na seguinte captura de ecrã.

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

Os nós de transmissão em fluxo que processam partições com maior distorção de dados apresentarão uma maior utilização da CPU e/ou da unidade de transmissão em fluxo (SU). Esta utilização afetará o desempenho da tarefa e aumentará o atraso da marca d'água. Para mitigar esta situação, tem de criar novas partições dos dados de entrada de forma mais uniforme.

Também pode depurar este problema com o diagrama de trabalho físico. Veja Diagrama de tarefas físicas: identificar os eventos de entrada distribuídos irregulares (distorção de dados).

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

Quando uma tarefa embaraçosamente paralela tem um atraso crescente de marca d'água, pode acontecer não apenas numa ou em várias partições, mas em todas as partições. Como pode confirmar que o seu trabalho está a cair neste caso?

  1. Divida a métrica Atraso da Marca d'Água por ID da Partição. Por exemplo:

    Captura de ecrã a mostrar um gráfico que mostra o Atraso da Marca d'Água dividido pelo ID da Partição para o caso da CPU e da memória sobrecarregadas.

  2. Divida a métrica Eventos de Entrada por ID de Partição para confirmar se existe distorção de dados nos dados de entrada para cada partição.

  3. Verifique a utilização da CPU e da SU para ver se a utilização em todos os nós de transmissão em fluxo é demasiado elevada.

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

  4. Se a utilização da CPU e da SU for muito elevada (mais de 80 por cento) em todos os nós de transmissão em fluxo, pode concluir que esta tarefa tem uma grande quantidade de dados a serem processados em cada nó de transmissão em fluxo.

    Pode verificar ainda quantas partições são alocadas a um nó de transmissão em fluxo ao verificar a métrica Eventos de Entrada . Filtre por ID do nó de transmissão em fluxo com a dimensão Nome do Nó e divida por ID de Partição.

    Captura de ecrã a mostrar um gráfico que mostra a contagem de partições num nó de transmissão em fluxo para o caso de CPU e memória sobrecarregadas.

  5. A captura de ecrã anterior mostra que quatro partições são alocadas a um nó de transmissão em fluxo que ocupa cerca de 90 a 100 por cento do recurso de nó de transmissão em fluxo. Pode utilizar uma abordagem semelhante para verificar os restantes nós de transmissão em fluxo para confirmar que também estão a processar dados de quatro partições.

Que medidas adicionais pode tomar?

Poderá querer reduzir a contagem de partições de cada nó de transmissão em fluxo para reduzir os dados de entrada de cada nó de transmissão em fluxo. Para tal, pode duplicar as SUs para que cada nó de transmissão em fluxo processe dados de duas partições. Em alternativa, pode quadruplicar as SUs para que cada nó de transmissão em fluxo processe 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 transmissão em fluxo, veja Compreender e ajustar unidades de transmissão em fluxo.

O que deve fazer se o atraso da marca d'água continuar a aumentar quando um nó de transmissão em fluxo está a processar dados de uma partição? Crie novas partições com mais partições para reduzir a quantidade de dados em cada partição. Para obter detalhes, veja Utilizar a criação de partições para otimizar as tarefas do Azure Stream Analytics.

Também pode depurar este problema com o diagrama do trabalho físico. Veja Diagrama de trabalho físico: identificar a causa da CPU ou memória sobrecarregada.

Passos seguintes