Compartir vía


Configuraciones recomendadas para clientes de Apache Kafka

Estas son las configuraciones recomendadas para usar Azure Event Hubs desde las aplicaciones cliente de Apache Kafka.

Propiedades de configuración del cliente de Java

Configuraciones de productos y consumidor

Propiedad Valores recomendados Intervalo permitido Notas
metadata.max.age.ms 180 000 (aproximado) < 240 000 Se puede reducir para recoger los cambios de metadatos antes.
connections.max.idle.ms 180000 < 240 000 Azure cierra el Protocolo de Control de Transmisión (TCP) de entrada 240.000 > ms, lo que puede provocar el envío de conexiones muertas (que aparecen como lotes caducados debido al tiempo de espera de envío).

Solo configuraciones de productor

Las configuraciones de productor se pueden encontrar aquí.

Propiedad Valores recomendados Intervalo permitido Notas
max.request.size 1000000 < 1 046 528 El servicio cierra las conexiones si se envían solicitudes de más de 1046 528 bytes. Este valor debe cambiarse y provocar problemas en escenarios de producción de alto rendimiento.
retries > 0 Puede requerir un aumento delivery.timeout.ms de valor, consulta la documentación.
request.timeout.ms 30 000 .. 60000 > 20 000 Event Hubs tiene como valor predeterminado internamente un mínimo de 20 000 ms. Los tiempos de espera de los productores son seguros con valores tan bajos como 10.000 ms y no serán un problema para ellos.

Asegúrese de que request.timeout.ms tenga al menos el valor recomendado de 60 000 y su session.timeout.ms tenga al menos el valor recomendado de 30 000. Tener estos ajustes demasiado bajos podría causar tiempos de espera para el consumidor, que a su vez provocan reequilibrios (lo que provoca más tiempos de espera, que provocan más reequilibrio, y así sucesivamente).

metadata.max.idle.ms 180000 > 5000 Controla cuánto tiempo almacena en caché el productor los metadatos de un tema que está inactivo. Si el tiempo transcurrido desde la última vez que se generó un tema supera la duración de inactividad de los metadatos, los metadatos del tema se olvidan y el siguiente acceso a estos forzará la solicitud de captura de metadatos.
linger.ms > 0 En escenarios de alto rendimiento, el valor de permanencia debe ser igual al valor tolerable más alto para aprovechar el procesamiento por lotes.
delivery.timeout.ms Se establece según la fórmula (request.timeout.ms + linger.ms) * retries.
compression.type none, gzip Actualmente solo se admite la compresión gzip.

Solo configuraciones de consumidor

Las configuraciones de consumidor se pueden encontrar aquí.

Propiedad Valores recomendados Intervalo permitido Notas
heartbeat.interval.ms 3000 3000 es el valor predeterminado y no debe cambiarse.
session.timeout.ms 30000 6000 .. 300000 Comience con 30 000 y auméntelo si ve un reequilibrio frecuente debido a los latidos que faltan.

Asegúrese de que request.timeout.ms tenga al menos el valor recomendado de 60 000 y su session.timeout.ms tenga al menos el valor recomendado de 30 000. Tener estos ajustes demasiado bajos podría causar tiempos de espera para el consumidor, que a su vez provocan reequilibrios (lo que provoca más tiempos de espera, que provocan más reequilibrio, y así sucesivamente).

max.poll.interval.ms 300000 (valor predeterminado) >session.timeout.ms Se usa para el tiempo de espera de rebalance, así que no debería estar demasiado bajo. Debe ser mayor que el valor de session.timeout.ms.

Propiedades de configuración de librdkafka

El archivo de configuración principal librdkafka (vínculo) contiene descripciones extendidas para las propiedades descritas en las secciones siguientes.

Configuraciones de productos y consumidor

Propiedad Valores recomendados Intervalo permitido Notas
socket.keepalive.enable true Necesario si se espera que la conexión esté inactiva. Azure cierra tcp de entrada inactivo > 240 000 ms.
metadata.max.age.ms ~ 180 000 < 240 000 Se puede reducir para recoger los cambios de metadatos antes.

Solo configuraciones de productor

Propiedad Valores recomendados Intervalo permitido Notas
retries > 0 El valor predeterminado es 2147483647.
request.timeout.ms 30 000 .. 60000 > 20 000 Event Hubs tiene como valor predeterminado internamente un mínimo de 20 000 ms. El valor predeterminado de librdkafka es 5000, que puede ser problemático. Aunque se aceptan solicitudes con valores de tiempo fuera más bajos, el comportamiento del cliente no está garantizado.
partitioner consistent_random Véase la documentación de librdkafka consistent_random es el valor predeterminado y el mejor. Las claves vacías y nulas se controlan idealmente en la mayoría de los casos.
compression.codec none, gzip Actualmente solo se admite la compresión gzip.

Solo configuraciones de consumidor

Propiedad Valores recomendados Intervalo permitido Notas
heartbeat.interval.ms 3000 3000 es el valor predeterminado y no debe cambiarse.
session.timeout.ms 30000 6000 .. 300000 Comience con 30 000 y auméntelo si ve un reequilibrio frecuente debido a los latidos que faltan.
max.poll.interval.ms 300000 (valor predeterminado) >session.timeout.ms Se usa para el tiempo de espera de rebalance, así que no debería estar demasiado bajo. Debe ser mayor que el valor de session.timeout.ms.

Notas adicionales

Consulte la siguiente tabla de escenarios de errores comunes relacionados con la configuración.

Síntomas Problema Solución
Errores de confirmación de desplazamiento debido al reequilibrio El consumidor está esperando demasiado tiempo entre las llamadas a poll() y el servicio está echando al consumidor fuera del grupo. Tiene varias opciones:
  • Aumentar el tiempo de procesamiento de encuestas (max.poll.interval.ms)
  • Reducir el tamaño de lote de los mensajes para acelerar el procesamiento.
  • Mejorar la paralelización del procesamiento para evitar el bloqueo de consumer.poll().
La aplicación de alguna combinación de estas tres opciones es probablemente la más acertada.
Excepciones de red con un alto rendimiento de producción Si usa el cliente java + max.request.size predeterminado, es posible que las solicitudes sean demasiado grandes. Consulte configuraciones de Java mencionadas anteriormente.

Pasos siguientes

Consulte Suscripción de Azure y límites de servicio, cuotas y restricciones para obtener las cuotas y los límites de todos los servicios de Azure.