【发布时间】:2019-07-10 11:41:29
【问题描述】:
我们有以下 Kafka 设置
Partition - 10
Replication - 3
fetch.max.byte at broker - 32MB
Producer
max.block.ms =- 5min
request.timeout.mm - 5min
retries - 4
Consumer
No custom config
Message size - 1kb
使用此设置,我们面临以下问题:
当生产者放入大量消息时,有时生产者会抛出一个异常,说 Batch Expired 因为延迟时间已经过去。我知道当生产者的投放速度快于消费者的消费速度时会出现此异常,但是我是否可以设置任何配置来防止此异常并等到消费者能够消费。由于这是一个流数据,应用程序不会丢失任何消息,而且顺序也很重要。
我看到的另一个问题是当生产者发布甚至 10-15 条消息时,该消息在大约 6 秒后到达消费者。如果消息数量很大,这种延迟会不断增加。我检查了代理日志并观察到,一旦它到达代理,消费者就可以使用它。但它会在 5-6 秒后到达经纪人。这里的负载并不多,仍然需要 6 秒。 我应该如何提高性能。 我的应用程序从上游接收数据并发布到 kafka 主题 1。 从这个 kafka 主题 1 中,另一个应用程序根据密钥消费和聚合数据,然后发布到另一个 kafka 主题 2
主题 1 是主题 2 的生产者,因此根据我们的分析,主题发布很好,但主题 1 的消费有延迟。 我们认为这是因为经纪人。
【问题讨论】:
标签: apache-kafka