Un consommateur abonné à des topics recevant des messages peut extraire ces derniers lentement, voire pas du tout, même s'il n'a pas rattrapé le dernier offset. Ce phénomène se produit généralement lorsque le trafic de consommation dépasse la bande passante réseau disponible, en particulier via Internet.
Causes possibles
Trois conditions liées à la bande passante peuvent ralentir l'extraction des messages :
| Cause | Description |
|---|---|
| Saturation de la bande passante | Le trafic total de consommation de l'instance a atteint la limite de la bande passante réseau |
| Message unique trop volumineux | Un message individuel est plus volumineux que ce que la bande passante réseau disponible ne peut livrer rapidement |
| L'extraction par lot dépasse la bande passante | La taille combinée des messages extraits lors d'une seule requête d'extraction dépasse la bande passante disponible |
Paramètres de configuration du consommateur
Les paramètres de configuration du consommateur suivants contrôlent le nombre de messages extraits par requête :
| Paramètre | Ce qu'il contrôle |
|---|---|
| max.poll.records | Nombre maximal de messages que le consommateur peut extraire simultanément |
| fetch.max.bytes | Nombre maximal d'octets de messages que le consommateur peut extraire simultanément |
| max.partition.fetch.bytes | Nombre maximal d'octets de messages que le consommateur peut extraire d'une seule partition simultanément |
Diagnostiquer et résoudre le problème
Étape 1 : Confirmer la présence de messages dans le topic
Connectez-vous à la console ApsaraMQ for Kafka.
Recherchez les messages pour le topic cible.
Si aucun message n'est renvoyé, le problème provient du côté du producteur, et non du consommateur. Les étapes restantes s'appliquent uniquement lorsque des messages existent, mais que le consommateur ne parvient pas à les extraire assez rapidement.
Étape 2 : Vérifier si le trafic de consommation a atteint la limite de bande passante
Dans le volet de navigation de gauche de la page Instances, choisissez Observability > CloudMonitor.
Cliquez sur l'onglet Monitoring Chart.
Repérez le graphique instance_internet_rx.rate(bit/s) et vérifiez si le trafic de consommation a atteint le plafond de bande passante.
Si le trafic est à la limite, augmentez la bande passante réseau de l'instance.
Étape 3 : Vérifier si un message unique dépasse la bande passante
Vérifiez si un message individuel dans le topic est suffisamment volumineux pour saturer à lui seul la bande passante disponible.
Le cas échéant, augmentez la bande passante réseau ou réduisez la taille des messages au niveau du producteur, par exemple en compressant les charges utiles ou en divisant les messages volumineux en messages plus petits.
Étape 4 : Réduire la taille d'extraction par lot
Si ni un message unique trop volumineux ni une saturation globale de la bande passante n'en sont la cause, la taille combinée des messages dans une seule requête d'extraction peut dépasser la limite de bande passante. Ajustez les paramètres suivants :
fetch.max.bytes – Définissez cette valeur sur un chiffre inférieur à la bande passante réseau.
-
max.partition.fetch.bytes – Définissez cette valeur sur un chiffre inférieur à la limite par partition, calculée comme suit :
limit = network bandwidth / number of partitions the consumer subscribes to
La signification de « bande passante réseau » dépend de la manière dont le consommateur se connecte au broker :
Via un VPC (Virtual Private Cloud) : la bande passante réseau fait référence au trafic d'écriture maximal des interfaces réseau élastiques (ENI) de l'instance.
Via Internet : la bande passante réseau fait référence à la bande passante Internet de l'instance.