web-dev-qa-db-fra.com

Kafka console consumer ERROR "La validation du décalage a échoué sur la partition"

J'utilise un kafka-console-consumer pour sonder un sujet kafka.

Par intermittence, je reçois ce message d'erreur, suivi de 2 avertissements:

[2018-05-01 18:14:38,888] ERROR [Consumer clientId=consumer-1, groupId=console-consumer-56648] Offset commit failed on partition my-topic-0 at offset 444: The coordinator is not aware of this member. (org.Apache.kafka.clients.consumer.internals.ConsumerCoordinator)

[2018-05-01 18:14:38,888] WARN [Consumer clientId=consumer-1, groupId=console-consumer-56648] Asynchronous auto-commit of offsets {my-topic-0=OffsetAndMetadata{offset=444, metadata=''}} failed: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member. This means that the time between subsequent calls to poll() was longer than the configured max.poll.interval.ms, which typically implies that the poll loop is spending too much time message processing. You can address this either by increasing the session timeout or by reducing the maximum size of batches returned in poll() with max.poll.records. (org.Apache.kafka.clients.consumer.internals.ConsumerCoordinator)

[2018-05-01 18:14:38,888] WARN [Consumer clientId=consumer-1, groupId=console-consumer-56648] Synchronous auto-commit of offsets {my-topic-0=OffsetAndMetadata{offset=447, metadata=''}} failed: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member. This means that the time between subsequent calls to poll() was longer than the configured max.poll.interval.ms, which typically implies that the poll loop is spending too much time message processing. You can address this either by increasing the session timeout or by reducing the maximum size of batches returned in poll() with max.poll.records. (org.Apache.kafka.clients.consumer.internals.ConsumerCoordinator)

Il a suggéré dans les journaux d'avertissement que:

Cela signifie que le temps entre les appels suivants à poll () était plus long que le max.poll.interval.ms configuré, ce qui implique généralement que la boucle d'interrogation passe trop de temps à traiter les messages. Vous pouvez résoudre ce problème en augmentant le délai d'expiration de la session ou en réduisant la taille maximale des lots renvoyés dans poll () avec max.poll.records.

Donc, je dois soit augmenter max.poll.interval.ms ou diminuer max.poll.records.

Veuillez indiquer quelle serait l'implication de chaque méthode et laquelle est préférée dans une situation différente?

11
Yeming Huang

Si vous augmentez max.poll.interval.ms qui dit "il est acceptable de passer du temps à traiter un grand nombre d'enregistrements" et vous gagnerez en débit si vous pouvez traiter des lots plus importants plus efficacement que les plus petits.

Diminuer max.poll.records dit "prendre moins d'enregistrements donc il y a assez de temps pour les traiter" et préférerait la latence au débit.

Considérez également que les deux sont correctement configurés, mais quelque chose d'autre cause des problèmes de performances dans votre boucle poll. J'explorerais cela avant de changer la configuration pour ne pas masquer un problème plus important.

12
Nathan Walther