Saltar al contenido

Volver al blog

Rendimiento

Por qué tu p99 miente

· 9 min

El p99 es la métrica estándar para la latencia de cola, pero rutinariamente se calcula de formas que esconden justo los problemas que debería capturar. Un dashboard en verde no significa que la experiencia del 1% más lento de los usuarios esté bien, significa que la cuenta que generó ese número escondió lo que les estaba pasando.

Ilustración de una curva de distribución con cola larga

Percentil de percentiles no es percentil

Un error común es agregar el p99 entre múltiples instancias, o entre ventanas de tiempo, sacando el promedio (o el propio percentil) de los percentiles ya calculados de cada una. Matemáticamente esto descarta información: una instancia consistentemente lenta puede diluirse en el promedio de las demás y nunca aparecer en el número final, aunque uno de cada cien usuarios de esa instancia específica esté teniendo una mala experiencia todo el tiempo.

Coordinated omission: el benchmark que miente solo

Un generador de carga que espera la respuesta antes de enviar la siguiente solicitud submuestrea precisamente las solicitudes lentas, mientras el servidor está ocupado procesando una de ellas, se envían menos solicitudes en ese intervalo, así que el período más lento del sistema termina subrepresentado en la muestra final. El resultado es un percentil medido en la prueba mucho mejor de lo que producción realmente va a entregar, donde las solicitudes siguen llegando sin importar lo que esté haciendo el servidor.

El muestreo también distorsiona la cola

Recolectar métricas por muestreo (registrar solo 1 de cada N solicitudes) funciona bien para la mediana, pero es estadísticamente inestable para p99 y p999 justamente porque son eventos raros, menos muestras en la cola significan intervalos de confianza mucho más amplios, y una línea de p99 suave en el dashboard puede ser solo un artefacto de pocas muestras ahí, no una señal real de estabilidad.

Lo que realmente ayuda

Los histogramas reales (como los del formato HDR) permiten calcular percentiles exactos a partir de la distribución cruda, en vez de agregar percentiles ya calculados por instancia, y las herramientas de prueba de carga con modelo abierto (que no esperan respuesta antes de disparar la siguiente solicitud) evitan el problema de coordinated omission desde la propia recolección. Ninguno de los dos es más trabajo del que ya se gasta hoy mirando un número que, en la práctica, está mintiendo.