首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >timeoutexception的Kafka broker性能问题

timeoutexception的Kafka broker性能问题
EN

Stack Overflow用户
提问于 2019-02-16 15:03:40
回答 1查看 704关注 0票数 0

我们有卡夫卡下面的设置

代码语言:javascript
复制
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

通过这种设置,我们将面临以下问题:

  1. 当生产者放置大量的消息时,有时生产者会抛出一个异常,表示批处理随着逗留时间的过去而过期。我了解到,当生产者投入的速度超过消费者的消费速度时,就会出现此异常,但是否有任何配置可以阻止此异常,并等到使用者能够消费时再进行配置。因为这是一个流数据,应用程序不能丢失任何消息,而且订单也很重要。
  2. 我看到的另一个问题是,当生产者发布10到15条消息时,该消息在大约6秒后到达消费者手中。如果消息数量很大,这种延迟就会持续增加。我检查了Broker日志并观察到,一旦它到达broker,消费者就能够使用它。但5-6秒后就会传到经纪人那里。这里的负载不多,还需要6秒。我该如何提高表现。我的应用程序从上游接收数据并发布到kafka主题1。从这个kafka topic1,另一个应用程序使用和聚合基于键的数据,并发布到另一个kafka主题2。

主题1是topic2的生产者,因此根据我们的分析,主题发布是可以的,但是来自topic1的消费有延迟。我们认为这是因为经纪人。

EN

回答 1

Stack Overflow用户

发布于 2019-02-16 16:57:04

如果您看到超出了linger.ms时间的异常,这意味着该批消息在发送缓冲区中的时间超过了linger.ms。您可以将linger.ms设置为零,让生产者立即向代理发送消息。

根据您的描述,延迟发生在生产方面。除了将linger.ms设置为零之外,调整下列设置可能有助于减少产生延迟:

代码语言:javascript
复制
acks= 1   # Leader will write the record to its local log but will
          # respond without awaiting full acknowledgement from all followers.

batch.size # reduce the batch size so that the producer do not wait for 
           # a larger batch size

delivery.timeout.ms # this is available since Kafka 2.1, and allows you 
                    # specify clearly on delivery timeout

max.in.flight.requests.per.connection # increase # of inflight request can 
                                      # help to improve throughput
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54724408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档