kafka实践问题总结
总结线上遇到的问题,能很好的学习其中的理论,从而提高自己应对线上问题的能力。
要点概述:主要是因为kafka Broker在处理高水位线(HW)会涉及到读写锁leaderIsrUpdateLock,
(1)写入消息和拉去消息都会申请leaderIsrUpdateLock的读锁(2)ISR扩张和收缩时会申请leaderIsrUpdateLock的写锁
所以当ISR频繁发生扩张与收缩时会严重影响kafka消息的读写。
解决方法:
(1)replica.lag.time.max.ms从默认10s改为30s,降低副本被移除ISR门槛
(2)num.replica.fetchers从1适当增加,提高follower节点从leader节点同步数据的线程数
要点概述:
我们先来看用户主题分区:有两种情况会导致kafka消费组再平衡(reblaance)
(1)超过心跳检测时间,session.timeout.ms——如果在配置时间内coordinator没有收到该consumer的心跳,则将该consumer从group中移除
(2)两次poll超过配置时长,max.poll.interval.ms——两次poll之间的最大间隔时间
如果触发上面两条会触发某个消费组的再平衡,但是这种用户主题分区再平衡不会导致消息的堆积和消息丢失,只是在rebalance的过程中无法消费消息,会降低kafka的tps。
问题出现的根本原因是系统主题__consumer_offsets进行leader选举,进行leader选举会导致之前的协调器coordinator被移除,会删除内存中的消费组的元信息(包括消费点位),如果内存中消费点位信息不存在就会给消费者返回-1,这是就会触发消费者根据earliest和latest两种策略重置消费点位。
(1)如果设置为earliest,则会出现消息瞬间堆积
(2)如果设置为latest,则会出现丢消息的情况
区分用户主题和系统主题__consumer_offsets的leader选举。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix