我们正在使用具有5个代理的Apache Kafka 2.2版本。每天我们会收到5000万个事件,但卡夫卡CPU使用率却很高。我们正在使用默认的生产者/消费者/经纪人设置。
我对演奏有一些疑问;
我们有不同的kafka-streams应用程序,这些应用程序进行聚合或加入操作以承载丰富的消息。我们所有的kafka-streams应用程序都包含以下设置:
,当然可能有内部拓扑主题。我们正在将我们的工作机扩展到至少5个应用程序。因此,大多数情况下,每个实例通常都会为一种分区策略寻找一个线程。
但是,除了拓扑优化之外,我们还可以对默认设置进行一些操作吗?
除了kafka-streams应用程序外,我们还使用spring-kafka生产者/消费者。但是就像我说的,我们正在使用默认设置。例如,我们在生产者端一一制作事件。
我们的吞吐量不够快,并且CPU使用率很高。如果我们关闭某些kafka-streams应用程序,则经纪人的负担正在减少。所以我的问题是;
一次复制为true且复制系数为3的in-sync-replicas是否对代理施加过多负载?我不想在生产环境中丢失或删除重复的消息,因此我的流应用程序必须一次准确地组成,但是spring应用程序在没有kafka-streams的情况下表现良好。
我想减少系统中代理的总体cpu使用量。
如果我在生产者端使用批生产者,请减少我的容错工作者的最小同步副本,我的CPU使用率会降低吗?
我想不出可选的方式。任何想法都会对我有帮助,为什么我的经纪人CPU使用率非常高,例如大约每天80-90%。
什么会导致经纪人的CPU使用率很高?
答案 0 :(得分:0)
您需要提供有关拓扑/群集的更多详细信息。例如;
max.poll.interval.ms
内完成其工作?如果这样的话,它们将经常进行重新平衡,而经纪人确实有一项重新平衡操作的工作,尽管这很小,如果您有很多一直在进行重新平衡的组,它们的总和就会大大增加。linger.ms
配置。这会影响您的生产者吞吐量。我认为Replication.factor和min.insync.replicas配置不会发挥重要作用,但是在不了解所有变量的情况下不能确定地说什么。
此外,如果您安装了监视工具,则应检查它们是否有异常。