首页 > 其他分享 >kafka一个消费者组一直停留在rebalance状态导致无法消费问题

kafka一个消费者组一直停留在rebalance状态导致无法消费问题

时间:2024-07-17 20:45:42浏览次数:14  
标签:group 停留 GroupCoordinator ms kafka poll rebalance id

问题描述

线上突然出现,某一个消费者组下的部分分区无法消费。 kafka broker日志如下:

[2024-07-16 17:44:58,548] INFO [GroupCoordinator 0]: Dynamic Member with unknown member id joins group transfer-group in Stable state. Created a new member id consumer-22-0619b903-29b6-452a-851e-6f8d928e86bc for this member and add to the group. (kafka.coordinator.group.GroupCoordinator)
[2024-07-16 17:44:58,548] INFO [GroupCoordinator 0]: Preparing to rebalance group transfer-group in state PreparingRebalance with old generation 63 (__consumer_offsets-23) (reason: Adding new member consumer-22-0619b903-29b6-452a-851e-6f8d928e86bc with group instance id None) (kafka.coordinator.group.GroupCoordinator)
[2024-07-16 17:52:52,645] INFO [GroupCoordinator 0]: Member[group.instance.id None, member.id consumer-22-0619b903-29b6-452a-851e-6f8d928e86bc] in group transfer-group has left, removing it from the group (kafka.coordinator.group.GroupCoordinator)

从日志中可以看到,Kafka Group Coordinator 正在管理名为 "transfer-group" 的消费者组的动态成员。以下是日志中的一些重要信息:

1、动态成员加入消费者组:

[2024-07-16 17:49:54,780] INFO [GroupCoordinator 0]: Dynamic Member with unknown member id joins group transfer-group in Stable state. Created a new member id consumer-22-36893988-abdb-46b6-a949-7b581d3bd8c3 for this member and add to the group. (kafka.coordinator.group.GroupCoordinator)

2、准备重新平衡消费者组:

[2024-07-16 17:49:54,780] INFO [GroupCoordinator 0]: Preparing to rebalance group transfer-group in state PreparingRebalance with old generation 64 (__consumer_offsets-23) (reason: Adding new member consumer-22-36893988-abdb-46b6-a949-7b581d3bd8c3 with group instance id None) (kafka.coordinator.group.GroupCoordinator)

3、成员离开消费者组:

[2024-07-16 17:52:52,645] INFO [GroupCoordinator 0]: Member[group.instance.id None, member.id consumer-22-0619b903-29b6-452a-851e-6f8d928e86bc] in group transfer-group has left, removing it from the group (kafka.coordinator.group.GroupCoordinator)

不断重复这个过程。
从这些日志可以看出,该消费者组频繁地进行成员的加入和离开操作,每次有新成员加入时都会触发重新平衡操作。这种频繁的重平衡可能会影响消费者组的性能和稳定性。

那么,为什么频繁出现消费者加入、离开组呢?
推断是,消费者程序那段时间,调用一个外部API(服务已经下线),不知何故,要么是消费者很慢(超过max.poll.interval.ms没有再次进行poll),要么是没有及时上报心跳(超过max.poll.interval.ms没有上报心跳)。

谈谈对分区再平衡的理解

消费者组协调器

https://www.cnblogs.com/luedong/p/16023479.html

相关配置

Difference between session.timeout.ms and max.poll.interval.ms?
https://stackoverflow.com/questions/39730126/difference-between-session-timeout-ms-and-max-poll-interval-ms-for-kafka-0-10

The new timeout max.poll.interval.ms is mainly a client side concept: if poll() is not called within max.poll.interval.ms, the heartbeat thread will detect this case and send a leave-group request to the broker. -- max.poll.interval.ms is still relevant for consumer group rebalances: if a rebalance is triggered, consumers have max.poll.interval.ms time to re-join the group by calling poll() client side which triggers a join-group request.

总结

遇到一个消费者组频繁(或长期)处于rebalance状态,说明一定有消费者处于不健康的状态。要么消费太慢、要么因为网络或者GC原因没有及时上报心跳。

标签:group,停留,GroupCoordinator,ms,kafka,poll,rebalance,id
From: https://www.cnblogs.com/xushengbin/p/18308233

相关文章

  • 69、Flink 的 DataStream Connector 之 Kafka 连接器详解
    1.概述Flink提供了Kafka连接器使用精确一次(Exactly-once)的语义在Kafkatopic中读取和写入数据。目前还没有Flink1.19可用的连接器。2.KafkaSourcea)使用方法KafkaSource提供了构建类来创建KafkaSource的实例。以下代码片段展示了如何构建KafkaSource来消......
  • Docker安装kafka
    Docker安装kafka安装之前,先创建一个网络,模式为桥接的方式dockernetworkcreatekafkaBridge--driverbridge只要能保证,zk和kafka能后相互访问就好了,方式随意。注意:使用同网络好于不同网络。虽然理论上Kafka和ZooKeeper可以跨广域网部署,但高延迟的网络连接可能会影响......
  • zookeeper+kafka消息队列群集部署
    目录消息队列1:什么是消息队列2:消息队列的特征3:为什么需要消息队列Kafka基础与入门1:kafka基本概念2:kafka角色术语3:kafka拓扑架构4:Topic和partition5:Producer生产机制6:Consumer消费机制zookeeper概念介绍1:zookeeper应用举例2:zookeeper的工作原理是什么?3:zookeeper......
  • 关于Kafka Topic分区和Replication分配的策略
    文章目录1.Topic多分区2.理想的策略3.实际的策略4.如何自定义策略1.Topic多分区如图,是一个多分区Topic在Kafka集群中可能得分配情况。P0-RL代表分区0,Leader副本。这个Topic是3分区2副本的配置。分区尽量均匀分在不同的Broker上,分区的Follower副本尽量不和Lea......
  • kafka
    在中小企业中,以下几种消息中间件相对更为常用:RabbitMQ:它具有丰富的功能和易用性。许多中小企业选择它是因为其提供了多种消息路由模式,如直连、主题、扇出等,能够满足不同的业务需求。例如,在一个小型的电商系统中,RabbitMQ可以用于处理订单处理、用户注册通知等消息的异步传递。......
  • 消息队列Kafka简单使用(可以直接上手)
    1.消息中间件简介消息中间件(MessageMiddleware)是一种在分布式系统中用于解耦不同服务或组件的软件,它通过异步消息传递的方式来实现服务之间的通信。消息中间件允许系统组件之间通过发送和接收消息进行交互,而无需知道彼此的具体实现细节,从而提高了系统的可扩展性、灵活性和......
  • kafka实战
    目录分布式安装监听器分布式安装//kafka依赖zookeeper,要先启动zookeepermkdiretc//etc用于存放配置文件//将zookeeper配置文件复制到etccpconfig/zookeeper.propertiesetc//复制3份,伪分布式cpconfig/server.propertiesetc/server-0.propertiescpconfig/serv......
  • Kafka基础知识
    目录Kafka简介消息Kafka简介中间件,如Kafka,用来存储消息的软件(组件)程序员可以在消息队列中存取消息很多时候消息队列是临时存储(设定期限:消息在MQ中保存10天)消息存在topic主题,类似数据库中的表,但是是半结构化的一般存同一类型的消息,但有些情况下也可以存不同类......
  • Vue遇到MathJax渲染的数学公式在翻页后仍然停留或无法动态加载
    Vue遇到MathJax渲染的数学公式在翻页后仍然停留或无法动态加载在使用Vue.js时,遇到MathJax渲染的数学公式在翻页后仍然停留的问题,通常是因为Vue的单页面应用(SPA)特性导致的DOM更新问题。MathJax通常在页面加载时渲染数学公式,但在SPA中,页面切换时可能不会重新渲染MathJax,导致......
  • librdkafka 常见问题FAQ
    1,++librdkafka一个消费者实例分配了所有分区不提交位点,在发生rebalance后,会重新从头消费数据吗在发生重新平衡(rebalance)后,消费者会从哪里开始消费数据取决于消费者组的配置,特别是auto.offset.reset配置项。关键配置项:auto.offset.resetauto.offset.reset决定了在没有有......