项目场景:
因业务约束,发送到kafka的单条消息的大小达到了125k。并且存在远程调用瓶颈,目前阶段无法解耦。在此条件下,系统上了生产第一天就遇到了消费瓶颈,并且10分钟积压消息达到了100w+,为此记录问题发现过程以及解决方案。
问题描述
kafka某业务topic,消费端消费速度远低于生产速度
原因分析:
原因汇总:
1、单条消息过大
2、存在远程调用且下游处理速度太慢,单次消耗时间 150ms~2000ms不等,极大限制了我侧kafka消费能力
解决方案:
解决汇总:
解决前已做的措施:代码优化与集群部署
1、逐条消费改为批量消费
2、多实例并行消费
a.增加分区
b.设置currency(注:在集群部署下节点*currency<=分区数量,最优配比)
3、kafka参数设置
a.kafka拉取消息体大小
b.轮训一次获取的条数
c.处理时间设置
4、开启线程池(实现多线程消费)
至此,通过以上步骤缓解消费瓶颈
版权归原作者 废柴程序猿 所有, 如有侵权,请联系我们删除。