【发布时间】:2018-01-09 03:07:52
【问题描述】:
我在 AWS 上配置了一个两节点的 Kafka 集群,目前正在测试它的性能属性。
我使用 kafka-consumer-perf-test.sh 使用单个线程从 Kafka 主题读取 5000 万条消息。
我在测试消费者吞吐量时观察到以下情况。
观察 1
m4.large EC2 实例上的单个使用者 - 读取吞吐量 40.2MB/秒
三个单独的 m4.large EC2 实例上的三个使用者 - 单个读取吞吐量 - 40.25MB /秒。
在 Kafka 代理端没有报告磁盘读取或写入(在由 2 个 EBS 卷支持的两个单独的 m4.2xlarge EC2 实例上运行)
一段时间后我再次运行该工具。
观察 2
三个单独的 m4.large EC2 实例上的三个消费者 - 单个读取吞吐量下降到 - 34.25MB /秒。
在这种情况下,我观察到 Kafka 代理节点中的磁盘读取率相当高。
如果您能帮助我澄清以下内容,我将不胜感激。
在观察 1 中,由于我没有观察到任何磁盘读取,是否所有数据都已从内存(缓存的位置)中获取?
在观察 2 中,我假设性能下降是由于磁盘读取。尽管它从磁盘读取,但仍然有足够的可用内存,如 nmon 报告所示。
消费者从磁盘而不是内存读取的原因可能是什么?生产者生成的数据会在缓存中保留多长时间?
- 我假设最大 40MB/s 的读取吞吐量是由于 m4.large EC2 实例的网络带宽限制。这个假设正确吗?
谢谢。
【问题讨论】:
标签: caching amazon-ec2 apache-kafka kafka-consumer-api kafka-producer-api