kafka rebalance(再均衡)导致的消息积压分析

2023-12-12 05:36

本文主要是介绍kafka rebalance(再均衡)导致的消息积压分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

起因:

某天,项目组收到大量的kafka消息积压告警。查看了kafka日志后,发现 kafka不断地 rebalance(再均衡)。

Rebalance (再均衡):

分区的所有权从一个消费者转移到另一个消费者,这样的行为被称为Rebalance (再均衡).
在再均衡期间,消费者无法消费消息,造成整个群组一小段时间的不可用。

Rebalance 的触发条件:

  • 当 Consumer Group 组成员数量发生变化
    (1)新成员加入
    (2)组成员主动离开

    (3)组成员崩溃

    • 消费者心跳超时,导致 rebalance。
    • 消费者处理时间过长,导致 rebalance。
  • 当订阅主题数量发生变化

  • 当订阅主题的分区数发生变化

日志:

[2023-12-11 xx:xx:xx] INFO [GroupCoordinator 1]: Member consumer-anonymous. in group anonymous. has failed, removing it from the group (kafka.coordinator.group.GroupCoordinator)
[2023-12-11 xx:xx:xx] INFO [GroupCoordinator 1]: Preparing to rebalance group anonymous. in state PreparingRebalance with old generation 1 (__consumer_offsets-5) (reason: removing member consumer-anonymous. on heartbeat expiration) (kafka.coordinator.group.GroupCoordinator)
[2023-12-11 xx:xx:xx] INFO [GroupCoordinator 1]: Group anonymous. with generation 2 is now empty (__consumer_offsets-5) (kafka.coordinator.group.GroupCoordinator)
[2023-12-11 xx:xx:xx] WARN Attempting to send response via channel for which there is no open connection, connection id :9092 (kafka.network.Processor)

原因:

kafka消费消息后,如果业务逻辑处理时间过长,会导致消费线程与 Coordinator(协调器) 的 heartbeat (心跳) 超时,Coordinator 判断 Consumer 已经宕机,就将 Consumer 从消费组中剔除,并触发了 Rebalance 机制 。

解决:

优先解决生产问题:先调整参数,避免频繁 Rebalance。

如果想从根本上解决,还需要优化消费逻辑,提高性能,快速消费完,避免超时。

session.timeout.ms : 心跳超时时间
heartbeat.interval.ms  : 心跳时间间隔
max.poll.interval.ms  : 每次消费的处理时间
max.poll.records  : 每次消费的消息数
  • session.timeout.ms: 心跳超时时间,默认 10s。当心跳超时时间超过 session.timeout.ms ,会认为 Consumer 已退出 ,将 Consumer 从消费组中剔除,触发 Rebalance 机制。可以适当调大 session.timeout.ms,避免频繁 Rebalance 。

  • heartbeat.interval.ms : 这个是心跳时间间隔,默认值是:3s。 该值必须小于 session.timeout.ms,否则会超时。

  • max.poll.interval.ms :如果消费端在该间隔内没有发起 poll 操作,该消费者将被剔除,触发重平衡,将该消费者分配的队列分配给其他消费者。默认为 5 分钟。

  • max.poll.records: 每次消费的时候,获取多少条消息。默认值为 500。
    获取的消息条数越多,需要处理的时间越长。所以每次拉取的消息数不能太多,需要保证在 max.poll.interval.ms 设置的时间内能消费完,否则会发生 rebalance。可以适当调小 max.poll.records,避免频繁 Rebalance 。

参考资料:

https://blog.csdn.net/riemann_/article/details/122484531

https://blog.csdn.net/penriver/article/details/121556161

这篇关于kafka rebalance(再均衡)导致的消息积压分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483411

相关文章

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

javacv依赖太大导致jar包也大的解决办法

《javacv依赖太大导致jar包也大的解决办法》随着项目的复杂度和依赖关系的增加,打包后的JAR包可能会变得很大,:本文主要介绍javacv依赖太大导致jar包也大的解决办法,文中通过代码介绍的... 目录前言1.检查依赖2.更改依赖3.检查副依赖总结 前言最近在写项目时,用到了Javacv里的获取视频

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl