Glossaire · Performance
Latence en percentile
En anglais : Percentile latency
Également appelé : p50, p90, p95, p99
Définition
Mesure du temps de réponse comme le p95 ou le p99, qui indique le temps sous lequel cette part des requêtes s'est terminée et révèle la queue lente que la moyenne cache.
La latence en percentile décrit les temps de réponse par rang plutôt que par moyenne. Le p95 est la valeur à laquelle ou en dessous de laquelle se situent 95 % des requêtes ; seuls les 5 % les plus lents ont pris plus de temps. Le p50 est la médiane, l’expérience typique. Le p99 et le p99.9 décrivent la queue de distribution : les requêtes les plus lentes, souvent celles que les utilisateurs remarquent et dont ils se plaignent.
Pourquoi les percentiles valent mieux que les moyennes
Prenons 100 requêtes : 90 prennent 100 ms et 10 prennent 2 000 ms.
| Statistique | Valeur |
|---|---|
| Moyenne | 290 ms |
| p50 (médiane) | 100 ms |
| p95 | 2 000 ms |
| p99 | 2 000 ms |
La moyenne de 290 ms ne décrit aucune requête réellement survenue. Elle semble acceptable, et pourtant un utilisateur sur dix a attendu deux secondes. Les percentiles montrent les deux réalités : la plupart des requêtes sont rapides, et la queue est très lente. Les moyennes sont aussi tirées par quelques valeurs aberrantes extrêmes, alors que la médiane ne l’est pas.
La queue compte plus qu’il n’y paraît. Un seul chargement de page déclenche souvent de nombreux appels backend, et une session utilisateur comprend de nombreux chargements de page : une grande partie des utilisateurs tombera donc sur au moins une requête aussi lente que le p99 au cours d’une visite.
Utiliser les percentiles dans les tests
Les objectifs de performance et les quality gates doivent être exprimés en percentiles. Dans k6 :
export const options = {
thresholds: {
http_req_duration: ['p(50)<200', 'p(95)<500', 'p(99)<1500'],
},
};
Présentez plusieurs percentiles ensemble (p50, p95, p99, max), avec le débit et le taux d’erreur, car chacun raconte une partie différente de l’histoire.
Erreurs fréquentes
- Faire la moyenne de percentiles. La moyenne des p95 de dix serveurs n’est pas le p95 global. Les percentiles doivent être calculés à partir des données brutes combinées ou d’histogrammes fusionnables.
- Trop peu d’échantillons. Un p99 calculé sur 200 requêtes repose sur deux points de mesure. Faites tourner le test assez longtemps pour avoir des effectifs significatifs dans la queue.
- Ignorer les erreurs. Une requête qui échoue vite, en 5 ms, peut améliorer artificiellement la latence. Lisez toujours la latence à côté du taux d’erreur.
- Omission coordonnée (coordinated omission). Un outil de charge qui attend chaque réponse lente avant d’envoyer la requête suivante envoie discrètement moins de requêtes pendant les ralentissements, ce qui sous-estime la latence de queue. Une génération de charge par taux d’arrivée (modèle ouvert) atténue ce problème.