当前位置: 首页 > 知识库问答 >
问题:

CommitFailedException:由于组重新平衡,无法完成提交

毛胜
2023-03-14

我正在使用kafka 0.9.0.1代理和0.9.0.1消费者客户端。我的使用者实例正在使用处理时间小于1秒的记录。和其他主要配置

enable.auto.commit=false
session.timeout.ms=30000
heartbeat.interval.ms=25000

一小时一两次。每天消耗约60亿次事件。似乎偏移量只存储在主题“__consumer_offsets”的一个分区中。它还会增加特定代理的负载。

有人知道这些问题吗?

共有1个答案

王长卿
2023-03-14

如果Kafka在会话超时内没有接收到至少一个心跳,则会触发重新平衡。如果触发了重新平衡,提交将失败。这是意料之中的。那么问题是为什么心跳没有发生呢?这可能有几个原因。

>

  • 首先要做的是手动提交。从0.9开始,heartbeat不会在单独的线程中发生。使用者运行在一个处理提交、心跳和轮询的线程上。因此,当您执行consumer.poll()或consumer.commit()时会发生心跳。因此,如果您的处理时间超过会话超时,可能会导致心跳失败。

    Kafka0.9 consumer中有一个已知的问题,可能会导致您面临的问题。

    关于Kafaka配置

    Kafka服务器期望在会话超时内至少接收到一个心跳。因此使用者尝试最多执行一次心跳(会话超时/心跳次数)。有些心跳可能会被错过。所以你的心跳时间不应该超过会话超时的1/3。(可参考单据)

  •  类似资料:
    • 环境:Hadoop2.75.+Flink1.4+Kafka0.10 我已经建立了一个实时数据处理项目。我使用Flink表源API(Kafka010JsonTableSource)作为表源。从kafka获取数据,然后执行一个SQL,最后输出到一个kafka主题。这是一个清晰的流程,但是我在Flink集群上执行时遇到了异常,下面是我的主要代码: 我已经启用了检查点。第一次在flink上执行时,我只是遵

    • 我使用的是Kafka0.10.2,现在面临一个CommitFailedException。如: 无法完成提交,因为组已重新平衡并将分区分配给另一个成员。这意味着对poll()的后续调用之间的时间比配置的max.poll.interval.ms长,这通常意味着poll循环花费了太多时间处理消息。您可以通过增加会话超时,或者通过使用max.poll.records减小poll()中返回的批的最大大小来

    • 今天,在我的Spring Boot和单实例Kafka应用程序中,我遇到了以下问题: CommitFailedException:无法完成提交,因为组已经重新平衡并将分区分配给了另一个成员。这意味着对poll()的后续调用之间的时间比配置的max.poll.interval.ms长,这通常意味着poll循环花费了太多时间处理消息。您可以通过增加会话超时,或者通过使用max.poll.records减

    • 有人能帮忙吗?原因和解决方法是什么? 此外,当我的1个kafka代理关闭时,我的kafka流应用程序没有连接到其他代理?我已经设置了

    • 问题内容: 我已经从Rich Faces 3.3升级到Rich Faces 4.2,因为Ajax不适用于IE9。现在它仍然不起作用。 收到响应后,IE会收到一个JS错误 “ SCRIPT58734:从源头上来的东西”:c00ce56e。 在尝试时 在jsf.js.html?ln = javax.faces&conversationContext = 2,第1行第21747行 我认为是因为HTTP标

    • 我在使用Hibernate执行数据库更新时遇到了一个问题。当尝试repository.add(Object)操作时,它会给出一个验证异常。 我已经在模型类上添加了验证,但是我试图插入的值似乎满足了要求,所以我不知道问题出在哪里。 如果删除验证注释,repository.add(object)就可以成功完成,即。 好心看看有没有什么建议,提前谢谢。 MySQL(8.0.17)模式 Hibernate