docker - 代理重启后汇合的 Kafka 消费者卡住

标签 docker apache-kafka

我正在使用 kafka_image=wurstmeister/kafka

zookeeper_version=3.4.14 kafka_version=2.12-2.4.0

C#客户端:Confluence kafka v1.2.0

我们是 使用 3 个代理,1 个 Zookeeper 集群 作为一个 pat 部署,我们使用 停止所有broker、zookeeper、生产者、消费者并删除 kafka-log 文件,并先启动消费者,稍后再启动 经纪人和动物园管理员。在这个过程中,消费者有时会得到 卡住了,即使它还活着,它也不会拾取任何消息。如果我重新启动 消费者,它开始挑选

最佳答案

重新平衡可能是造成这种行为的原因。当在消费者组中启动重新平衡时,该组中的所有消费者都将被撤销,并且在重新平衡期间,消费者无法提交偏移量或轮询数据,直到重新平衡完成并将分区分配给新消费者为止。


需要考虑的一些重要注意事项:

  • 重新平衡超时等于max.poll.interval.ms。因此,如果您的 max.poll.inteval.ms 由于长时间运行的进程而如此高,那么重新平衡可能需要很长时间。

    重新平衡的原因:

  • 将新消费者加入消费者组
  • 彻底关闭消费者
  • 向消费者组订阅的主题添加新分区
  • 当消费者被组协调员认为死亡时
    • session.timeout.ms 到期且不发送心跳
    • max.poll.interval.ms 期间未调用 poll

重启后面临重新平衡的原因可能是消费者通过调用poll向组协调器发送joinGroupRequests。每个请求都会触发重新平衡。 (有可能)然后你会得到很多重新平衡。要解决此问题,您可以增加group.initial.rebalance.delay.ms。默认为 3 秒。

group.initial.rebalance.delay.ms: The amount of time the group coordinator will wait for more consumers to join a new group before performing the first rebalance. A longer delay means potentially fewer rebalances, but increases the time until processing begins.

关于docker - 代理重启后汇合的 Kafka 消费者卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60074943/

相关文章:

node.js - docker-compose NodeJS + Mongodb with mongoose,动态获取mongo容器ip

docker - 我如何从dockerfile创建docker镜像,然后在从docker-compsose运行镜像时使配置文件在卷上可用

java - 为什么我的 Kafka Consumer 在第一次运行时消费消息很快,但在以后的运行中速度会大大降低?

docker - docker compose 容器内的 SSH 代理转发

git - 如何推送到容器上的 git 服务器?

docker - 构建镜像时在 docker-compose 中使用 docker --squash

java - 这种在Spring Boot应用程序中启动无限循环的方式有什么问题吗?

apache-kafka - Python confluent kafka 在代理连接断开时引发异常

apache-kafka - kafka-connect 在分布式模式下返回 409

apache-kafka - 高级 Kafka 消费者 API 不起作用