kafka消息大量积压,消费者消费很慢,poll存在消费不到数据的情况,这种情况怎么解决?

Palan 发表于: 2021-01-06   最后更新时间: 2021-01-06 22:25:45   5,825 游览

集群环境,3台机器,某个topic有360多个消费者节点,单线程异步消费,自动提交offset,存在有时候消费不到数据的情况,轮询拉取的数据量为0,但是单个消费者已经积压了近40w条数据,每条数据平均0.1M,机器的资源负载也不高,把生产者停了,积压的数据消费还是很慢,能消费到数据时候,数据总量不超过1M,消费积压情况是通过Kafka Manager查看的,麻烦各位看看这种情况是怎么导致的。

发表于 2021-01-06
添加评论

1、一个topic有360个消费者,topic的分区数一定要大于等于360,否则会有消费者永远拿不到消息。
2、你的消息过大,kafka是批量拉取消息的,使用一个批次的消息数量就不多,但是即使这样,一般瓶颈不在消费者,因为kafka将消息丢给处理程序后,只是处理能力较慢引起的,所以你需要了解你每秒产生多少条消息,消费的能力如何(可以抽一个分区来计算统计)

Palan -> 半兽人 3年前

您好,360多个消费者都是不同消费者组,topic分区数是3,消费者拿到数据就扔线程池处理了,处理很快,现在每次去poll,大概poll四五次才能取到数据,但是kafka已经积压了几十万,生产大概每秒3条数据

半兽人 -> Palan 3年前

你的积压如何统计的?
订阅模式,那说明你有360个消费者组,其中个别消费者组产生积压了。

Palan -> 半兽人 3年前

查看每个消费者组的消费情况,通过kafka manager 和命令行查看,平均每个消费者组都积压了 30w条,有的消费者积压的多 ,有的少,但是poll拉取的数量是0,连续poll才能拉取的数据,也设置一些调整性能的参数 比如num.network.threads之类的,还是有拉取不到数据的情况

m -> 半兽人 3年前

大佬 这么情况有解决吗

半兽人 -> m 3年前

1、带宽问题:
他这个是机器的带宽到了极限了,即使在多的消费者,带宽的大小就那么大,只能增加机器。

2、调大吞吐
参考一些相识的问题:

你的答案

查看kafka相关的其他问题或提一个您自己的问题