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 rendimiento Kafka (escrituras/segundo) dismuye drásticamente al aumentar el número de eventos/mensajes.

Resumen

Estoy intentando evaluar el rendimiento de un clúster kafka fuera de la estantería (3 nodos). Estoy utilizando la configuración predeterminada. A continuación se detallan los detalles de la configuración:


Nodos totales = 3
Zookeeper = nodo1
Workers = nodo1, nodo2 y nodo3
Configuración de cada nodo = 4 núcleos, 15 GB
Versión de Kafka = 2.7.0
Versión de Scala = 2.13

Aquí están las configuraciones del nodo

El primer objetivo de la evaluación es verificar la velocidad de escritura. Para hacerlo, he creado un programa Java que crea múltiples subprocesos, uno por productor y escribe en el clúster kafka de manera concurrente.

Estoy registrando la hora de inicio y de finalización para medir el tiempo empleado.

Aquí está el código

Aquí están los resultados

Aquí están las estadísticas

El problema

A medida que aumento el número de eventos, la velocidad de escritura por segundo disminuye.

| Mensajes | Escritura/seg |
|:----------- |:----------|
| 63,965 | 21,236.72 |
| 987,123 | 57,151.63 |
| 20,000,000 | 39,503.60 |
| 50,000,000 | 14,311.95 |
| 99,990,052 | 11,113.97 |
| 300,000,000 | 10,811.26 |

Preguntas
– ¿Por qué se está disminuyendo el rendimiento al insertar más datos?
– ¿Qué tipo de ajustes puedo hacer para mejorar la velocidad de escritura?
– ¿Mi metodología de prueba es correcta o no? ¿Existe alguna forma mejor de evaluar el rendimiento de un clúster Kafka?

Notas
– Este es mi primera publicación en stack overflow, así que por favor háganme saber si puedo mejorar algo en la pregunta.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Análisis del Rendimiento de Velocidad de Escritura de Kafka

    Introducción

    El objetivo de este análisis es evaluar el rendimiento de un cluster de Kafka de 3 nodos y configuración por defecto. Los detalles de la configuración incluyen 3 nodos en total con un Zookeeper (nodo1) y tres Trabajadores (nodo1, nodo2, y nodo3). La configuración de cada nodo es de 4 núcleos y 15 GB de memoria. La versión de Kafka es la 2.7.0 , y la versión de Scala es 2.13. Estamos tratando de evaluar el rendimiento de la velocidad de escritura del cluster de Kafka utilizando un programa Java que crea múltiples hilos, con un productor por hilo y escribe en el cluster de Kafka de forma concurrente.

    Resultados

    El programa Java registra el tiempo de inicio y fin de la operación de escritura, lo cual se usa para calcular la duración de la operación de escritura. Los números de mensajes y la velocidad de escritura se calcularon utilizando estos datos, los cuales se guardaron en un archivo CSV. La tasa de escritura por segundo se registró para diferentes números de eventos, como se muestra en la tabla a continuación:

    Mensajes Escrituras/Segundo
    63,965 21,236.72
    987,123 57,151.63
    20,000,000 39,503.60
    50,000,000 14,311.95
    99,990,052 11,113.97
    300,000,000 10,811.26

    Análisis

    Rendimiento Reducido con Mayor Cantidad de Datos

    De los resultados, se observa que la velocidad de escritura por segundo se reduce cuando se inserta más datos en el cluster de Kafka. Sin embargo, esta observación va en contra de la intuición ya que se esperaría que al insertar más datos, la velocidad de escritura también aumentaría. La razón de esta subprestación podría deberse a la configuración del cluster de Kafka, la cual se investigará más adelante.

    Enfoques de Ajustes para Mejorar la Velocidad de Escritura

    Podemos mejorar la velocidad de escritura del cluster de Kafka optimizando su configuración. Aquí hay algunos enfoques posibles que se pueden hacer:
    – Incrementar el número de particiones: Al aumentar el número de particiones, podemos aumentar la paralelismo del cluster de Kafka, lo que puede conducir a una mejor velocidad de escritura.
    – Incrementar el tamaño del lote (batch size): Al aumentar el tamaño del lote del productor de Kafka, podemos reducir la sobrecarga de envío de mensajes mediante el agrupamiento de los mensajes en tamaños más grandes.
    – Ajustar el broker de Kafka: Podemos ajustar la configuración del broker de Kafka para mejorar su rendimiento. Por ejemplo, podemos reducir el tiempo de escritura, incrementar el tamaño del buffer de socket, etc.

    Metodología y Enfoques de Evaluaciones

    La metodología de evaluación utilizada en este análisis es aceptable. Sin embargo, se puede aumentar la precisión de los resultados de la prueba utilizando un número mayor de hilos y midiendo la velocidad de escritura después de que el cluster se haya estabilizado (por ejemplo, después de un periodo de calentamiento). También podemos utilizar herramientas externas para evaluar el rendimiento del cluster de Kafka, como JMH, YCSB, o Kafka-bench. Estas herramientas proporcionan métricas de rendimiento más precisas y detalladas que pueden ayudarnos a diagnosticar problemas de rendimiento y optimizar la configuración del cluster de Kafka de acuerdo.

    Conclusión

    En conclusión, analizamos el rendimiento de la velocidad de escritura de un cluster de Kafka con configuración por defecto utilizando un programa Java, y observamos que el rendimiento disminuye a medida que se inserta más datos en el cluster de Kafka. Para mejorar la velocidad de escritura, sugerimos algunos enfoques de ajuste, como aumentar el número de particiones, incrementar el tamaño del lote, y ajustar el broker de Kafka. Por último, sugerimos la utilización de herramientas externas para evaluar el rendimiento del cluster de Kafka para obtener resultados más precisos y precisos.

Comments are closed.