集群环境,3台机器,某个topic有360多个消费者节点,单线程异步消费,自动提交offset,存在有时候消费不到数据的情况,轮询拉取的数据量为0,但是单个消费者已经积压了近40w条数据,每条数据平均0.1M,机器的资源负载也不高,把生产者停了,积压的数据消费还是很慢,能消费到数据时候,数据总量不超过1M,消费积压情况是通过Kafka Manager查看的,麻烦各位看看这种情况是怎么导致的。
1、一个topic有360个消费者,topic的分区数一定要大于等于360,否则会有消费者永远拿不到消息。
2、你的消息过大,kafka是批量拉取消息的,使用一个批次的消息数量就不多,但是即使这样,一般瓶颈不在消费者,因为kafka将消息丢给处理程序后,只是处理能力较慢引起的,所以你需要了解你每秒产生多少条消息,消费的能力如何(可以抽一个分区来计算统计)
您好,360多个消费者都是不同消费者组,topic分区数是3,消费者拿到数据就扔线程池处理了,处理很快,现在每次去poll,大概poll四五次才能取到数据,但是kafka已经积压了几十万,生产大概每秒3条数据
你的积压如何统计的?
订阅模式,那说明你有360个消费者组,其中个别消费者组产生积压了。
查看每个消费者组的消费情况,通过kafka manager 和命令行查看,平均每个消费者组都积压了 30w条,有的消费者积压的多 ,有的少,但是poll拉取的数量是0,连续poll才能拉取的数据,也设置一些调整性能的参数 比如num.network.threads之类的,还是有拉取不到数据的情况
大佬 这么情况有解决吗
1、带宽问题:
他这个是机器的带宽到了极限了,即使在多的消费者,带宽的大小就那么大,只能增加机器。
2、调大吞吐
参考一些相识的问题:
你的答案