Un consumidor suscrito a temas con mensajes entrantes puede extraer los mensajes de forma lenta o no extraerlos en absoluto, incluso si aún no se ha puesto al día con el último offset. Esto suele ocurrir cuando el tráfico de consumo supera el ancho de banda de red disponible, especialmente a través de Internet.
Posibles causas
Tres condiciones relacionadas con el ancho de banda provocan una extracción lenta de mensajes:
|
Causa |
Descripción |
|
Saturación del ancho de banda |
El tráfico total de consumo de la instancia alcanzó el límite de ancho de banda de red |
|
Mensaje individual demasiado grande |
Un mensaje individual supera la capacidad de entrega rápida del ancho de banda de red disponible |
|
La obtención por lotes excede el ancho de banda |
El tamaño combinado de los mensajes extraídos en una sola solicitud de obtención supera el ancho de banda disponible |
Parámetros de configuración del consumidor
Los siguientes parámetros de configuración del consumidor controlan cuántos mensajes se obtienen por solicitud:
|
Parámetro |
Qué controla |
|
max.poll.records |
Número máximo de mensajes que el consumidor puede extraer simultáneamente |
|
fetch.max.bytes |
Cantidad máxima de bytes de mensajes que el consumidor puede extraer simultáneamente |
|
max.partition.fetch.bytes |
Cantidad máxima de bytes de mensajes que el consumidor puede extraer de una sola partición simultáneamente |
Diagnosticar y resolver el problema
Paso 1: Confirmar que existen mensajes en el tema
Inicie sesión en la consola de ApsaraMQ for Kafka.
Consulte los mensajes del tema objetivo.
Si no se devuelven mensajes, el problema se encuentra en el lado del productor, no en el del consumidor. Los pasos restantes aplican solo cuando existen mensajes pero el consumidor no puede extraerlos con suficiente rapidez.
Paso 2: Comprobar si el tráfico de consumo alcanzó el límite de ancho de banda
En el panel de navegación izquierdo de la página Instances, elija Observability > CloudMonitor.
Haga clic en la pestaña Monitoring Chart.
Localice el gráfico instance_internet_rx.rate(bit/s) y compruebe si el tráfico de consumo alcanzó el límite de ancho de banda.
Si el tráfico está en el límite, aumente el ancho de banda de red de la instancia.
Paso 3: Comprobar si un solo mensaje excede el ancho de banda
Verifique si algún mensaje individual en el tema es lo suficientemente grande para saturar por sí solo el ancho de banda disponible.
De ser así, aumente el ancho de banda de red o reduzca el tamaño del mensaje en el productor; por ejemplo, comprima las cargas útiles o divida los mensajes grandes en otros más pequeños.
Paso 4: Reducir el tamaño de obtención por lotes
Si ni un mensaje individual de gran tamaño ni la saturación general del ancho de banda son la causa, es posible que el tamaño combinado de los mensajes en una sola solicitud de obtención supere el límite de ancho de banda. Ajuste los siguientes parámetros:
fetch.max.bytes -- Establezca este valor por debajo del ancho de banda de red.
-
max.partition.fetch.bytes -- Establezca este valor por debajo del límite por partición, calculado como sigue:
limit = network bandwidth / number of partitions the consumer subscribes to
El significado de "ancho de banda de red" depende de cómo se conecte el consumidor al broker:
A través de una virtual private cloud (VPC): el ancho de banda de red se refiere al tráfico máximo de escritura de las elastic network interfaces (ENI) en la instancia.
A través de Internet: el ancho de banda de red se refiere al ancho de banda de Internet de la instancia.