Kafka制作者错误,过期10个记录topic::6686毫秒已过去,因为批创建加上延迟时间

xxslljrj  于 2021-06-07  发布在  Kafka
关注(0)|答案(6)|浏览(575)

Kafka版本:0.10.2.1,

Kafka Producer error Expiring 10 record(s) for TOPIC:XXXXXX: 6686 ms has passed since batch creation plus linger time
org.apache.kafka.common.errors.TimeoutException: Expiring 10 record(s) for TOPIC:XXXXXX: 6686 ms has passed since batch creation plus linger time

任何线索都将不胜感激。。

p1tboqfb

p1tboqfb1#

当wither代理/主题/分区无法与生产者联系或生产者在队列前超时时,就会出现此问题。
我发现即使是一个活着的经纪人你也会遇到这个问题。在我的例子中,主题分区的领导者指向非活动的代理ID。要解决此问题,必须将这些领导者迁移到活动代理。
对受影响的主题使用主题重新分配工具。主题迁移:https://kafka.apache.org/21/documentation.html#basic_ops_automigrate

3hvapo4f

3hvapo4f2#

我们什么都试过了,但运气不好。
生产商批量大小减小,request.timeout.ms增加。
重新启动目标Kafka集群,仍然没有运气。
检查了目标kafka集群上的复制,也正常工作。
在prodcuer属性中添加了retries、retries.backout.ms。
在kafka prodcuer属性中也添加了linger.time。
最后,我们的案例中出现了kafka集群本身的问题,我们无法从两台服务器获取中间的元数据。
当我们将目标kafka集群更改为我们的dev box时,它工作得很好。

bvk5enib

bvk5enib3#

发生此异常是因为您正在以比发送记录快得多的速度对记录进行排队。
调用send方法时,producerrecord将存储在内部缓冲区中,以便发送到代理。一旦producerrecord被缓冲,不管它是否被发送,该方法都会立即返回。
记录被分组成批发送到代理,以减少每条消息的传输开销并提高吞吐量。
将记录添加到批中后,发送该批有一个时间限制,以确保在指定的持续时间内发送该记录。这由producer配置参数request.timeout.ms控制,默认值为30秒。
如果批处理的排队时间超过超时限制,则将引发异常。该批处理中的记录将从发送队列中删除。
已删除生产者配置的block.on.buffer.full、metadata.fetch.timeout.ms和timeout.ms。它们最初在Kafka0.9.0.0中被弃用。
因此,请尝试增加request.timeout.ms
不过,如果您在吞吐量方面有任何问题,也可以参考下面的博客

ztmd8pv5

ztmd8pv54#

我有同样的消息,我修复了它清理Kafka数据从zookeeper。在那之后它就开始工作了。

iqjalb3h

iqjalb3h5#

我在aks集群中也遇到了同样的问题,只是重启kafka和zookeeper服务器就解决了这个问题。

zd287kbt

zd287kbt6#

假设一个主题有100个分区(0-99)。kafka允许您通过指定特定分区来生成主题的记录。因为代理拒绝这些记录,所以我试图生成分区>99的问题。

相关问题