提问者:小点点

kafka IO利用率与更多磁盘和代理


我们执行了kafka基准测试(BM),以计算给定kafka代理和磁盘的最大可用吞吐量(TP)。

kafka经纪人设置(机器规格

3个kafka代理,英特尔至强处理器E5-2650 v4 @ 2.20GHz,8个内核。

每个代理都有安装到/var/kafka的sdb设备,大小为14.6T。

sdb设备由RAID-10中的16个大约1TB的SAS磁盘组成。这意味着8个磁盘用作奇偶校验。

kafka生产者配置:

>

  • key=string, value=byteArray

    enable.auto.commit=false

    缓冲区.内存=500000000

    批量大小=262144

    retry.backoff.ms=5

    linger.ms=20000

    重试次数=0

    压缩类型=lz4

    确认=1

    Kafka主题结构

    100个分区,平衡所有3个经纪人

    复制因子 = 3

    Kafka式的BM是如何表演的

    我们使用专有的KakkaInjector工具消息注入消息。

    消息的大小为 ~1K,并连续 2.5 小时(相等)发送到所有 100 个分区。

    BM 的目标是了解在不达到超过 ~80%-85% IO 利用率的情况下可以实现的最大 TP 是多少。

    Kafka BM结果(吞吐量和IO利用率%)

    因此,在所有 3 个代理中,IO 利用率为 ~85%,每秒读取的消息速率为 550,000 条消息

    如果我们以kB衡量TP,则所有3个经纪人的总速度分别达到380 rKB/s和495 wKB/s。

    我的问题

    这些结果是通过3个kafka代理X 16个SAS磁盘X 1TB实现的。我们希望达到1.5M消息/秒,而不是当前的550K消息/秒。

    所以我的问题是:

    >

  • 向每个代理添加更多磁盘是否会线性增加读取和写入的消息数量?

    使用相同磁盘设置添加更多代理是否会线性增加正在读取和写入的MSG数量?

    如果我们把RAID从RAID-10换成RAID-0,TP会增加2倍吗?

    如果我们将磁盘从SAS更改为SSD,会增加TP吗?


  • 共1个答案

    匿名用户

    向每个代理添加更多磁盘是否会线性增加正在读取和写入的MSG数量?

    是的,但不总是。这取决于磁盘类型和RAID方案。如果你增加你的磁盘子系统的IOPS的数量,它将帮助你。

    现在,RAID0中有16个磁盘,因此即使在理想情况下,如果再添加2个磁盘,其工作速度也会稍快,但肯定不会对实现目标产生重大影响。

    使用相同磁盘设置添加更多代理是否会线性增加正在读取和写入的MSG数量?

    是的,但不总是这样。您的复制因子为3,这意味着即使您再添加1或2个代理,至少一个代理将处理比其他代理更多的主题,这意味着您的应用程序将超载,您的应用程序会在完成任务之前等待。但是,如果您将添加N*3个经纪人,这将有所帮助。

    如果我们把RAID从RAID-10换成RAID-0,TP会增加2倍吗?

    不是2X,但是是的,会比现在快。至少,你会有更多的并行线程。

    如果我们将磁盘从SAS更改为SSD,会增加TP吗?

    是的,当然。现在您需要更多并行 IOPS,SSD 将为您提供它。您现在有 100 个分区,如果您拥有在并行操作中速度更快的 SSD 磁盘,也许您将能够设置更多。

    相关问题