【问题标题】:Number of Kafka consumer's clients decrease after rebalancing重新平衡后 Kafka 消费者的客户数量减少
【发布时间】:2020-01-04 06:46:24
【问题描述】:

我注意到,经过一段时间(例如两天)后,消费者组的并发性会低于我配置的并发性。

我使用 Spring Boot,这是我的代码示例

factory.setConcurrency(10);

当我在声明 kafka 消费者后使用以下 kafka 命令时,它正好显示 10 个不同的消费者客户端

bin/kafka-consumer-groups.sh --describe --group samplaConsumer --bootstrap-server localhost:9092

一段时间后,当我运行上层命令消费者客户端变得较低时,例如 6 个不同的客户端并管理这 10 个分区。

如何在重新平衡或任何数量的客户保持不变后解决此问题

【问题讨论】:

    标签: spring apache-kafka kafka-consumer-api spring-kafka


    【解决方案1】:

    我发现如果消费者客户端花费比max.poll.interval.ms 更多的时间来处理消费者认为失败的轮询数据并且组将重新平衡。

    max.poll.interval.ms 使用消费者组管理时调用 poll() 之间的最大延迟。这为消费者在获取更多记录之前可以空闲的时间量设置了上限。如果在此超时到期之前未调用 poll(),则认为消费者失败,组将重新平衡,以便将分区重新分配给另一个成员。

    而且我发现,如果这种情况发生很多,消费者客户端认为已死,并且不再发生重新平衡,因此消费者并发客户端的数量将会减少。

    我想到的一个解决方案是,我可以减少max.poll.records 的数量,这样处理记录的时间就比max.poll.interval.ms 少。

    props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 50); // default is 200
    

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 1970-01-01
      • 2018-05-23
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 2017-04-20
      • 2022-10-05
      相关资源
      最近更新 更多