kafka消费者从磁盘读取与从缓存读取

u3r8eeie  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(521)

我已经在aws上配置了一个两节点kafka集群,目前正在测试它的性能属性。
我使用kafka-consumer-perf-test.sh通过一个线程从一个kafka主题中读取了5000万条消息。
在测试消费者吞吐量时,我观察到以下情况。
观察1
m4.2大型ec2示例上的单个使用者—读取吞吐量40.2mb/秒
三个独立m4.large ec2示例上的三个使用者—单个读取吞吐量—40.25mb/秒。
kafka代理端未报告磁盘读写(在两个独立的m4.2xlarge ec2示例上运行,由2个ebs卷支持)
过了一段时间我又用了一下工具。
观察2
三个独立m4.large ec2示例上的三个使用者—单个读取吞吐量降至-34.25mb/秒。
在本例中,我观察到kafka代理节点中的磁盘读取率相当高。
如果你能帮我澄清一下,我将不胜感激。
在观察1中,由于我没有观察到任何磁盘读取,所有数据是否都是从内存(缓存的位置)中提取的?。
在观察2中,我假设由于磁盘读取而导致性能下降。尽管它是从磁盘读取的,但正如nmon报告所揭示的,仍然有足够的可用内存。
消费者从磁盘而不是内存中读取数据的原因可能是什么?生产者产生的数据在缓存中保留多长时间?
我假设最大40mb/s的读吞吐量是由于m4.2示例的网络带宽限制造成的。这个假设正确吗?
谢谢您。

tcbh2hod

tcbh2hod1#

建议调整linux内核参数 vm.swappiness = 1 以确保最佳地使用页缓存进行读取并避免磁盘i/o。
看到了吗https://en.m.wikipedia.org/wiki/swappiness
另外,建议在自己的vm或物理服务器上独立运行kafka,这样所有可用的ram都将用于页面缓存。
confluent刚刚发布了基于aws的AK0.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

相关问题