Problema y alcance
Analiza las distribuciones de latencia de solicitudes individuales, las solicitudes compuestas y los objetivos de servicio. Asume 100 000 solicitudes por minuto, 80 ms de promedio, 180 ms en p95 y 2 s en p99. Estas son suposiciones para la entrevista, no puntos de referencia de la industria. Concéntrate en el razonamiento y la verificación en lugar de en una herramienta de proveedor específica.
Qué evalúa el entrevistador
El entrevistador busca comprobar que entiendes que un promedio describe el trabajo total, no la forma de la distribución. Las solicitudes de cola pueden agruparse por inquilino (tenant), ruta, dependencia, región, tamaño de la solicitud o ruta de reintentos. Las respuestas sólidas definen los límites de medición, las dimensiones de agregación, el impacto en el usuario, las causas del servidor y un SLO accionable.
Preguntas para aclarar
- ¿Se mide la latencia hasta el primer byte o hasta la respuesta completa?
- ¿El p99 es por instancia, ruta, región o para todo el servicio, y sobre qué ventana de tiempo?
- ¿Se incluyen tiempos de espera agotados (timeouts), cancelaciones, reintentos y aciertos de caché (cache hits)?
- ¿Cambian el tamaño de la solicitud, el inquilino, las llamadas a dependencias o los errores en la cola?
- ¿El objetivo es mejorar para todos o proteger un presupuesto de cola en la ruta crítica?
Estructura para una respuesta de 30 segundos
“Un promedio de 80 ms puede coexistir con un p99 de 2 s; el 1% más lento aún puede desencadenar timeouts de usuarios y servicios ascendentes. Fijaría el límite y la ventana, y luego dividiría la distribución por ruta, región, instancia, inquilino, tamaño de solicitud y dependencia. Inspeccionaría colas, grupos de conexiones (pools), GC, disco, bloqueos (locks), llamadas descendentes y reintentos. La solución debe coincidir con el cuello de botella: colas acotadas, timeouts razonables, procesamiento por lotes o almacenamiento en caché, menos dependencias seriales, aislamiento de inquilinos ruidosos y presupuestos de reintentos finitos. Validaría con SLO de p95/p99 y un presupuesto de errores (error budget).”
Diseño detallado paso a paso
Define los puntos de observación: tiempo total del cliente, del borde al servicio, procesamiento del servicio, espera de dependencias descendentes y transferencia de respuesta. Elige la semántica de primer byte o respuesta completa, utiliza un reloj monotónico y documenta el muestreo. Cuenta los timeouts y las cancelaciones por separado; vincula los reintentos a la solicitud original para que una sola acción del usuario no se contabilice como múltiples éxitos independientes.
Los percentiles deben provenir de muestras de solicitudes; promediar los valores p99 de las instancias no es válido. Desglosa los percentiles y los recuentos de muestras por ruta, estado, región, instancia, inquilino, tamaño de solicitud y dependencia. Las ventanas cortas revelan regresiones pero presentan fluctuaciones (jitter); las ventanas largas estabilizan los SLO pero pueden ocultar un despliegue defectuoso. Muestra ambas.
Las solicitudes compuestas amplifican las colas. Las llamadas seriales suman sus etapas; las llamadas paralelas terminan cerca de la latencia máxima secundaria. Asigna presupuestos a cada etapa, registra tramos de traza (trace spans) e inspecciona la dispersión (fan-out). El promedio de un servicio no puede predecir la experiencia integral de la página.
Diagnostica la correlación antes de adivinar. El aumento en la antigüedad de la cola sugiere presión de capacidad o de admisión; la espera en los pools indica límites de concurrencia; el GC, el disco y la fluctuación de CPU generan colas; un p99 lento de un servicio descendente se propaga hacia arriba. Compara muestras exitosas y con timeouts mediante atributos de solicitud y conserva un contexto controlado para las trazas lentas.
Adapta el remedio a la causa. Menos llamadas seriales, almacenamiento en caché o procesamiento por lotes reducen la sobrecarga fija; la concurrencia acotada, la contrapresión (backpressure) y el aislamiento de inquilinos previenen la congestión; los timeouts finitos y los reintentos con fluctuación aleatoria (jitter) evitan tormentas de reintentos; el trabajo asíncrono elimina tareas impredecibles de la ruta síncrona. Añadir solo más hilos o réplicas puede alargar la cola.
Expresa un SLO como la fracción de solicitudes que califican y cumplen un umbral, como el 99.9% por debajo de 300 ms. Un error budget combina infracciones de latencia y errores en las decisiones de despliegue. Especifica su punto de entrada (ingress), estados, semántica de caché y ventana. Un objetivo basado únicamente en el promedio puede permanecer en verde mientras los usuarios más lentos se ven afectados.
Valida los cambios en la distribución durante los despliegues y simulacros. Compara p50, p95, p99, máximo, tasa de timeouts y recuento de muestras antes y después. Inyecta latencia en dependencias, crea solicitudes de inquilinos grandes y agota un pool para verificar el aislamiento y la degradación. Tras la recuperación, inspecciona el drenaje de colas y la amplificación de reintentos, no solo la media.
Respuesta de muestra de alta calidad
“El promedio de 80 ms y el p99 de 2 s significan una clara cola larga; el 1% más lento puede desencadenar timeouts de usuarios o servicios ascendentes. Estandarizaría los límites de tiempo, separaría el primer byte, la respuesta completa, la cancelación y los reintentos, y luego dividiría por ruta, región, instancia, inquilino, tamaño de solicitud y dependencia. Además, una página suma llamadas seriales y toma el máximo de las llamadas paralelas, por lo que los trace spans necesitan presupuestos por etapa.
Tras identificar colas, pools, GC, disco o latencia descendente, usaría concurrencia acotada, almacenamiento en caché o procesamiento por lotes, menos dependencias seriales, aislamiento de inquilinos y reintentos finitos. Validaría con un SLO de 99.9% por debajo de 300 ms, un error budget y comparaciones de percentiles entre despliegues, asegurando que la cola mejore sin ocultar errores o problemas de corrección.”
Errores comunes
- Reportar solo el promedio → los usuarios en la cola desaparecen → reporta percentiles, muestras y timeouts.
- Promediar valores p99 de instancias → los percentiles no se promedian linealmente → agrega muestras o intervalos de histograma (buckets) correctamente.
- Contar reintentos como nuevas solicitudes de usuario → la carga y la experiencia se representan incorrectamente → vincula los intentos al original.
- Medir solo el tiempo del servidor → la red, la cola y la transferencia desaparecen → define un límite de extremo a extremo.
- Añadir hilos sin límite → la contención y el encolamiento alargan la cola → usa concurrencia acotada y contrapresión.
- Reintentar cada timeout a ciegas → una tormenta de reintentos colapsa las dependencias → usa presupuestos, jitter y límites de tiempo (deadlines).
- Establecer un único SLO global → un inquilino o región puede degradarse silenciosamente → segmenta por dimensiones críticas.
- Observar solo la media tras un despliegue → las regresiones permanecen ocultas → compara múltiples percentiles y ventanas.
Preguntas y respuestas de seguimiento
Pregunta de seguimiento 1: ¿Por qué p99 no es la solicitud más lenta?
p99 significa que aproximadamente el 99% de las muestras no son más lentas que ese valor; alrededor del 1% son más lentas. El máximo es sensible a una sola anomalía y al tamaño de la muestra, por lo que ambos tienen usos diferentes.
Pregunta de seguimiento 2: Una página tiene cinco llamadas paralelas. ¿Cómo estimas la experiencia?
La etapa paralela se sitúa cerca de la latencia máxima secundaria más la programación y transferencia del cliente. Mide el tiempo total de la página y rastrea qué llamada secundaria se convierte con mayor frecuencia en el máximo.
Pregunta de seguimiento 3: ¿Cuándo es aceptable una mayor latencia de cola?
Las exportaciones fuera de línea o los trabajos en segundo plano de baja frecuencia pueden intercambiar latencia por rendimiento (throughput); las rutas críticas interactivas normalmente no pueden. Define los SLO por clase de solicitud.
Pregunta de seguimiento 4: ¿Por qué son mejores los histogramas que los promedios?
Los histogramas retienen los buckets y la forma de la distribución, lo que permite estimar varios percentiles e inspeccionar la cola. La agregación aún requiere atención a los límites de los buckets y al recuento de muestras.
Pregunta de seguimiento 5: ¿Cómo separas la cola debida a esperas de la cola de servicios descendentes?
Registra los tramos de espera, procesamiento y servicios descendentes por separado. El aumento conjunto del tiempo de cola y del servicio sugiere problemas de capacidad; el crecimiento exclusivo de la dependencia descendente apunta a esa dependencia o a sus reintentos.
Pregunta de seguimiento 6: ¿Cómo ayuda un error budget al trabajo de latencia?
Cuenta las infracciones de umbral como consumo del presupuesto. Un consumo rápido pausa los despliegues riesgosos y prioriza las correcciones de la cola; el presupuesto restante permite experimentos controlados.