1.压测方案
1.1 压测目的
1.2 测试范围及方法
1.2.1 测试范围概述
1.2.2测试方法
2. 生产环境压测
2.1 生产环境集群配置
2.2 生产环境producer压测脚本
2.2.1创建TOPIC
2.2.1.1创建3分区3副本TOPIC prd_pressure_test_3_3partition
2.2.1.2创建4分区3副本TOPIC prd_pressure_test_4_3partition
2.2.1.3创建6分区3副本TOPIC prd_pressure_test_6_3partition
2.2.1.4创建8分区3副本TOPIC prd_pressure_test_8_3partition
2.2.2 producer压测脚本
2.2.2.1 3分区3副本100w 2K数据写入压测
2.2.2.2 4分区3副本100w 2K数据写入压测
2.2.2.3 6分区3副本100w 2K数据写入压测
2.2.2.4 8分区3副本100w 2K数据写入压测
2.3 生产环境producer压测结果
2.4 生产环境consumer压测脚本
2.4.1 consumer压测脚本
2.4.1.1 3分区3副本1线程100w 2K数据读取压测
2.4.1.2 4分区3副本1线程100w 2K数据读取压测
2.4.1.3 6分区3副本1线程100w 2K数据读取压测
2.4.1.4 8分区3副本1线程100w 2K数据读取压测
2.4.1.5 3分区3副本3线程100w 2K数据读取压测
2.4.1.6 4分区3副本4线程100w 2K数据读取压测
2.4.1.7 6分区3副本6线程100w 2K数据读取压测
2.4.1.8 8分区3副本8线程100w 2K数据读取压测
2.5 生产环境consumer压测结果
3. 测试环境压测
3.1 测试环境集群配置
3.2测试环境producer压测脚本
3.2.1 producer压测脚本
3.2.1.1 3分区3副本100w 2K数据写入压测
3.3测试环境producer压测结果
3.4测试环境consumer压测脚本
3.4.1 consumer压测脚本
3.4.1.1 3分区3副本1线程100w 2K数据读取压测
3.4.1.2 3分区3副本3线程100w 2K数据读取压测
3.5测试环境consumer压测结果
1.压测方案
1.1 压测目的
1.1 压测目的
本次性能测试在测试环境和正式环境下服务器上Kafka处理MQ消息能力进行压力测试。测试包括对Kafka写入MQ消息和消费MQ消息进行压力测试,根据不同量级的消息处理结果,评估Kafka和Flink的处理性能是否满足项目需求,是否可以满足未来5年的业务增长速率。
1.2 测试范围及方法
1.2.1 测试范围概述
1.2.1 测试范围概述
测试使用Kafka自带的测试脚本,通过命令对Kafka发起写入MQ消息和Kafka消费MQ消息的请求。模拟不同数量级的消息队列的消息写入和消费场景,根据Kafka的处理结果,评估Kafka是否满足处理亿级以上的消息的能力。
1.2.2测试方法
测试目的
验证单台服务器上Kafka写入消息和消费消息的能力,根据测试结果评估当前Kafka集群模式是否满足上亿级别的消息处理能力。
测试方法
在服务器上使用Kafka自带的测试脚本,模拟1y级别的消息写入以及读取请求,查看Kafka处理不同数量级的消息数时的处理能力,包括每秒生成消息数、吞吐量、消息延迟时间。
Kafka消息写入创建的topic命名为test_kafka_throughout,Kafka消费读取的topic也是该topic;使用命令发起消费该topic的请求,针对不同的测试指标,本次我们采用固定其他值,动态变化测量值的方式来进行,具体使用脚本为kafka自带的测试脚本,分别为kafka bin目录下的kafka-producer-perf-test.sh和kafka-consumer-perf-test.sh;通过测试来查看Kafka消费不同数量级别的消息时的处理能力。
kafka-producer-perf-test.sh生产者测试参数
2.2 生产环境producer压测脚本
2.2.1创建TOPIC
2.2.1.1创建3分区3副本TOPIC prd_pressure_test_3_3partition
./kafka-topics --create --bootstrap-server bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --replication-factor 3 --partitions 3 --topic prd_pressure_test_3_3partition
2.2.1.2创建4分区3副本TOPIC prd_pressure_test_4_3partition
./kafka-topics --create --bootstrap-server bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --replication-factor 3 --partitions 4 --topic prd_pressure_test_4_3partition
2.2.1.3创建6分区3副本TOPIC prd_pressure_test_6_3partition
./kafka-topics --create --bootstrap-server bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --replication-factor 3 --partitions 6 --topic prd_pressure_test_6_3partition
2.2.1.4创建8分区3副本TOPIC prd_pressure_test_8_3partition
./kafka-topics --create --bootstrap-server bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --replication-factor 3 --partitions 8 --topic prd_pressure_test_8_3partition
2.2.2 producer压测脚本
| Kafka节点数 | 分区数 | 副本数 | 每条消息大小 | Acks |
| 6 | 3 | 3 | 2k | 1 |
| 6 | 3 | 3 | 2k | All |
2.2.2.1 3分区3副本100w 2K数据写入压测
./kafka-producer-perf-test --topic prd_pressure_test_3_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 acks=1
./kafka-producer-perf-test --topic prd_pressure_test_3_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 acks=all
2.2.2.2 4分区3副本100w 2K数据写入压测
| Kafka节点数 | 分区数 | 副本数 | 每条消息大小 | Acks |
| 6 | 4 | 3 | 2k | 1 |
| 6 | 4 | 3 | 2k | All |
./kafka-producer-perf-test --topic prd_pressure_test_4_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 acks=1
./kafka-producer-perf-test --topic prd_pressure_test_4_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 acks=all
2.2.2.3 6分区3副本100w 2K数据写入压测
| Kafka节点数 | 分区数 | 副本数 | 每条消息大小 | Acks |
| 6 | 6 | 3 | 2k | 1 |
| 6 | 6 | 3 | 2k | All |
./kafka-producer-perf-test --topic prd_pressure_test_6_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 acks=1
./kafka-producer-perf-test --topic prd_pressure_test_6_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 acks=all
| Kafka节点数 | 分区数 | 副本数 | 每条消息大小 | Acks |
| 6 | 8 | 3 | 2k | 1 |
| 6 | 8 | 3 | 2k | All |
2.2.2.4 8分区3副本100w 2K数据写入压测
./kafka-producer-perf-test --topic prd_pressure_test_8_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 acks=1
./kafka-producer-perf-test --topic prd_pressure_test_8_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 acks=all
2.3 生产环境producer压测结果
| Kafka节点数 | 分区数 | 副本数 | 每秒发送消息 | 消息大小 | 每条消息大小 | Acks |
| 6 | 3 | 3 | 150037.509377 records/sec | 293.04 MB/sec | 2k | 1 |
| 6 | 4 | 3 | 176584.849020 records/sec | 344.89 MB/sec | 2k | 1 |
| 6 | 6 | 3 | 176180.408739 records/sec | 344.10 MB/sec | 2k | 1 |
| 6 | 8 | 3 | 184604.024368 records/sec | 362.19 MB/sec | 2k | 1 |
| 6 | 3 | 3 | 54062.820998 records/sec | 105.59 MB/sec | 2k | All |
| 6 | 4 | 3 | 76202.087937 records/sec | 148.83 MB/sec | 2k | All |
| 6 | 6 | 3 | 121728.545344 records/sec | 237.75 MB/sec | 2k | All |
| 6 | 8 | 3 | 135924.969417 records/sec | 265.48 MB/sec | 2k | All |
2.4 生产环境consumer压测脚本
2.4.1 consumer压测脚本
2.4.1.1 3分区3副本1线程100w 2K数据读取压测
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 1 | 3 | 3 | 2k |
./kafka-consumer-perf-test --broker-list bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --topic prd_pressure_test_3_3partition --fetch-size 1 --messages 1000000 --threads 1
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 1 | 4 | 3 | 2k |
2.4.1.2 4分区3副本1线程100w 2K数据读取压测
./kafka-consumer-perf-test --broker-list bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --topic prd_pressure_test_4_3partition --fetch-size 1 --messages 1000000 --threads 1
2.4.1.3 6分区3副本1线程100w 2K数据读取压测
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 1 | 3 | 3 | 2k |
./kafka-consumer-perf-test --broker-list bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --topic prd_pressure_test_6_3partition --fetch-size 1 --messages 1000000 --threads 1
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 1 | 3 | 3 | 2k |
2.4.1.4 8分区3副本1线程100w 2K数据读取压测
./kafka-consumer-perf-test --broker-list bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --topic prd_pressure_test_8_3partition --fetch-size 1 --messages 1000000 --threads 1
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 1 | 3 | 3 | 2k |
2.4.1.5 3分区3副本3线程100w 2K数据读取压测
./kafka-consumer-perf-test --broker-list bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --topic prd_pressure_test_3_3partition --fetch-size 1 --messages 1000000 --threads 3
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 1 | 3 | 3 | 2k |
2.4.1.6 4分区3副本4线程100w 2K数据读取压测
./kafka-consumer-perf-test --broker-list bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --topic prd_pressure_test_4_3partition --fetch-size 1 --messages 1000000 --threads 4
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 1 | 3 | 3 | 2k |
2.4.1.7 6分区3副本6线程100w 2K数据读取压测
./kafka-consumer-perf-test --broker-list bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --topic prd_pressure_test_6_3partition --fetch-size 1 --messages 1000000 --threads 6
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 1 | 3 | 3 | 2k |
2.4.1.8 8分区3副本8线程100w 2K数据读取压测
./kafka-consumer-perf-test --broker-list bdkap01:9092,bdkap02:9092,bdkap03:9092,bdkap04:9092,bdkap05:9092,bdkap06:9092 --topic prd_pressure_test_8_3partition --fetch-size 1 --messages 1000000 --threads 8
2.5 生产环境consumer压测结果
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每秒发送消息 条/秒 | 消息大小 M/s | 每条消息大小 |
| 6 | 1 | 3 | 3 | 57336.1619 | 123.5295 | 2k |
| 6 | 1 | 4 | 3 | 63633.4712 | 124.2841 | 2k |
| 6 | 1 | 6 | 3 | 85390.4022 | 166.7781 | 2k |
| 6 | 1 | 8 | 3 | 83305.8147 | 162.7067 | 2k |
| 6 | 3 | 3 | 3 | 53688.3926 | 104.8601 | 2k |
| 6 | 4 | 4 | 3 | 65150.8242 | 127.2477 | 2k |
| 6 | 6 | 6 | 3 | 78499.0973 | 153.3185 | 2k |
| 6 | 8 | 8 | 3 | 84154.0857 | 164.3634 | 2k |
测试环境压测
3.1 测试环境集群配置
| Kafka版本 | 主机名 | CPU | 内存 | 磁盘 | 网卡 |
| 2.2.1 | bdlxq03 | 96 | 376.3 GiB | 36.2 TiB 机械 | 万兆 |
| 2.2.1 | bdlxq04 | 96 | 376.3 GiB | 36.2 TiB 机械 | 万兆 |
| 2.2.1 | bdlxq05 | 96 | 376.3 GiB | 36.2 TiB 机械 | 万兆 |
3.2测试环境producer压测脚本
创建TOPIC
创建3分区3副本TOPIC prd_pressure_test_3_3partition
./kafka-topics.sh --create --bootstrap-server bdlxq03:9092,bdlxq04:9092,bdlxq05:9092 --replication-factor 3 --partitions 3 --topic prd_pressure_test_3_3partition
3.2.1 producer压测脚本
| Kafka节点数 | 分区数 | 副本数 | 每条消息大小 | Acks |
| 6 | 3 | 3 | 2k | 1 |
| 6 | 3 | 3 | 2k | All |
3.2.1.1 3分区3副本100w 2K数据写入压测
./kafka-producer-perf-test --topic prd_pressure_test_3_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdlxq03:9092,bdlxq04:9092,bdlxq05:9092
./kafka-producer-perf-test --topic prd_pressure_test_3_3partition --record-size 2048 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=bdlxq03:9092,bdlxq04:9092,bdlxq05:9092 acks=all
| Kafka节点数 | 分区数 | 副本数 | 每秒发送消息 | 消息大小 | 每条消息大小 |
| 3 | 3 | 3 | 139508.928571 records/sec | 272.48 MB/sec | 2k |
| 3 | 3 | 3 | 52058.930710 records/sec | 101.68 MB/sec | 2k |
3.3测试环境producer压测结果
3.4测试环境consumer压测脚本
3.4.1 consumer压测脚本
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 1 | 3 | 3 | 2k |
3.4.1.1 3分区3副本1线程100w 2K数据读取压测
./kafka-consumer-perf-test --broker-list bdlxq03:9092,bdlxq04:9092,bdlxq05:9092 --topic prd_pressure_test_3_3partition --fetch-size 1 --messages 1000000 --threads 1
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每条消息大小 |
| 6 | 3 | 3 | 3 | 2k |
3.4.1.2 3分区3副本3线程100w 2K数据读取压测
afka-consumer-perf-test --broker-list bdlxq03:9092,bdlxq04:9092,bdlxq05:9092 --topic prd_pressure_test_3_3partition --fetch-size 1 --messages 1000000 --threads 3
3.5测试环境consumer压测结果
| Kafka节点数 | 线程数 | 分区数 | 副本数 | 每秒发送消息 条/秒 | 消息大小 M/s | 每条消息大小 |
| 6 | 1 | 3 | 3 | 53937.4326 | 105.3465 | 2k |
| 6 | 8 | 8 | 3 | 52659.2944 | 102.8502 | 2k |



