Saltar al contenido

Diferencia entre heartbeat.interval.ms y session.timeout.ms en la configuración del consumidor de Kafka

Solución:

los heartbeat.interval.ms especifica la frecuencia de envío de la señal de latido del corazón por parte del consumidor. Entonces, si esto es 3000 ms (predeterminado), entonces cada 3 segundos el consumidor enviará la señal de latido al corredor.

los session.timeout.ms especifica la cantidad de tiempo dentro del cual el corredor necesita obtener al menos una señal de latido del corazón del consumidor. De lo contrario, marcará al consumidor como muerto. El valor predeterminado 10000 ms (10 segundos) prevé la pérdida de tres señales de latido antes de que un corredor marque al consumidor como muerto.

En una configuración de red con mucha carga, es normal perder algunas señales de latido. Por lo tanto, se recomienda esperar a que falten 3 señales de latido antes de marcar al consumidor como muerto. Esa es la razón de la recomendación 1/3.

El código establece un límite estricto que no puede establecer heartbeat.interval.ms no menos de request.timeout.ms, de lo contrario, Kafka se queja de que “Heartbeat debe establecerse más bajo que el tiempo de espera de la sesión”.

Si realmente tiene estas dos configuraciones con el mismo valor, una posible situación es que el cliente de red nunca más latirá porque el tiempo de espera de la sesión casi siempre ocurre antes de hacer latido.

En cuanto al 1/3, prefiero pensar que es un valor heurístico.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *