Glossário · Performance
Latência por percentil
Em inglês: Percentile latency
Também chamado de: p50, p90, p95, p99
Definição
Medida de tempo de resposta, como p95 ou p99, que mostra em quanto tempo essa fração das requisições terminou e revela a cauda lenta que as médias escondem.
A latência por percentil descreve os tempos de resposta pela posição no ranking, e não pela média. O p95 é o valor igual ou abaixo do qual ficaram 95% das requisições; só os 5% mais lentos demoraram mais. O p50 é a mediana, a experiência típica. O p99 e o p99.9 descrevem a cauda: as requisições mais lentas, que costumam ser as que os usuários percebem e das quais reclamam.
Por que percentis são melhores que médias
Pegue 100 requisições: 90 levam 100 ms e 10 levam 2.000 ms.
| Estatística | Valor |
|---|---|
| Média | 290 ms |
| p50 (mediana) | 100 ms |
| p95 | 2.000 ms |
| p99 | 2.000 ms |
A média de 290 ms não descreve nenhuma requisição que realmente aconteceu. Ela parece aceitável, mas um em cada dez usuários esperou dois segundos. Os percentis mostram os dois fatos: a maioria das requisições é rápida, e a cauda é muito lenta. Além disso, a média é puxada por poucos outliers extremos, enquanto a mediana não é.
A cauda importa mais do que parece. Um único carregamento de página costuma fazer várias chamadas ao backend, e uma sessão de usuário envolve muitos carregamentos de página, então uma boa parcela dos usuários vai topar com pelo menos uma requisição no nível do p99 durante a visita.
Usando percentis nos testes
Metas e gates de performance devem ser escritos em percentis. No k6:
export const options = {
thresholds: {
http_req_duration: ['p(50)<200', 'p(95)<500', 'p(99)<1500'],
},
};
Reporte vários percentis juntos (p50, p95, p99, máximo), ao lado do throughput e da taxa de erros, porque cada um conta uma parte diferente da história.
Erros comuns
- Tirar a média de percentis. A média do p95 de dez servidores não é o p95 geral. Os percentis precisam ser calculados a partir dos dados brutos combinados ou de histogramas que possam ser mesclados.
- Amostras de menos. Um p99 calculado sobre 200 requisições se apoia em dois pontos de dados. Rode por tempo suficiente para ter contagens significativas na cauda.
- Ignorar os erros. Uma requisição que falha rápido, em 5 ms, pode fazer a latência parecer melhor. Leia sempre a latência ao lado da taxa de erros.
- Coordinated omission. Uma ferramenta de carga que espera cada resposta lenta antes de enviar a próxima requisição acaba enviando menos requisições justamente durante as lentidões, o que subestima a latência de cauda. Gerar carga por taxa de chegada (modelo aberto) reduz esse problema.