【发布时间】:2019-03-04 15:48:46
【问题描述】:
我负责操作两个 kafka 集群(一个用于生产环境,一个用于我们的开发环境)。设置大多相似,但开发环境没有 SASL/SSL 设置,仅使用 4 个代理而不是 8 个代理。每个代理都分配给一个专用的 google kubernetes 节点,该节点具有 4 个 vCPU 和 26GB RAM。
在我们的开发环境中,每秒大约有 1000 条消息,4 个代理中的每一个都非常一致地使用 4 个可用 CPU 内核中的 3 个(75% 的 CPU 使用率)。
在我们的 prod 环境中,我们每秒收到大约 1500 条消息,CPU 使用率也是 4 个内核中的 3 个。
似乎 CPU 使用率至少是我们的瓶颈,我想知道如何执行 CPU 分析,以便我知道究竟是什么导致了高 cpu 使用率。由于它相对一致,我想这可能是我们的快速压缩。
我对如何调查高 cpu 使用率的原因以及如何在集群中调整它的所有想法感兴趣。
Apache Kafka 版本:2.1(CPU 负载过去在 Kafka 0.11.x 上也类似)
开发集群(Snappy 压缩,无 SASL/SSL,4 个代理):每秒 1000 条消息,3 个 CPU 内核一致使用
Prod 集群(Snappy 压缩、SASL/SSL、8 个代理):每秒 1500 条消息,3 个 CPU 内核一致使用
旁注:我已经确保生产者能够快速压缩生成他们的消息。我可以访问所有 JMX 指标,但找不到任何有用的信息来计算 CPU 使用率。
我的 prometheus 已经附加了指标(这也是我从中获取 CPU 使用率统计信息的地方)。问题是容器的 CPU 使用率并没有告诉我为什么它这么高。我需要更多的粒度e。 G。 CPU 周期花费在哪些方面(压缩?代理通信?sasl/ssl?)。
【问题讨论】:
标签: apache-kafka