es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El retraso del consumidor de Kafka aumenta demasiado.

Tenemos 10 corredores y últimamente muchos de ellos han estado recibiendo errores de “demasiados archivos abiertos”. Entonces el corredor muere. Cuando verificamos el número de archivos abiertos por el proceso de kafka, generalmente es de 70k o más. Al verificar (lsof -p {pid}), la mayoría de los archivos abiertos por kafka tienen el nombre de “no se puede identificar el protocolo”. Al reiniciar, cuando verificamos el retraso para los temas, ha aumentado en gran medida, digamos que si anteriormente era de 800 millones, se convierte en 10 mil millones.

Primera pregunta: ¿Por qué el corredor está abriendo todos estos archivos? No hemos tenido este problema en el pasado y no hemos actualizado ni cambiado la versión de kafka.

Segunda pregunta: ¿Por qué aumenta tanto el retraso en un período tan corto de tiempo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución

    Primera Pregunta

    El broker está abriendo todos estos archivos porque está alcanzando el límite máximo de descriptores de archivos. Cada archivo o conexión de socket que un proceso abre requiere un descriptor de archivo. Cuando se alcanza el límite, el proceso no puede abrir más archivos o sockets, lo que provoca el mensaje de error “demasiados archivos abiertos”.

    Los archivos “no se puede identificar el protocolo” abiertos por Kafka pueden ser causados por conexiones de clientes que no están utilizando un protocolo reconocido. Esto podría deberse a clientes mal configurados, bibliotecas de clientes obsoletas o configuraciones de red incompatibles.

    Para solucionar el problema, puede aumentar el número máximo de descriptores de archivo permitidos para el proceso de Kafka. Esto se puede hacer modificando el límite “nofile” en el archivo /etc/security/limits.conf.

    # Agregue las siguientes líneas a /etc/security/limits.conf
    kafka soft nofile 100000
    kafka hard nofile 200000
    

    Esto establecerá el límite suave en 100,000 y el límite duro en 200,000, lo que debería ser suficiente para la mayoría de las implementaciones de Kafka. Luego, reinicie el proceso de Kafka para aplicar los cambios.

    Segunda Pregunta

    El aumento en el retraso podría deberse a que el broker está abrumado con demasiados temas y particiones para manejar. Cuando un broker muere y se reinicia, necesita ponerse al día con los últimos cambios en los temas de los que es responsable. Si hay muchas particiones y mensajes que procesar, podría llevar mucho tiempo ponerse al día con el retraso.

    Para reducir el riesgo de abrumar al broker, puede considerar una o más de las siguientes estrategias:

    • Reduzca el número de temas y particiones: Si es posible, consolide temas y particiones para reducir la cantidad de datos que cada broker necesita procesar.

    • Aumente el número de brokers: Agregar más brokers puede distribuir la carga de trabajo y reducir el riesgo de abrumar a cualquier broker individual.

    • Aumente los recursos de hardware: Si los brokers tienen poca potencia, agregar más RAM o núcleos de CPU puede ayudarlos a manejar la carga de manera más eficiente.

    • Optimice la configuración del productor y del consumidor: Ajustar la configuración del productor y del consumidor puede mejorar el rendimiento del clúster de Kafka y reducir la cantidad de datos que necesita procesar.

Comments are closed.