【问题标题】:Kafka Consumers Reading From Disk Vs CacheKafka 消费者从磁盘读取与缓存
【发布时间】: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. 在观察 1 中,由于我没有观察到任何磁盘读取,是否所有数据都已从内存(缓存的位置)中获取?

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

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

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

谢谢。

【问题讨论】:

    标签: caching amazon-ec2 apache-kafka kafka-consumer-api kafka-producer-api


    【解决方案1】:

    建议调优 Linux 内核参数vm.swappiness = 1,以确保充分利用页面缓存进行读取并避免磁盘 I/O。

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

    另外建议在自己的虚拟机或物理服务器上独立运行 Kafka,以便所有可用 RAM 都用于页面缓存。

    Confluent 刚刚发布了基于 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      相关资源
      最近更新 更多