Kafka没有即时消费数据 并且频繁出现自动负载均衡下线上线消费实例的现象

问题分析:

1.由于客户反馈实时监控,会出现延迟10秒左右的样子,经过排查实例日志没有发现任何报错;消费者实例所在机器不存在负载过高的情况,处理逻辑的下游和上游也没有出现性能瓶颈;

2.查看kafkaManager跟踪kafka消费实例的实时lag值;发现会循环的出现消费完全之后挤压四五百条然后又消费完全的情况,同时出现消费者实例频繁切换的情况;

3.由于没找到原因又继续 tail -f 消费者的实例的日志(每当收到数据时打印下日志)同时查看Lag值;发现每当挤压四五百条时,就会出现停止打印接收数据的日志;同时打印了其他的日志如下:

[Thread-1] WARN   - Auto offset commit failed for group kafkaLogAnalyzer: Commit cannot be completed since the group has already rebalanced and assigned the partitions to another member. This means that the time between subsequent calls to poll() was longer than the configured session.timeout.ms, which typically implies that the poll loop is spending too much time message processing. You can address this either by increasing the session timeout or by reducing the maximum size of batches returned in poll() with max.poll.records.

INFO   - Revoking previously assigned partitions [groupTest-0] for group kafkaLogAnalyzer

 4.由此日志可以知道是因为某个消费实例在一次会话超时时间内,没有处理完数据,导致自动提交偏移量失败;kafka认为该实例处理能力低则自动负载均衡下线该实例,重新选择一个消费实例,这之间会有几秒的时间是不消费数据的,当消费实例重新上线后,会把上一轮次提交失败偏移量的数据和当前新产生的数据再次拉取处理;日志也有提示设置session.timeout.ms 稍微大一点;

5.

session.timeout.ms由 30秒设置为60秒;

max.poll.records设置为2000;

代码中设置如果缓冲区当前没有数据,下次等待轮询的时间由60s拉取数据一次设置为5s拉取一次;

设置消费实例的堆内存比之前略大。

6.由第五步解决后,没有再出现自动负载均衡的现象,数据没有再出现挤压几百条的现象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值