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 la inactividad de TCP entrante > 240 000 ms, lo que puede dar lugar a un envío de conexiones inactivas (que se muestran como lotes expirados 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 cerrará las conexiones si se envían solicitudes de más de 1 046 528 bytes. Este valor debe cambiar y causará problemas en escenarios de producción de alto rendimiento. |
retries |
> 0 | Puede que sea necesario aumentar el valor de delivery.timeout.ms; consulte la documentación. | |
request.timeout.ms |
30 000 .. 60000 | > 20 000 | Event Hubs tendrá un valor predeterminado interno de un mínimo de 20 000 ms. Aunque se aceptan solicitudes con valores de tiempo de espera menores, no se garantiza el comportamiento del cliente. 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. Si estos valores son demasiado bajos podrían provocar tiempos de expiración de consumidor, que, a su vez, provocarían reequilibrios (lo que provocaría más tiempos de expiración, que provocarían más reequilibrios, y así sucesivamente). |
metadata.max.idle.ms |
180000 | > 5000 | Controla cuánto tiempo el productor almacenará en memoria caché 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 |
La compresión no se admite actualmente. |
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. Si estos valores son demasiado bajos podrían provocar tiempos de expiración de consumidor, que, a su vez, provocarían reequilibrios (lo que provocaría más tiempos de expiración, que provocarían más reequilibrios, y así sucesivamente). |
max.poll.interval.ms |
300000 (valor predeterminado) | >session.timeout.ms | Se usa para el tiempo de espera de reequilibrio, por lo que este valor no debe establecerse demasiado bajo. Debe ser mayor que el valor de session.timeout.ms. |
Propiedades de configuración de librdkafka
El archivo de configuración principal de librdkafka
(vínculo) contiene descripciones extendidas de las propiedades 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 cerrará la inactividad de TCP entrante > 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 tendrá un valor predeterminado interno de 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 de espera menores, no se garantiza el comportamiento del cliente. |
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 |
La compresión no se admite actualmente. |
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 reequilibrio, por lo que este valor no debe establecerse 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:
|
Excepciones de red con un alto rendimiento de producción | ¿Usa el cliente de Java y el valor predeterminado de max.request.size? Es posible que las solicitudes sean demasiado grandes. | Consulte las configuraciones de Java anteriores. |
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.