如何找到Kafka经纪人CPU使用率高的根本原因?

时间:2019-03-01 22:29:13

标签: apache-kafka

我负责运营两个kafka集群(一个用于产品,一个用于我们的开发环境)。设置大部分是类似的,但是开发环境没有SASL / SSL设置,仅使用4个代理,而不是8个代理。每个代理都分配给一个专用的Google kubernetes节点,该节点具有4个vCPU和26GB RAM。

在我们的开发环境中,每秒大约有1000条消息,并且这4个代理中的每个代理都在4个可用CPU内核中始终使用3个(75%CPU使用率)。

在我们的生产环境中,我们每秒获得约1500条消息,并且CPU使用率也是4个内核中的3个。

看来CPU使用率至少是我们的瓶颈,我想知道如何执行CPU配置文件,以便我确切地知道导致CPU使用率高的原因。由于它是相对一致的,我猜可能是我们的快速压缩。

我对所有想法都感兴趣,我该如何调查CPU使用率高的原因以及如何在集群中进行调整。

  • Apache Kafka版本:2.1(CPU负载以前在Kafka 0.11.x上也很相似)

  • Dev群集(快速压缩,无SASL / SSL,4个代理):每秒1000条消息,3个CPU核心的使用率一致

  • 产品集群(Snappy压缩,SASL / SSL,8个代理):每秒1500条消息,使用3个CPU核心保持一致

侧面说明:我已经确保生产者以快速压缩的方式产生他们的消息。我可以访问所有JMX指标,但是找不到任何有用的CPU资源。

我已经将度量标准附加到了我的方法(这也是我从中获得CPU使用情况统计信息的地方)。问题在于容器的CPU使用率并没有告诉我为什么它这么高。我需要更多的粒度e。 G。在压缩(代理程序通信或sasl / ssl?)上花费了多少CPU周期。

1 个答案:

答案 0 :(得分:5)

如果您有权访问JMX指标,则几乎完成了对CPU的性能分析。所有要做的就是安装Prometheus和Grafana,然后将指标存储在Prometheus中,并使用Grafana对其进行监视。您可以在Monitoring Kafka

中找到完整的步骤

Grafana Dashboard for cluster monitoring

注意:如果您对快速压缩感到怀疑,也许this performance test可以为您提供帮助

更新

基于Confluent,大多数CPU使用情况是由于SSL。

  

请注意,如果启用了SSL,则对CPU的要求可能会很高   更高(具体细节取决于CPU类型和JVM   实施)。

     

您应该选择具有多个内核的现代处理器。共同   集群利用24台核心计算机。

     

如果您需要在更快的CPU或更多的内核之间进行选择,请选择更多   核心。多核提供的额外并发性将远远超过   胜过稍快的时钟速度。