我负责操作两个kafka集群(一个用于prod,一个用于dev环境)。设置基本上是相似的,但是dev环境没有sasl/ssl设置,只使用4个代理而不是8个代理。每个代理被分配到一个专用的google kubernetes节点,该节点有4个vcpu和26gbram。
在我们的开发环境中,大约每秒有1000条消息,4个代理中的每一个都非常一致地使用4个可用cpu核中的3个(75%的cpu使用率)。
在我们的prod环境中,我们每秒收到大约1500条消息,cpu的使用率也是四分之三。
似乎cpu使用率至少是我们的瓶颈,我想知道如何执行cpu分析,以便我知道到底是什么导致了高cpu使用率。因为它是相对一致的,我想这可能是我们的快速压缩。
我对如何调查高cpu使用率的原因以及如何在集群中调整这一点很感兴趣。
ApacheKafka版本:2.1(以前kafka 0.11.x上的cpu负载也类似)
dev cluster(snappy压缩,无sasl/ssl,4个代理):每秒1000条消息,3个cpu核心一致使用
prod cluster(snappy compression,sasl/ssl,8个代理):每秒1500条消息,3个cpu核一致使用
旁注:我已经确保制作者快速压缩他们的消息。我可以访问所有jmx指标,但找不到任何有用的计算cpu使用率的方法。
我已经在我的prometheus上附加了度量(这也是我获得cpu使用统计数据的地方)。问题是容器的cpu使用率没有告诉我为什么会这么高。我需要更多的时间。g。cpu周期花在什么(压缩)上?经纪人沟通?sasl/ssl?)。
1条答案
按热度按时间jdzmm42g1#
如果您可以访问jmx度量,那么您就几乎可以完成cpu评测了。所要做的就是安装prometheus和grafana,然后将度量存储在prometheus中,并用grafana监控它们。你可以找到监视Kafka的完整步骤
注意:如果您对snappy压缩有怀疑,也许这个性能测试可以帮助您
更新:
基于confluent,大部分cpu使用都是因为ssl。
请注意,如果启用了ssl,则cpu需求可能会显著增加(具体细节取决于cpu类型和jvm实现)。
你应该选择多核的现代处理器。普通集群使用24核机器。
如果您需要在更快的CPU或更多的核心之间进行选择,请选择更多的核心。多核提供的额外并发性将远远超过稍快的时钟速度。