La mañana del 22 de septiembre, torun.ai empezó a arrastrarse. Una granja de navegadores automáticos, más de dos mil direcciones en tres cuartos de hora, pedía nuestras páginas públicas una a una, y en el peor minuto llegó a unas tres páginas por segundo. Una web debería aguantar eso sin inmutarse. La nuestra no: en la franja más cargada, más de una cuarta parte de las peticiones tardó más de treinta segundos, y cientos de visitantes se rindieron antes de que llegara la página.
No era la carga que suponíamos
Los sospechosos obvios eran el rastreador y el procesador. Ninguno se sostuvo. Al reproducir las mismas tres páginas por segundo contra una copia del sitio, aguantó menos de un minuto y luego dejó de completar nada. El uso del procesador cayó del 60 por ciento al 1 mientras los hilos subían de 12 a 166. Un servidor sobrecargado trabaja más; este estaba esperando.
Un viaje de ida y vuelta por cada palabra
Observar el servidor de caché durante una sola página mostró qué esperaba. Una página le envió 585 órdenes, y 428 eran una misma consulta y su renovación, una y otra vez: una tabla de traducciones que, para nuestro sitio, está vacía. Cada texto traducido de la página, y una página tiene cientos, la volvía a pedir, y cada petición retenía un hilo hasta que llegaba la respuesta. A tres páginas por segundo se agotaron los hilos y todo se puso a la cola detrás.
La corrección y un límite
Esas consultas se responden ahora desde memoria durante un minuto cada vez, se piden una sola vez al caducar y se borran en el servidor que cambia una traducción. La misma página envía ahora 31 órdenes en lugar de 585. También pusimos un límite delante de la generación de páginas: se generan a la vez un número fijo de páginas, espera una cola corta, y todo lo que pase de ahí recibe al instante un «inténtalo de nuevo en un momento» en lugar de ralentizar todas las páginas.
Medido en producción
Tras la versión del 23 de septiembre volvimos a medir el sitio en vivo. La página mediana se genera en 42 milisegundos, antes 249, y la más lenta de cada veinte en 72 milisegundos, antes casi dos segundos. La consulta que se ejecutaba 214 veces por página ahora se ejecuta una.
La lección que anotamos es sencilla: una cifra de capacidad es una medición, no una creencia. Nunca habíamos probado cuánto aguantaba el sitio público. Ahora sí, y volveremos a medir antes de dar una cifra.