0

我在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. 在观察1次,因为我没有观察到任何磁盘读取,可能所有的数据已经从存储器中取出(它被缓存)?

  2. 在观察2中,我假设由于磁盘读取性能下降。虽然它从磁盘读取,但仍然有足够的可用内存可用,如nmon报告所示。

消费者从磁盘而不是内存读取的原因是什么?生产者生成的数据保留在缓存中多长时间?

  1. 我假设最大40MB/s的读取吞吐量是由于m4.large EC2实例的网络带宽限制所致。这个假设是否正确?

谢谢。

回答

0

建议调整Linux内核参数vm.swappiness = 1以确保最佳使用页面缓存进行读取并避免磁盘I/O。

https://en.m.wikipedia.org/wiki/Swappiness

还建议运行卡夫卡独自站立它自己的VM或物理服务器上,使得所有可用的RAM会习惯的页面缓存。

汇合刚公布的基于AWS的基准测试结果AK 0.11(Confluent 3。3),其中包括有和没有页面缓存测试命中,如果你想有一个比较

的基准是在这个博客帖子的链接

https://www.confluent.io/blog/we-will-say-exactly-confluent-platform-3-3-available-now/

的基准测试结果在这里

https://docs.google.com/spreadsheets/u/1/d/1dHY6M7qCiX-NFvsgvaE0YoVdNq26uA8608XIh_DUpI4/htmlview