线上kafka消息堆积,consumer掉线,怎么办?

本文介绍了线上Kafka消息堆积和消费者掉线的故障排查过程,通过arthas日志分析,发现是由于业务代码中的死循环导致消费者自我驱逐。文章讨论了Kafka客户端是否能明确异常提示消费超时的问题,对比了RocketMQ的消费超时机制,并提出了优化和最佳实践,包括降低`max.poll.records`、增大`max.poll.interval.ms`、处理异常情况和提高消费速度等建议。
摘要由CSDN通过智能技术生成

线上kafka消息堆积,所有consumer全部掉线,到底怎么回事?

最近处理了一次线上故障,具体故障表现就是kafka某个topic消息堆积,这个topic的相关consumer全部掉线。

整体排查过程和事后的复盘都很有意思,并且结合本次故障,对kafka使用的最佳实践有了更深刻的理解。

好了,一起来回顾下这次线上故障吧,最佳实践总结放在最后,千万不要错过。

1、现象

  • 线上kafka消息突然开始堆积
  • 消费者应用反馈没有收到消息(没有处理消息的日志)
  • kafka的consumer group上看没有消费者注册
  • 消费者应用和kafka集群最近一周内没有代码、配置相关变更

2、排查过程

服务端、客户端都没有特别的异常日志,kafka其他topic的生产和消费都是正常,所以基本可以判断是客户端消费存在问题。

所以我们重点放在客户端排查上。

1)arthas在线修改日志等级,输出debug

由于客户端并没有明显异常日志,因此只能通过arthas修改应用日志等级,来寻找线索。

果然有比较重要的发现:

2022-10-25 17:36:17,774 DEBUG [org.apache.kafka.clients.consumer.internals.AbstractCoordinator] - [Consumer clientId=consumer-1, groupId=xxxx] Disabling heartbeat thread
 
2022-10-25 17:36:17,773 DEBUG [org.apache.kafka.clients
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值