栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

kafka请求线程idle低问题分析

kafka请求线程idle低问题分析

线上kafka 线程idle报警,线程idle趋势图

查看topic监控平台,发现__consumer_offsets topic的每秒写入高出其他topic很多倍,大概率是因为消费者提交频繁导致的了,但是这是全局的topic,无法看到每个消费者的提交频率,所以只能根据topic的流量走势来找出和该topic相匹配的,进而只观察相关topic的消费者

1、查看趋势相匹配的topic
按照流量由大到小筛查每个topic,发现两个topic的流量趋势和__consumer_offset一样

2、走查消费这两个topic的消费者关键配置,针对拉取和提交相关参数进行优化,优化原则:
消费者拉消息:fetch.min.bytes =10240000 fetch.max.wait.ms = 500 满足两者之一就可以拉消息
消费者提交offset: 自动提交 auto.commit.interval.ms>1000 手动提交 根据业务需求设置每次提交的条数,不能逐条commit

生产者峰值qps只有200左右,为什么commit会这么高?
消费者多,比如topic1对应8个消费者,如果每个消费者1条提交一次那么每秒提交次数:200*8=1.6k
业务反馈每次拉取50条,处理完一次性提交,那么峰值200,每秒最多也就拉取4次,不应该提交很频繁啊?
那就需要看什么时候会触发拉取动作了,业务没有明文配置拉取的那两个参数,fetch.min.bytes默认是1byte,fetch.max.wait.ms默认是500ms,因为每条消息肯定是明确大于1byte的,所以每条一拉,也就没条一提交,所以最终需要优化的参数是fetch.min.bytes

业务问题:如果按照建议的参数优化,那么优先达到0.5s的触发条件,高峰期延迟会不会比较大?
高峰期qps为200的时候,消费者发起fetch请求,broker等到0.5s开始处理消费者请求,消费者拉取50条处理时长假设为1s,则延迟为300个消息,这个需要看业务的承受程度
自动提交可以缓解延迟,可以每条拉取一次,但是设置为1s提交一次

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711596.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号