Depurar usando o diagrama de trabalho físico (visualização) no portal do Azure
O diagrama de trabalho físico no portal do Azure pode ajudá-lo a visualizar as principais métricas do seu trabalho com o nó de streaming em formato de diagrama ou tabela, por exemplo: utilização da CPU, utilização da memória, eventos de entrada, IDs de partição e atraso de marca d'água. Ele ajuda você a identificar a causa de um problema quando você solucionar problemas.
Este artigo demonstra como usar o diagrama de trabalho físico para analisar o desempenho de um trabalho e identificar rapidamente seu gargalo no portal do Azure.
Importante
Este recurso está atualmente em visualização. Veja Termos de Utilização Complementares da Pré-visualizações do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão na versão beta, na pré-visualização ou que ainda não foram lançadas para disponibilidade geral.
Identificar o paralelismo de um trabalho
Trabalho com paralelização é o cenário escalável no Stream Analytics que pode fornecer o melhor desempenho. Se um trabalho não estiver no modo paralelo, ele provavelmente terá certo gargalo para seu desempenho. É importante identificar se um trabalho está em modo paralelo ou não. O diagrama de trabalho físico fornece um gráfico visual para ilustrar o paralelismo do trabalho. No diagrama de trabalho físico, se houver interação de dados entre diferentes nós de streaming, esse trabalho é um trabalho não paralelo que precisa de mais atenção. Por exemplo, o diagrama de trabalho não paralelo abaixo:
Você pode considerar otimizá-lo para trabalho paralelo (como exemplo abaixo) reescrevendo sua consulta ou atualizando as configurações de entrada/saída com o simulador de diagrama de trabalho na extensão ASA do Visual Studio Code ou no editor de consultas no portal do Azure. Para saber mais, consulte Otimizar consulta usando simulador de diagrama de trabalho (visualização).
Principais métricas para identificar o gargalo de um trabalho paralelo
Atraso de marca d'água e eventos de entrada em backlog são as principais métricas para determinar o desempenho do seu trabalho do Stream Analytics. Se o atraso da marca d'água do seu trabalho está aumentando continuamente e os eventos de entrada estão atrasados, seu trabalho não consegue acompanhar a taxa de eventos de entrada e produzir saídas em tempo hábil. Do ponto de vista dos recursos computacionais, os recursos de CPU e memória são utilizados em alto nível quando este caso acontece.
O diagrama de trabalho físico visualiza essas métricas-chave no diagrama juntas para fornecer uma imagem completa delas para identificar o gargalo facilmente.
Para obter mais informações sobre a definição de métricas, consulte Dimensão do nome do nó do Azure Stream Analytics.
Identificar os eventos de entrada distribuídos desigualmente (distorção de dados)
Quando você já tem um trabalho em execução no modo paralelo, mas observa um atraso de marca d'água alto, use esse método para determinar o motivo.
Para localizar a causa raiz, abra o diagrama de trabalho físico no portal do Azure. Selecione Diagrama de tarefas (visualização) em Monitoramento e alterne para Diagrama físico.
A partir do diagrama físico, você pode identificar facilmente se todas as partições têm alto atraso de marca d'água, ou apenas algumas delas, visualizando o valor de atraso de marca d'água em cada nó ou escolhendo a configuração de mapa de calor de atraso de marca d'água para classificar os nós de streaming (recomendado):
Depois de aplicar as configurações de mapa de calor feitas acima, você obterá os nós de streaming com alto atraso de marca d'água no canto superior esquerdo. Em seguida, você pode verificar se os nós de streaming correspondentes estão tendo mais eventos de entrada significativos do que outros. Neste exemplo, o streamingnode#0 e o streamingnode#1 estão tendo mais eventos de entrada.
Você pode verificar ainda quantas partições são alocadas aos nós de streaming individualmente para descobrir se mais eventos de entrada são causados por mais partições alocadas ou qualquer partição específica com mais eventos de entrada. Neste exemplo, todos os nós de streaming estão tendo duas partições. Isso significa que o streamingnode#0 e streamingnode#1 estão tendo certas partições específicas que contêm mais eventos de entrada do que outras partições.
Para localizar qual partição tem mais eventos de entrada do que outras partições em streamingnode#0 e streamingnode#1, execute as seguintes etapas:
- Selecione Adicionar gráfico na seção do gráfico
- Adicionar eventos de entrada na métrica e ID de partição no divisor
- Selecione Aplicar para exibir o gráfico de eventos de entrada
- Marque streamingnode#0 e streamingnode#1 no diagrama
Você verá o gráfico abaixo com a métrica de eventos de entrada filtrada pelas partições nos dois nós de streaming.
Que outras medidas pode tomar?
Como mostrado no exemplo, as partições (0 e 1) têm mais dados de entrada do que outras partições. Chamamos isso 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. Esse desequilíbrio leva a um desempenho mais lento e aumenta o atraso da marca d'água. Você pode verificar o uso da CPU e da memória nos dois nós de streaming, bem como no diagrama físico. Para mitigar o problema, você precisa reparticionar seus dados de entrada de forma mais uniforme.
Identificar a causa da sobrecarga da CPU ou da memória
Quando um trabalho paralelo tem um atraso crescente de marca d'água sem a situação de distorção de dados mencionada anteriormente, isso pode ser causado por uma quantidade significativa de dados em todos os nós de streaming que inibe o desempenho. Você pode identificar que o trabalho tem essa característica usando o diagrama físico.
Abra o diagrama de trabalho físico, vá para o portal do Azure de trabalho em Monitoramento, selecione Diagrama de trabalho (visualização) e alterne para Diagrama físico. Você verá o diagrama físico carregado como abaixo.
Verifique a utilização da CPU e da memória em cada nó de streaming para ver se a utilização em todos os nós de streaming é muito alta. Se a utilização de CPU e SU for alta (mais de 80%) em todos os nós de streaming, você poderá concluir que esse trabalho tem uma grande quantidade de dados sendo processados dentro de cada nó de streaming.
A partir do caso acima, a utilização da CPU é de cerca de 90% e a utilização da memória já é de 100%. Ele mostra que cada nó de streaming está ficando sem recursos para processar os dados.
Verifique quantas partições são alocadas em cada nó de streaming para que você possa decidir se precisa de mais nós de streaming para equilibrar as partições e reduzir a carga dos nós de streaming existentes.
Neste caso, cada nó de streaming está tendo quatro partições alocadas, o que parece muito para um nó de streaming.
Que outras medidas pode tomar?
Considere reduzir a contagem de partições para cada nó de streaming para reduzir os dados de entrada. Você pode dobrar os SUs alocados para cada nó de streaming para duas partições por nó aumentando a contagem de nós de streaming de 8 para 16. Ou você pode quadruplicar os SUs para que cada nó de streaming manipule dados de uma partição.
Para saber mais sobre a relação entre o nó de streaming e a unidade de streaming, consulte Compreender a unidade de streaming e o nó de streaming.
O que você deve fazer se o atraso da marca d'água ainda estiver aumentando quando um nó de streaming estiver manipulando 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.
Próximos passos
- Introdução ao Stream Analytics
- Diagrama de tarefas do Stream Analytics (visualização) no portal do Azure
- Métricas de trabalho do Azure Stream Analytics
- Trabalhos do Scale Stream Analytics
- Referência de linguagem de consulta do Stream Analytics
- Analise o desempenho do trabalho do Stream Analytics usando métricas e dimensões