La trampa oculta de latencia en Kafka: linger.ms te está robando tiempo
Jack vanlightly desglosó un ajuste silencioso pero costoso de Kafka que la mayoría de los equipos deja en su valor por defecto.
El ajuste: linger.ms. Controla cuánto tiempo espera el broker para agrupar mensajes antes de enviarlos al disco.
El valor por defecto es cero. Eso significa que cada mensaje se escribe inmediatamente. En un sistema de alto rendimiento, eso son muchas escrituras en disco. Y las escrituras en disco son caras.
La solución es simple. Pon linger.ms en algo como 5 o 10 milisegundos. El broker ahora espera unos milisegundos, recoge un pequeño lote y los escribe juntos. Una escritura en lugar de diez.
El resultado: el rendimiento salta. La latencia por mensaje baja. El uso de CPU en el broker cae.
Pero no es gratis. Estás intercambiando un poquito de latencia de cola por una gran ganancia en rendimiento. Si tu sistema ya es lento en los bordes, esto no te va a ayudar. Pero si estás escribiendo miles de mensajes por segundo, este ajuste probablemente sea la ganancia de rendimiento más barata que vas a encontrar.
El blog post pasa por las matemáticas. Muestra cómo el agrupamiento cambia el perfil de I/O. No es ciencia espacial. Es solo un ajuste que la mayoría ignora porque está escondido en la documentación.
Sin magia. Sin nueva herramienta. Solo un número que puedes cambiar en tu config y ver cómo tu broker deja de ahogarse.
Por qué nos importa: La mayoría de las apps de las que depende nuestra comunidad — las que corren en servidores compartidos, las que no pueden permitirse una instancia más grande — probablemente están corriendo este valor por defecto. Un ajuste de 10ms no cuesta nada y te compra espacio para respirar. No necesitamos esperar a un presupuesto más grande para correr nuestros sistemas más suave.