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 aumento en los Grupos de Consumidores incrementará el retraso en la Respuesta del Productor?

Tengo un caso de uso en el que tengo que probar el punto de saturación de mi clúster de Kafka (de 3 nodos) con un alto número de grupos de consumidores. (Para encontrar el punto de saturación para nuestro caso de uso de producción) Confirmación (“ack”) del productor: todo.
He creado muchos grupos de consumidores, más de 10000, y no hay ningún problema (no hay carga, solo se crearon grupos de consumidores que no están consumiendo).

Entonces comencé las pruebas de carga, creé 3 temas (1 partición) con un factor de replicación de 3. Cada broker es líder de un tema (me aseguré con kafka-topic describe).
Planeé producir constantemente 4.5MBps para cada tema y aumentar los grupos de consumidores de cero. Tamaño de 100KB para 45 registros en un tema.

Cuando produzco datos para ningún grupo de consumidores en el clúster, el tiempo de respuesta del productor es de solo 2 ms/registro.
Para 100 grupos de consumidores por registro, tarda 7 ms.
Al aumentar los grupos de consumidores para un tema a 200, el tiempo aumenta a 28-30 ms, con lo que no puedo producir 4.5MBps. Cuando aumento más grupos de consumidores, la respuesta del productor disminuye.

El broker tiene 15 hilos de E/S (I/O) y 10 hilos de red.

Análisis realizado para el escenario anterior

  • Con las métricas JMX de grafana, no hay ningún pico en la cola de solicitudes y respuestas.
  • No hay demora en la recogida de la E/S (I/O) al verificar el tiempo en la cola de solicitudes.
  • El porcentaje promedio de inactividad del hilo de red es 0.7, por lo que el hilo de red no es un cuello de botella.
  • Al leer algunos artículos, el búfer del socket puede ser un cuello de botella para un alto rendimiento de ancho de banda, así que lo aumenté de 100KB a 4MB, pero no fue útil.
  • No hay picos en la recolección de basura (GC), descriptores de archivos ni espacio de montón (heap space).
    >Con esto, no hay problema con los hilos de E/S, hilos de red ni búfer del socket.

Entonces, ¿cuál puede ser el cuello de botella aquí?
Pensé que podría ser debido a la producción de datos en una sola partición. Por lo tanto, creé más temas con 1 partición e intenté producir paralelamente 4.5MBps para cada tema, pero tuve el mismo retraso en la respuesta del productor.

¿Cuál puede ser el verdadero cuello de botella aquí? Porque el productor está desacoplado del consumidor.
Pero cuando aumento el número de grupos de consumidores para el broker, ¿por qué afecta la respuesta del productor?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Según el análisis realizado, parece que el cuello de botella podría estar relacionado con el uso de la CPU del bróker. A medida que aumenta el número de grupos de consumidores, el bróker puede tener dificultades para mantenerse al día con el procesamiento requerido para cada grupo, lo que provoca un retraso en el tiempo de respuesta del productor. Podría ser útil monitorear el uso de la CPU del bróker durante las pruebas de carga para ver si hay picos o un uso alto constante. Además, puede ser útil realizar pruebas de carga con un número menor de grupos de consumidores para ver si el problema persiste, ya que podría estar relacionado con el alto número de grupos que se utilizan.

Comments are closed.