【发布时间】:2019-03-02 14:04:21
【问题描述】:
我的问题是我的许多来自一个消费者组的 Kafka 客户端没有正确关闭,因此 Kafka 集群认为它们仍然处于连接状态。因此,我无法使用新版本的客户端连接到消费者组。它将卡在重新平衡步骤中。
根据文档,他们should be removed after session.timeout.ms 或最大group.max.session.timeout.ms。一开始我尝试将session.timeout.ms设置为30000毫秒(30秒),但在Kafka启动时并没有列出。 group.max.session.timeout.ms 在那个时间点被设置为 300000 毫秒(5 分钟)。消费者在 30 秒后没有被删除。
之后我尝试将group.max.session.timeout.ms 减少到 30000 毫秒(30 秒)并重新启动 Kafka。然而,所有的客户端仍然只是留在消费者组中。
现在,大约 2 小时后,客户端仍然依附于消费者组。
我尝试delete the consumer group 与:
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
--delete --group GroupName
这给了我:
* Group 'GroupName' could not be deleted due to: NON_EMPTY_GROUP
很遗憾,似乎没有--force 标志。
接下来,我尝试使用以下命令列出消费者组的所有成员:
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
--members --group GroupName --describe
这给了我 40-50 个消费者组成员(他们必须全部处于非活动状态,因为唯一的活动消费者已停止)。
有没有办法让 Kafka 清除该组中的所有消费者或强制它删除整个消费者组?
【问题讨论】:
-
组列表命令应该显示附加客户端的 IP。在删除组之前,您需要找到它们并主动阻止它们。否则,您可能还想尝试重新启动 Zookeeper
-
谢谢,我认为重启 Zookeeper 有很大帮助(尽管我不确定为什么,因为它不是基于 Zookeeper 的消费者组)。当我重新启动 Zookeeper 时,它减少到 5 个消费者。然后我重新启动了整个服务器,它把它带到了一个消费者那里。停止所有其他 Kafka 消费者,瞧,最后该组是空的。如果您有解释,为什么还需要重新启动 Zookeeper,请随时将其添加到此问题的答案中。其实,现在想来,我猜消费者进程在服务器上仍然处于活动状态......我从未检查过
ps -A。 -
@Aufziehvogel - 您的问题中的第一点是否有任何参考,即 CG 未正确关闭,因此 kafka 集群认为它们仍处于连接状态。
标签: apache-kafka