【问题标题】:Error when producing a large number messages生成大量消息时出错
【发布时间】:2018-10-25 16:57:54
【问题描述】:

我正在生成大量消息,一段时间后,我的客户端开始显示此警报,直到它失败,并且我的主题开始在复制分区下:

2018-05-15 16:34:05,234 [kafka-producer-network-thread | topicxxx-bd7bd32c-de7c-45d2-8c62-9a8d94207eeb-StreamThread-1-producer] WARN  org.apache.kafka.clients.producer.internals.Sender  - Got error produce response with correlation id 116107 on topic-partition topicxxx_2-4, retrying (9 attempts left). Error: REQUEST_TIMED_OUT
2018-05-15 16:34:05,235 [kafka-producer-network-thread | topicxxx-bd7bd32c-de7c-45d2-8c62-9a8d94207eeb-StreamThread-1-producer] WARN  org.apache.kafka.clients.producer.internals.Sender  - Got error produce response with correlation id 116119 on topic-partition topicxxx-4, retrying (9 attempts left). Error: NETWORK_EXCEPTION

---编辑---

同一进程有大约 4.2 亿条消息要消耗。 任何帮助将不胜感激。

卡夫卡版本:0.11.0.2

【问题讨论】:

  • 对我来说,它通常发生在开头,例如每秒 1000 条消息,在更高的比率上发生错误的概率更高。然而,后来似乎显示出稳步进展,不再失败。 1.1.0。希望对您有所帮助。

标签: apache-kafka kafka-producer-api


【解决方案1】:

问题通常是因为Kafka Broker的负载太高,导致你有太多的数据要发送到Topic。

为确保这是否是原因,您可以对生产者设置速率限制(例如使用 Guava RateLimiter)。就我而言,在将生产者速度限制为较低值后,问题就消失了。

更进一步,您还可以调整生产者配置以提高其性能。以下配置可能会有所帮助:

  • buffer.memory: 给出比默认值更大的值。
  • batch.size:给出比默认值更大的值。
  • linger.ms:给定一个大于 0 的值。即使记录到达的速度快于发送出去的速度,也要确保批量发送,以减少请求的数量。
  • compression.type:默认无,设置适当的压缩以减少网络负载。

有关更多配置说明,请参阅Kafka documents

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2020-02-21
    • 2021-01-20
    • 2015-09-01
    • 1970-01-01
    相关资源
    最近更新 更多