-
消费者组rebalance过程中,组内消费者会全部停止消费,直到rebalance结束
-
影响:
- Rebalance 影响 Consumer 端 TPS。
- 在 Rebalance 期间,Consumer 会停下手头的事情,什么也干不了。
- Rebalance 很慢。
- Rebalance 效率不高。当前 Kafka 的设计机制决定了每次 Rebalance 时,Group 下的所有成员都要参与进来,而且通常不会考虑局部性原理,但局部性原理对提升系统性能是特别重要的
- Rebalance 发生的时机有三个:
- 组成员数量发生变化
- 订阅主题数量发生变化
- 订阅主题的分区数发生变化
- 如何避免rebalance?
避免上述三个变化
//consumer失活时间配置
$conf->set("session.timeout.ms",6*1000);
//consumer 心跳频率
$conf->set("heartbeat.interval.ms",2*1000);
//最佳配置 session.timeout.ms >= 3 * heartbeat.interval.ms
避免消费耗时过长导致 进程失活
//设置poll间隔时间
$conf->set("max.poll.interval.ms",420000); 次配置应该大于消费时间
可以参考这个issues
https://github.com/edenhill/librdkafka/issues/1653
网友评论