Kafka Producer错误到期TOPIC的10条记录:XXXXXX:自创建批次以及延迟时间已过去6686毫秒

时间:2017-10-14 23:54:47

标签: apache-kafka

卡夫卡版本:0.10.2.1,

Kafka Producer错误TOPIC的10条记录到期:XXXXXX:自创建批次以及延迟时间后已经过了6686 ms org.apache.kafka.common.errors.TimeoutException:过期10条TOPIC记录:XXXXXX:自批量创建加上余留时间已经过去6686毫秒

任何线索都将受到赞赏..

6 个答案:

答案 0 :(得分:15)

发生此异常是因为您以比发送速度快得多的速度对记录进行排队。

当您调用send方法时,ProducerRecord将存储在内部缓冲区中以发送给代理。一旦ProducerRecord被缓冲,该方法立即返回,无论它是否已被发送。

记录被分组为批次,用于发送给代理,减少每封邮件的传输,并提高吞吐量。

将记录添加到批处理中后,发送该批处理有一个时间限制,以确保它在指定的持续时间内发送。这由Producer配置参数request.timeout.ms控制,默认为30秒。

如果批处理的排队时间超过了超时限制,则会抛出异常。该批次中的记录将从发送队列中删除。

生产者配置block.on.buffer.full,metadata.fetch.timeout.ms和timeout.ms已被删除。它们最初在Kafka 0.9.0.0中被弃用。

因此,请尝试增加 request.timeout.ms

但是,如果您有任何与吞吐量相关的问题,您还可以参考以下blog

答案 1 :(得分:2)

我也有同样的消息,并修复了它从Zookeeper清除kafka数据的问题。之后就可以了。

答案 2 :(得分:1)

说一个话题有100个分区(0-99)。 Kafka使您可以通过指定特定分区来生成主题的记录。面对我试图对大于99的分区进行分区的问题,因为经纪人拒绝了这些记录。

答案 3 :(得分:0)

我在aks集群中遇到了同样的问题,只是重新启动kafka和zookeeper服务器即可解决该问题。

答案 4 :(得分:0)

当枯萎的经纪人/主题/分区在队列之前无法与生产者联系或生产者超时时,就会出现此问题。

我发现,即使是经纪人,您也可能会遇到此问题。在我的案例中,主题分区负责人指的是无效的经纪人ID。要解决此问题,您必须将那些领导者迁移到活跃的经纪人中。

使用主题重新分配工具处理受影响的主题。 主题迁移:https://kafka.apache.org/21/documentation.html#basic_ops_automigrate

答案 5 :(得分:-1)

我们尽了一切,但是没有运气。

  1. 减少生产者批次大小并增加request.timeout.ms。
  2. 重新启动目标kafka群集,仍然没有运气。
  3. 检查了目标kafka群集上的复制,也可以正常工作。
  4. 在产品属性中添加了重试,retries.backout.ms。
  5. 在kafka产品属性中添加了linger.time。

最后,我们的案例是kafka群集本身存在问题,因为我们无法从两个服务器之间获取元数据。

当我们将目标kafka集群更改为我们的开发箱时,它运行良好。