首页 文章

具有更多磁盘和代理的kafka IO利用率

提问于
浏览
2

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

kafka brokers setup (machine spec & disks):

3 kafka经纪人,Intel(R)Xeon(R)CPU E5-2650 v4 @ 2.20GHz,8核 .

每个代理都有sdb设备挂载到/ var / kafka,大小为14.6T .

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

kafka producer configuration:

  • key = string,value = byteArray

  • enable.auto.commit = false

  • buffer.memory = 500000000

  • batch.size = 262144

  • retry.backoff.ms = 5

  • linger.ms = 20000

  • 重试次数= 0

  • compression.type = lz4

  • acks = 1

kafka topic configuration

100个分区,在所有3个经纪人之间 balancer

复制因子= 3

how the kafka BM was performed

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

消息的大小约为1K,并连续2.5小时被发送到所有100个分区(同样) .

BM的目标是看到在不超过~80%-85%IO利用率%的情况下可以实现的最大TP .

kafka BM results (throughput and IO utilization%)

enter image description here

因此,在所有3个代理中,IO利用率约为85%,消息/秒的速率为550,000 msgs,正在读取550,000 msgs .

如果我们以kB测量方式查看TP,那么所有3个代理都达到了380 rKB / s和495 wKB / s的tota .

my questions

使用3个kafka代理X 16 SAS盘X 1TB实现了这些结果 . 我们希望达到~1.5M消息/秒而不是当前550Kms /秒的速率 .

所以我的问题是:

  • 为每个代理添加更多磁盘会线性增加正在读取和写入的消息数量吗?

  • 正在添加更多代理,使用相同的磁盘设置将线性增加正在读取和写入的消息数量?

  • 如果我们将RAID从RAID-10更改为RAID-0,TP会增加2倍吗?

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

1 回答

  • 2

    向每个代理添加更多磁盘将线性增加正在读取和写入的消息数量?

    是的,但并非总是如此 . 这取决于磁盘类型和RAID方案 . 如果增加磁盘子系统的IOPS数量,它将对您有所帮助 .

    现在你在RAID0中有16个磁盘,所以即使在理想的情况下,如果你再添加2个磁盘,它的工作速度会稍快一点,但绝对不会对达到你的目标产生重大影响 .

    添加更多具有相同磁盘设置的代理将线性增加读取和写入的消息数量?

    是的,但并非总是如此 . 您有复制因子= 3,这意味着即使您再添加1或2个代理,至少有一个代理将处理比其他代理更多的主题,这意味着它将被重载并且您的应用程序将在完成任务之前等待 . 但是,如果您要添加N * 3经纪人 - 这将有所帮助 .

    如果我们将RAID从RAID-10更改为RAID-0,TP会增加2倍吗?

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

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

    当然是 . 现在您需要更多并行IOPS,SSD将为您提供 . 你现在有100个分区,如果你有SSD磁盘,并行操作要快得多,你可以设置更多分区 .

相关问题