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

我负责操作两个kafka集群(一个用于prod,一个用于我们的开发环境).设置大部分都是类似的,但开发环境没有SASL / SSL设置,只使用4个而不是8个代理.每个代理都被分配到一个专用的google kubernetes节点,该节点具有4个vCPU和26GB RAM.

在我们的开发环境中,我们有大约1000条消息/秒,4个代理中的每一个都使用4个可用CPU核心中的3个(占CPU使用率75%).

在我们的prod环境中,我们得到大约1500条消息/秒,CPU使用率也是4个核心中的3个.

似乎CPU使用率至少是我们的瓶颈,我想知道如何执行CPU分析,以便我知道究竟是什么导致高CPU使用率.由于它相对一致,我想它可能是我们的快速压缩.

我对如何调查高CPU使用率的原因以及如何在集群中调整它的所有想法感兴趣.

> Apache Kafka版本:2.1(CPU负载过去与Kafka 0.11.x类似)
> Dev Cluster(Snappy压缩,无SASL / SSL,4个代理):1000个消息/秒,3个CPU核心一致使用
> Prod集群(Snappy压缩,SASL / SSL,8个经纪人):1500条消息/秒,3个CPU核心一致使用

旁注:我已经确保生产者生成他们的消息snappy压缩.我可以访问所有JMX指标,但找不到任何有用的方法来计算CPU使用率.

我已经将指标附加到我的prometheus(这也是我获得CPU使用率统计数据的地方).问题是容器的CPU使用率并没有告诉我为什么这么高.我需要更多的粒度e. G.什么是CPU周期(压缩?代理通信?sasl / ssl?).

最佳答案
如果您有权访问JMX指标,那么您几乎已经完成了对CPU的分析.所有必须做的就是安装Prometheus和Grafana,然后在Prometheus中存储指标并使用Grafana监控它们.您可以在Monitoring Kafka找到完整的步骤

Grafana Dashboard for cluster monitoring

注意:如果您对snappy压缩感到怀疑,也许this performance test可以帮助您

更新:

基于Confluent,大多数CPU使用都是因为SSL.

Note that if SSL is enabled, the CPU requirements can be significantly
higher (the exact details depend on the CPU type and JVM
implementation).

You should choose a modern processor with multiple cores. Common
clusters utilize 24 core machines.

If you need to choose between faster CPUs or more cores, choose more
cores. The extra concurrency that multiple cores offers will far
outweigh a slightly faster clock speed.

转载注明原文:apache-kafka – 如何找到Kafka经纪人高CPU使用率的根本原因? - 代码日志