一、压测环境
CKafka实例: 规格:入门型、峰值带宽: 40 MB/s、磁盘容量: 300GB,
topic:4分区 3副本
压测服务器: 1台:1C 2G
二、压测脚本
生产者压测脚本:
代码语言:javascript复制./kafka-producer-perf-test.sh --topic ckafka-test1 --num-records 100000 --record-size 100000 --producer-props bootstrap.servers=10.1.3.90:9092 --throughput 2000
消费者压测脚本:
代码语言:javascript复制./kafka-consumer-perf-test.sh --messages 100000 --threads 4 --fetch-size 230 --broker-list bootstrap.servers=10.1.3.90:9092 --num-fetch-threads 6 --topic ckafka-test1
三、开始压测
生产者压测:
消费者压测(一定要保持topic中有足够的数据,可以一边生产,一边消费)
6个处理线程数
[root@dn1 bin]# ./kafka-consumer-perf-test.sh —messages 4000000 —threads 6 —fetch-size 230 —broker-list bootstrap.servers=10.1.3.90:9092 —num-fetch-threads 6 —topic ckafka-test1 start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec 2019-09-27 11:35:40:259, 2019-09-27 11:35:47:536, 436.7313, 60.0153, 4823, 662.7731
5个处理线程数
[root@dn1 bin]# ./kafka-consumer-perf-test.sh —messages 4000000 —threads 5 —fetch-size 230 —broker-list bootstrap.servers=10.1.3.90:9092 —num-fetch-threads 6 —topic ckafka-test1 start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec 2019-09-27 11:36:03:149, 2019-09-27 11:36:24:408, 874.0864, 41.1161, 9409, 442.5890
4个处理线程数
[root@dn1 bin]# ./kafka-consumer-perf-test.sh —messages 4000000 —threads 4 —fetch-size 230 —broker-list bootstrap.servers=10.1.3.90:9092 —num-fetch-threads 6 -opic ckafka-test1 start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec 2019-09-27 11:42:13:815, 2019-09-27 11:42:35:087, 873.8003, 41.0775, 9406, 442.1775
3个处理线程数
[root@dn1 bin]# ./kafka-consumer-perf-test.sh —messages 4000000 —threads 3 —fetch-size 230 —broker-list bootstrap.servers=10.1.3.90:9092 —num-fetch-threads 6 —topic ckafka-test1 start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec 2019-09-27 11:43:09:625, 2019-09-27 11:43:29:892, 873.8956, 43.1191, 9407, 464.1536
2个处理线程数
[root@dn1 bin]# ./kafka-consumer-perf-test.sh —messages 4000000 —threads 2 —fetch-size 230 —broker-list bootstrap.servers=10.1.3.90:9092 —num-fetch-threads 6 —topic ckafka-test1 start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec 2019-09-27 11:43:45:890, 2019-09-27 11:44:07:176, 874.1817, 41.0684, 9410, 442.0746
1个处理线程数
[root@dn1 bin]# ./kafka-consumer-perf-test.sh —messages 4000000 —threads 1 —fetch-size 230 —broker-list bootstrap.servers=10.1.3.90:9092 —num-fetch-threads 6 —topic ckafka-test1 start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec 2019-09-27 11:44:28:535, 2019-09-27 11:44:37:958, 437.1128, 46.3879, 4827, 512.2572
四、控制台监控数据
生产流量(单位:MB):用户生产者生成消息所产生的流量, 实例生产流量(不包含副本产生的流量),按照所选择的时间粒度统计求和。(注意,单位是兆字节,也就是MB) 消费流量(单位:MB): 客户环境里消费者实时的消费流量大小。这个指标跟消费消息数同步,没有消费者消费,那么这里也没流量。 实例消费流量(不包含副本产生的流量),按照所选择的时间粒度统计求和。 生产条数: 用户生产者生成的消息条数 消费条数: 客户环境里消费者实时的消费条数。如果一直是0,那么说明没有消费者或者是消费者没有在消费消息 已占用磁盘容量(单位:MB):购买CKafka实例(磁盘容量: 300GB),已占用的磁盘容量 落盘消息条数:存到磁盘的消息条数 生产峰值带宽:生产者是比较平滑的,粒度都是一分种,就是一分种的60秒,每一秒的流量都差不多。 磁盘使用百分比:消费是一个阶段性的,跟客户每次拉取的消息条数有关,统计的是一分种中一秒的最大值,就是这一秒有多少消费者来拉,这一秒拉了多少次,拉取一次,可能需要消费一段时间。统计的也是这一分种内最大的那一秒的流量。 实例连接数:连接实例的数量
五、压测数据和监控解读
生产者压测:
./kafka-producer-perf-test.sh —topic ckafka-test1 ### topic名称,本例为ckafka-test1 —num-records 100000 ### 总共需要发送的消息数,本例为100000 —record-size 100000 ### 每个记录的字节数,本例为100000 —producer-props bootstrap.servers=10.1.3.90:9092 ### ckafka的配置信息,本例只指定了ckafka的链接信息 —throuput 2000 ### 每秒钟发送的记录数,本例为2000
压测结果
可以看到本例中,每秒平均向ckafka发送了1364条消息,256.3条/s、24.45MB/s,每次写入的平均延迟为240.5毫秒,最大的延迟为4176.9毫秒
消费者压测
./kafka-consumer-perf-test.sh —messages 4000000 ### 总共要消费的消息个数,本例为4000000,400万 —threads 6 ###处理线程数,本例为6 —fetch-size 230 ### 指定每次fetch的数据的大小,本例为230k —broker-list bootstrap.servers=10.1.3.90:9092 ### ckafka的配置信息,本例只指定了ckafka的链接信息 —num-fetch-threads 6 ###取消息的线程数,本例为6 —topic ckafka-test1 ### topic名称,本例为ckafka-test1
压测结果
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec 2019-09-27 11:35:40:259, 2019-09-27 11:35:47:536, 436.7313, 60.0153, 4823, 662.7731 可以看到本例中,开始时间:2019-09-27 11:35:40:259,结束时间:2019-09-27 11:35:47:536, 总共消费了436.7313M的数据,每秒为60.0153M, 总共消费了4823条消息,每秒为662.7731条。