Todos os produtos
Search
Central de documentação

Application Real-Time Monitoring Service:Como o ARMS calcula métricas de quantil

Última atualização: Jun 27, 2026

O Application Real-Time Monitoring Service (ARMS) utiliza métricas de quantil, como P50, P75, P90 e P99, para representar as distribuições de latência na sua aplicação. Este tópico aborda como o agente do ARMS computa esses quantis, os compromissos de precisão da abordagem de histograma e quando utilizar quantis baseados em agente em vez dos quantis do Trace Explorer.

Métricas de quantil no monitoramento

A latência média oculta outliers. Se 99% das requisições forem concluídas em 10 ms, mas 1% levar 5.000 ms, a média parecerá saudável, enquanto uma parcela significativa dos usuários enfrentará baixo desempenho.

Os quantis (também chamados de percentis) resolvem esse problema ao mostrar a latência em pontos específicos da distribuição:

Quantil

Significado

P50

A mediana. Metade de todas as requisições é mais rápida e a outra metade é mais lenta.

P75

75% das requisições são concluídas com esta latência ou menos.

P90

90% das requisições são concluídas com esta latência ou menos.

P99

99% das requisições são concluídas com esta latência ou menos. Apenas 1% é mais lento.

P90 e P99 são especialmente úteis para entender a latência de cauda — a experiência dos usuários mais lentos.

Exemplo

Considere 14 pontos de dados: [2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 20]

Os valores exatos dos quantis são:

  • P50: 10

  • P75: 16

  • P90: 18

  • P99: 20

Ative estatísticas de quantil

Para coletar métricas de quantil, ative Quantile Statistics no console do ARMS.

New console

Para obter detalhes, consulte Personalizar configurações para uma aplicação Java.

Quantile Statistics toggle in the new ARMS console

Old console

Para obter detalhes, consulte Personalizar configurações da aplicação.

Quantile Statistics toggle in the old ARMS console

Como o agente do ARMS calcula quantis

O agente do ARMS (v4.x e posterior) calcula quantis de latência usando um histograma de limites fixos com interpolação linear. Em vez de armazenar cada valor individual de latência, o agente conta quantas requisições se enquadram em cada bucket predefinido.

Limites dos buckets

Os limites padrão dos buckets são (em milissegundos):

[0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 10000.0]

Esses limites criam 16 buckets:

Bucket

Intervalo (ms)

0

(-Infinity, 0.0]

1

(0.0, 5.0]

2

(5.0, 10.0]

3

(10.0, 25.0]

4

(25.0, 50.0]

5

(50.0, 75.0]

6

(75.0, 100.0]

7

(100.0, 250.0]

8

(250.0, 500.0]

9

(500.0, 750.0]

10

(750.0, 1000.0]

11

(1000.0, 2500.0]

12

(2500.0, 5000.0]

13

(5000.0, 7500.0]

14

(7500.0, 10000.0]

15

(10000.0, +Infinity]

Etapas de cálculo

O cálculo possui duas fases: contagem por bucket e interpolação linear.

Fase 1: Contar requisições por bucket

A latência de cada requisição recebida incrementa o contador do bucket correspondente. Usando os dados de exemplo [2, 3, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 20]:

Bucket

Intervalo (ms)

Contagem

Valores

0

(-Infinity, 0.0]

0

--

1

(0.0, 5.0]

2

2, 3

2

(5.0, 10.0]

5

6, 7, 8, 9, 10

3

(10.0, 25.0]

7

12, 14, 15, 16, 17, 18, 20

4-15

(25.0, +Infinity]

0

--

Fase 2: Interpolação linear

Para calcular um quantil específico, o ARMS localiza o bucket alvo e realiza a interpolação dentro dele.

Exemplo passo a passo do P75:

  1. Encontre a posição alvo. Total de pontos de dados = 14. A posição P75 é 14 x 0,75 = 10,5. O ARMS arredonda esse valor para cima: a contagem cumulativa alvo é 11.

  2. Identifique o bucket alvo. Acumule as contagens da esquerda para a direita até que a soma atinja 11:

    • Bucket 0: cumulativo = 0

    • Bucket 1: cumulativo = 2

    • Bucket 2: cumulativo = 7

    • Bucket 3: cumulativo = 14 (primeiro a atingir 11) — este é o bucket alvo.

  3. Interpole dentro do bucket. Os buckets 0-2 já contabilizam 7 pontos de dados. O ARMS precisa de mais 4 pontos (11 - 7 = 4) do Bucket 3, que contém 7 pontos no total. O Bucket 3 abrange (10.0, 25.0]: P75 = 10.0 + (25.0 - 10.0) x 4 / 7 = 18.6

O P75 exato dos dados brutos é 16, mas a estimativa baseada em histograma é 18,6. Essa diferença ocorre porque a interpolação linear pressupõe que os dados estejam uniformemente distribuídos dentro de um bucket, o que raramente acontece. Quanto maior a largura do bucket, maior o erro potencial.

Compromissos de precisão

A abordagem de histograma de limites fixos é altamente eficiente, mas introduz erros de estimativa em determinados cenários.

Pontos fortes

  • Baixa sobrecarga. Apenas os contadores dos buckets são armazenados — não há necessidade de manter cada valor individual de latência na memória.

Limitações

Em cenários com latências extremamente baixas, latências extremamente altas ou muito poucas amostras, os quantis calculados podem ser imprecisos. A precisão depende de quão bem os limites dos buckets correspondem à sua distribuição real de latência:

Cenário

Impacto

Motivo

Latências concentradas em um bucket amplo

Erro maior

A interpolação linear assume distribuição uniforme dentro do bucket, mas os dados reais podem ser assimétricos.

Latências muito baixas (submilissegundo)

Erro maior

Todos os valores abaixo de 5 ms caem em um único bucket de 5 ms de largura, reduzindo a precisão.

Latências muito altas (acima de 10.000 ms)

Erro maior

Todos os valores acima de 10.000 ms caem no Bucket 15, que é aberto, tornando a interpolação menos confiável.

Poucas amostras

Erro maior

Com dados esparsos, o bucket onde um valor se enquadra tem um impacto desproporcional no resultado.

Latências distribuídas em buckets estreitos

Erro menor

Os buckets de 5 ms e 10 ms de largura na extremidade inferior fornecem granularidade mais fina.

Como o Trace Explorer calcula quantis

O Trace Explorer calcula quantis com base nas latências de todos os spans que satisfazem as condições de filtragem da página e nas funções SQL do Simple Log Service. Para mais informações, consulte a função approx_percentile em Visão geral das funções.