我们执行了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%)
因此,在所有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 回答
是的,但并非总是如此 . 这取决于磁盘类型和RAID方案 . 如果增加磁盘子系统的IOPS数量,它将对您有所帮助 .
现在你在RAID0中有16个磁盘,所以即使在理想的情况下,如果你再添加2个磁盘,它的工作速度会稍快一点,但绝对不会对达到你的目标产生重大影响 .
是的,但并非总是如此 . 您有复制因子= 3,这意味着即使您再添加1或2个代理,至少有一个代理将处理比其他代理更多的主题,这意味着它将被重载并且您的应用程序将在完成任务之前等待 . 但是,如果您要添加N * 3经纪人 - 这将有所帮助 .
不是2X,但是,它会比现在更快 . 至少,你将有更多的并行线程 .
当然是 . 现在您需要更多并行IOPS,SSD将为您提供 . 你现在有100个分区,如果你有SSD磁盘,并行操作要快得多,你可以设置更多分区 .