卡夫卡经纪人的CPU使用率很高

时间:2020-08-01 11:48:56

标签: java apache-kafka apache-kafka-streams

我们正在使用具有5个代理的Apache Kafka 2.2版本。每天我们会收到5000万个事件,但卡夫卡CPU使用率却很高。我们正在使用默认的生产者/消费者/经纪人设置。

我对演奏有一些疑问;

我们有不同的kafka-streams应用程序,这些应用程序进行聚合或加入操作以承载丰富的消息。我们所有的kafka-streams应用程序都包含以下设置:

  • 完全一次:true
  • 最小同步副本:3
  • 复制因子:3
  • 主题分区:〜50-〜100(拓扑上的差异)

,当然可能有内部拓扑主题。我们正在将我们的工作机扩展到至少5个应用程序。因此,大多数情况下,每个实例通常都会为一种分区策略寻找一个线程。

但是,除了拓扑优化之外,我们还可以对默认设置进行一些操作吗?

除了kafka-streams应用程序外,我们还使用spring-kafka生产者/消费者。但是就像我说的,我们正在使用默认设置。例如,我们在生产者端一一制作事件。

我们的吞吐量不够快,并且CPU使用率很高。如果我们关闭某些kafka-streams应用程序,则经纪人的负担正在减少。所以我的问题是;

一次复制为true且复制系数为3的in-sync-replicas是否对代理施加过多负载?我不想在生产环境中丢失或删除重复的消息,因此我的流应用程序必须一次准确地组成,但是spring应用程序在没有kafka-streams的情况下表现良好。

我想减少系统中代理的总体cpu使用量。

如果我在生产者端使用批生产者,请减少我的容错工作者的最小同步副本,我的CPU使用率会降低吗?

我想不出可选的方式。任何想法都会对我有帮助,为什么我的经纪人CPU使用率非常高,例如大约每天80-90%。

什么会导致经纪人的CPU使用率很高?

1 个答案:

答案 0 :(得分:0)

您需要提供有关拓扑/群集的更多详细信息。例如;

  • 您看到所有经纪人或少数几个经纪人的CPU高峰吗?这可能会更容易导致您遇到主要问题。
  • 是否启用了加密? CPU使用率高的主要原因是加密。也许您的某些应用程序使用加密通道,有些却没有?
  • 检查您的流应用程序拓扑。错误的密钥使用可能导致过多的重新分区,从而在Kafka中使用重新分区主题,并可能导致代理端和应用程序端的CPU使用率都很高。
  • 您的消费者是否经常关闭/重新启动,或者以某种方式无法在max.poll.interval.ms内完成其工作?如果这样的话,它们将经常进行重新平衡,而经纪人确实有一项重新平衡操作的工作,尽管这很小,如果您有很多一直在进行重新平衡的组,它们的总和就会大大增加。
  • 除非您与生产者一起使用同步发送(这会极大地影响吞吐量),否则它们将一起批量发送。但您可以尝试使用linger.ms配置。这会影响您的生产者吞吐量。

我认为Replication.factor和min.insync.replicas配置不会发挥重要作用,但是在不了解所有变量的情况下不能确定地说什么。

此外,如果您安装了监视工具,则应检查它们是否有异常。

相关问题