Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a esta recomendação da lista de verificação de Eficiência de Desempenho do Azure Well-Architected Framework:
| PE:04 | Estabelecer uma medição de desempenho consistente para que o comportamento possa ser analisado ao longo do tempo, comparado com as linhas de base e usado para detetar degradação, ineficiência e lacunas de escalabilidade. |
|---|
Sem dados de desempenho, os problemas subjacentes e as oportunidades de otimização passam despercebidos, levando a uma experiência de utilizador degradada.
Este artigo descreve estratégias de conceção para implementar medição de desempenho em múltiplas camadas que capturam latência, taxa de transferência e comportamento dos recursos para estabelecer linhas de base e identificar degradação de desempenho ao longo da carga de trabalho.
As principais estratégias-chave deste artigo baseiam-se na prática operacional fundamental da observabilidade, descrita em OE:07 Estratégias de arquitetura para o design de um sistema de monitorização. Orientações sobre a implementação da prática de monitorização estão disponíveis no Guia de Design de Monitorização. Recomendamos que revejas esses recursos primeiro. As recomendações deste guia focam no desempenho. Para informações sobre fiabilidade, consulte Estratégias da Arquitetura RE:10 para desenhar uma estratégia fiável de monitorização e alerta.
Definições
| Term | Definition |
|---|---|
| Registos de atividades | Logs que rastreiam operações de gerenciamento em recursos, como a exclusão de um recurso. |
| Registos de aplicações | Registos que monitorizam informações sobre eventos da aplicação, erros e outras atividades, tais como inícios de sessão e falhas de ligação à base de dados. |
| Ferramenta de monitoramento de desempenho de aplicativos (APM) | Uma ferramenta que monitora e relata o desempenho de um aplicativo. |
| Baselines | Métricas de desempenho esperado do sistema usadas como ponto de referência para detetar desvios, regressões e melhorias ao longo do tempo. |
| Instrumentação de código | A captura direta ou indireta de métricas de desempenho da perspetiva do código do aplicativo. As métricas capturadas incluem métricas de fluxo, uso de recursos e métricas específicas para a linguagem ou tempo de execução. |
| Rastreio distribuído | Recolha e correlação de métricas dos componentes distribuídos da carga de trabalho para compreender os fluxos de transações de ponta a ponta. |
| Latency | O atraso de tempo entre iniciar um pedido e receber uma resposta, medir a resposta do sistema. |
| Metrics | Medições numéricas que registam o comportamento de desempenho da carga de trabalho ao longo do tempo, normalmente agregadas para análise. |
| Percentis (p50, p95, p99) | Medidas estatísticas que mostram a distribuição do desempenho; O P50 representa o desempenho típico, o P95 mostra a maior parte da experiência do utilizador sob carga, o P99 capta o desempenho do pior cenário. |
| Métricas da plataforma | Valores numéricos que registram o desempenho da carga de trabalho em um determinado momento. |
Usar métricas baseadas em percentis
Mede métricas de desempenho, como latência, tempo de resposta ou tempos de carregamento, com percentis (p50, p95, p99), não médias. As médias podem ser enganadoras. Se a maioria dos pedidos forem rápidas, mas alguns forem extremamente lentos, a média ocultará a má experiência.
Os percentis mostram o comportamento nos extremos, o que é importante para compreender a experiência do utilizador. O P50 representa o desempenho típico, o P95 mostra o que a maioria dos utilizadores experimenta sob carga, e o P99 capta o desempenho no pior caso ou os valores fora do comum.
Recolha dados de desempenho usando as suas ferramentas de monitorização e represente-os como percentis ao longo de janelas temporais definidas. Use-os como base para monitorização, alertas e análise de desempenho.
Defina os seus limites de melhoria de desempenho
Defina limites claros de desempenho para saber exatamente o que está incluído nas suas medições. Divide a latência em todo o sistema em vez de a tratares como um único número. Por exemplo, atribuir tempo a cada camada onde isso inclui serviços de borda, gateways, computação e dependências, para ver onde os atrasos realmente ocorrem.
Separa o que controlas do que não controlas: o teu código, serviços, infraestrutura e dependências diretas de fatores externos como condições do lado do cliente, resolução DNS, latência do ISP ou restrições do dispositivo. Esta distinção previne atribuições erradas e mantém a otimização focada nas áreas onde pode fazer alterações, ao mesmo tempo que reflete a experiência completa do utilizador de ponta a ponta.
Avalie quando e onde os problemas de desempenho afetam a experiência do utilizador. Compensar essa degradação através do design ou mitigar através de melhorias nas partes controláveis do sistema.
Sinais de segmento por ambiente e finalidade
Segmente os dados de desempenho para que cada sinal reflita um contexto claro. Separe por ambiente e propósito para evitar misturar sinais que se comportam de forma diferente ou servem decisões diferentes.
Mantém os dados de produção e não produção separados. Os dados de produção refletem o impacto real do utilizador e devem impulsionar a monitorização e alertas. Os dados não produtivos são úteis para testes e ajustes, mas combiná-los com produção distorce os resultados e esconde problemas reais.
Separa métricas de desempenho das métricas de negócio. As métricas de desempenho acompanham o comportamento do sistema e a saúde da carga de trabalho, enquanto as métricas de negócio acompanham os resultados. Mesmo quando se sobrepõem, mantenha-os em fluxos distintos para que cada um possa ser analisado e usado de forma independente.
Crie alertas de desempenho com âmbito definido e acionáveis
O objetivo dos alertas é a deteção precoce da degradação do desempenho antes que se torne visível para o utilizador ou tenha impacto no negócio. Criar alertas em dois níveis: experiência do utilizador de ponta a ponta e transações internas centrais que representam caminhos críticos do sistema sob carga.
Use um conjunto de dados único e consistente em cada ambiente tanto para alvos como para alertas. Se os alertas forem baseados em dados diferentes dos seus objetivos de desempenho, tornam-se pouco fiáveis e difíceis de confiar.
Crie alertas que sejam acionáveis e claramente ligados aos resultados de desempenho. Cada alerta deve indicar qual o limiar que teve uma violação sustentada, o impacto potencial e os componentes envolvidos, para que fique claro onde investigar e o que é afetado. Comece com limiares padrão e bem conhecidos, depois aperfeiçoe-os ao longo do tempo com base no comportamento observado do sistema e nas características da carga de trabalho.
Quando não for possível alertar diretamente numa dependência externa, utilize sinais indiretos como duração da chamada de dependência, taxas de erro ou comportamento de timeout para aproximar o seu impacto no desempenho do sistema.
Elasticidade do monitor
Meça como o seu sistema responde a mudanças na procura e aos eventos de escalabilidade.
Acompanhe a latência de arranque a frio e de início para perceber como a sobrecarga de arranque afeta a capacidade de resposta, especialmente durante eventos de aumento de escala. Monitorizar o comportamento de Scale-Out e Scale-In para avaliar a rapidez com que o sistema se adapta às alterações de carga e se as ações de escalamento acompanham a procura.
Desempenho da pista ao longo do tempo
Acompanhe como o desempenho evolui com as alterações no seu design e fatores externos.
Estabeleça referências que representem o desempenho esperado do sistema e compare o comportamento atual com eles para detetar desvios, incluindo regressões e melhorias.
Ligue alterações de desempenho a eventos operacionais, como implementações, atualizações de configuração e ações de escalabilidade. Anota linhas temporais com estes eventos para que as mudanças de comportamento tenham um contexto claro e possam ser rastreadas até causas prováveis.
Utilize esta visibilidade contínua como um ciclo de feedback para decisões de engenharia. Alimente insights de desempenho sobre planeamento e priorização, e trate-os como insumos para o trabalho regular e não apenas como resposta a incidentes.
Aperfeiçoe continuamente os objetivos de desempenho à medida que o sistema evolui. Ajuste SLOs, limiares e expectativas com base no comportamento observado e nos padrões de utilização para que os alvos permaneçam realistas e alinhados com a experiência real do utilizador.
Coletar dados de desempenho do aplicativo
É necessário ter as métricas de desempenho da aplicação, como throughput, latência e tempos de conclusão, recolhidas principalmente através do código de instrumentação.
Instrumente caminhos críticos de execução onde o desempenho é mais visível: fluxos de pedidos chave, operações intensivas em recursos e pontos onde ocorrem dependências externas ou tentativas repetidas. Garantir a visibilidade das transações de ponta a ponta para que o tempo total de execução e os seus passos contribuintes possam ser medidos.
Capturar três tipos principais de sinais de desempenho:
- Métricas para comportamento agregado de desempenho (distribuições de latência, rendimento, taxas de erro)
- Traços para compreender como o tempo é distribuído entre caminhos de pedido e componentes do sistema
- Registos para contexto detalhado de execução em etapas ou eventos específicos
Use metadados consistentes entre estes sinais para que os dados de desempenho possam ser correlacionados entre camadas do sistema e entre serviços.
Evite duplicar sinais de desempenho de nível inferior já expostos pela plataforma, a menos que seja necessária uma granularidade adicional para explicar comportamentos ou gargalos específicos da carga de trabalho.
Coletar dados de desempenho de recursos
Recolha dados de desempenho ao nível dos recursos para compreender como os componentes da infraestrutura se comportam sob carga e como contribuem para o desempenho global da carga de trabalho.
Cada serviço expõe métricas específicas da plataforma que refletem a sua saúde e características de desempenho. Use definição de diagnóstico para exportar estes dados para acesso em alertas, painéis de controlo e análises de longo prazo além da retenção curta na plataforma.
Recolha métricas e registos de todos os recursos. Acompanhe a utilização de computação e armazenamento em relação aos intervalos esperados para confirmar que o sub-provisionamento não está a introduzir latência nem a degradar o desempenho sob carga. O sobreprovisionamento também pode ser identificado com estes dados ao examinar a utilização do P99 e compará-la com a margem disponível nos seus recursos.
Monitorizar o tráfego de rede como parte do desempenho dos recursos. Analise o fluxo de tráfego através de sub-redes e limites de serviços para compreender a latência, congestionamento e padrões de transferência de dados que possam afetar o desempenho da carga de trabalho.
Coletar dados de banco de dados e armazenamento
Os sistemas de bases de dados e armazenamento produzem sinais de desempenho especializados para identificar gargalos, validar a capacidade e compreender o comportamento da carga de trabalho. Estes sinais provêm tipicamente de ferramentas de monitorização integradas e registos gerados pelo sistema.
Foque-se nas dimensões-chave de desempenho:
| Área | O que medir | O que te diz |
|---|---|---|
| Capacidade de processamento | Volume de leitura/escrita ao longo do tempo | Capacidade de transferência de dados |
| Latency | Tempo por operação de armazenamento | Capacidade de resposta do armazenamento |
| IOPS | Operações de leitura/escrita por segundo | Capacidade de gestão de transações |
| Utilização da capacidade | Armazenamento usado vs disponível | Necessidades de escalamento e planeamento de capacidade |
Para bases de dados, estenda a monitorização ao comportamento específico da carga de trabalho:
| Área | O que medir | O que te diz |
|---|---|---|
| Desempenho de consulta | Tempo de execução, frequência, utilização de recursos | Eficiência dos padrões de acesso a dados |
| Desempenho das transações | Duração, concorrência, contenção de bloqueio | Concorrência e eficiência transacional |
| Desempenho do índice | Fragmentação, uso, impacto na otimização | Eficácia das estruturas de aceleração de consultas |
| Utilização de recursos | CPU, memória, disco, rede | Restrições ao nível do sistema |
| Métricas de conexão | Ligações ativas, falhadas, abortadas | Estabilidade e pressão de ligação |
| Taxa de transação | Transações por segundo | Intensidade da carga de trabalho e alterações ao longo do tempo |
| Taxas de erro | Erros e falhas na base de dados | Sinais de fiabilidade e degradação de desempenho |
Use estes sinais em conjunto para distinguir entre consultas lentas, saturação de recursos e ineficiências estruturais. Isto permite uma otimização direcionada tanto em sistemas de armazenamento como em cargas de trabalho de bases de dados.
Recolha de dados de desempenho do sistema operativo
Para cargas de trabalho baseadas em infraestrutura, recolha métricas ao nível do sistema operativo para compreender como os recursos de computação estão a ser utilizados e onde podem ocorrer restrições de recursos.
Amostre contadores de desempenho do sistema operativo em intervalos regulares para captar o comportamento baseado no tempo do sistema sob carga.
| Área | O que medir | O que isso indica |
|---|---|---|
| CPU | Uso da CPU (utilizador/privilegiado), comprimento da fila da CPU | Cálculo da saturação e da pressão de agendamento |
| Processes | Contagem de fios, contagem de alças | Carga de processos ao nível da aplicação e do sistema operativo |
| Memory | Memória comprometida, memória disponível, taxa de paginação, uso de swaps | Pressão de memória e atividade de paginação |
| Disk | Taxa de leitura/gravação, throughput, utilização do disco | Desempenho e gargalos de I/O de armazenamento |
| Network | Débito de interface, erros RX/TX | Problemas de capacidade de rede e transmissão |
Utilize estes sinais para identificar a saturação de recursos ao nível do sistema operativo e distinguir entre ineficiências ao nível da aplicação e restrições de infraestrutura.
Gerar dados sintéticos, quando necessário
Se o seu sistema não for usado de forma consistente, é difícil saber se terá um bom desempenho quando o tráfego regressar.
Para resolver isto, utilize transações sintéticas, que enviam pedidos automáticos através do seu sistema. Estes simulam o uso real sem afetar utilizadores ou dados reais. Isto ajuda a manter partes do seu sistema ativas, gerar métricas de desempenho consistentes e revelar padrões (como problemas de hora do dia) que o uso irregular pode esconder.
Facilitação de Serviços do Azure
O Azure Monitor fornece uma plataforma unificada para recolher, analisar e responder a dados de desempenho em toda a sua carga de trabalho. Agrega dados de aplicações, infraestruturas e fontes externas numa plataforma de dados comum.
Recolha e armazenamento de dados: Use os espaços de trabalho do Log Analytics para centralizar os seus dados de desempenho com políticas de retenção configuráveis. Crie múltiplos espaços de trabalho para segmentar dados por ambiente ou requisitos de conformidade.
Monitorização de aplicações: O Application Insights recolhe telemetria ao nível da aplicação, incluindo taxas de pedido, tempos de resposta e exceções. Permitir o rastreamento distribuído para correlacionar o desempenho entre componentes distribuídos.
Monitorização da infraestrutura: Ative as definições de diagnóstico em todos os serviços Azure para recolher registos e métricas da plataforma. Use a extensão Azure Diagnostics para dados detalhados de desempenho da VM. Explore opções de telemetria para a sua plataforma específica. Por exemplo, clusters de Kubernetes emitem telemetria detalhada de desempenho através de integrações Prometheus.
Base de dados e armazenamento: O Azure Monitor fornece monitorização integrada para Azure SQL Database, MySQL, PostgreSQL e serviços de armazenamento. O Azure Storage Analytics acompanha indicadores-chave de desempenho, como a taxa de transferência e a latência em Blob, Table e Queue Storage.
Alertas e análise: Crie regras de alerta com limiares, janelas temporais e ações personalizáveis (email, webhooks, Azure Functions). Use os Azure Monitor Logs para cruzar consultas e correlacionar dados de desempenho. Para obter detalhes de preços, consulte Preços do Azure Monitor.
Exemplos
- Aplicação de linha de base com alta disponibilidade e redundância por zona de aplicação web de serviços de aplicação
- Monitorar um aplicativo de microsserviços no Serviço Kubernetes do Azure (AKS)
- Monitorizar componentes da zona de aterragem das plataformas Azure
Ligações relacionadas
Lista de verificação de eficiência de desempenho
Consulte o conjunto completo de recomendações.