我在AWS上配置了两个节点的Kafka集群,目前正在测试其性能属性。卡夫卡消费者从磁盘读取缓存数据库
我使用kafka-consumer-perf-test.sh从单个线程读取来自Kafka主题的5000万条消息。
我在测试消费者吞吐量时观察到以下情况。
观察1
上m4.large EC2实例单个消费者 - 读吞吐量40.2MB /秒
3名消费者在三个独立的m4.large EC2实例 - 个人读取吞吐量 - 40.25MB /秒。
无磁盘读取或写入报告了卡夫卡代理端
(由2 EBS卷支持两个单独m4.2xlarge EC2实例中运行)我一段时间后再次运行该工具。
观察2名
3名消费者在三个独立的m4.large EC2实例 - 个人读取吞吐量下降至 - 34.25MB /秒。
在这种情况下,我观察到Kafka broker节点中磁盘读取率相当高。
如果你能帮助我澄清以下内容,我将不胜感激。
在观察1次,因为我没有观察到任何磁盘读取,可能所有的数据已经从存储器中取出(它被缓存)?
在观察2中,我假设由于磁盘读取性能下降。虽然它从磁盘读取,但仍然有足够的可用内存可用,如nmon报告所示。
消费者从磁盘而不是内存读取的原因是什么?生产者生成的数据保留在缓存中多长时间?
- 我假设最大40MB/s的读取吞吐量是由于m4.large EC2实例的网络带宽限制所致。这个假设是否正确?
谢谢。