本文旨在说明测试kafka的时候要考虑的“要点”。
集群配置
- 3个Node 3个节点;
- cpu: 40c
- memory: 256G
- 带宽: 4G
JVM配置
-Xmx30G -Xms30G -XX:MaxPermSize=48m -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35
通过以下命令查看创建的topic信息
./bin/kafka-topics.sh --describe --zookeeper 10.114.24.233:2181,10.114.24.234:2181,10.114.24.235:2181/kafka --topic yx
关键因素如下:
使用官方提供的测试工具kafka-producer-perf-test.sh来测试。
kafka-producer-perf-test.sh中参数说明:
参数 |
说明 |
messages |
生产者发送总的消息数量 |
message-size |
每条消息大小 |
batch-size |
每次批量发送消息的数量 |
topics |
生产者发送的topic |
threads |
生产者使用几个线程同时发送 |
broker-list |
安装kafka服务的机器ip:port列表 |
producer-num-retries |
一个消息失败发送重试次数 |
request-timeout-ms |
一个消息请求发送超时时间 |
Producer测试
1 ,线程数(threads)
测试脚本
创建一个topic,设置1个副本2个分区。
./bin/kafka-topics.sh --create --zookeeper 10.114.24.233:2181,10.114.24.234:2181,10.114.24.235:2181/kafka --topic yx0 --replication-factor 1 --partitions 2
用不同的线程向topic中发送相同数量的消息,查看性能变化。
./bin/kafka-producer-perf-test.sh --broker-list 10.114.24.226:9092,10.114.24.232:9092 --topics yx0 --messages 1000000 --message-size 4096 --batch-size 10 --threads 1 --hide-header
./bin/kafka-producer-perf-test.sh --broker-list 10.114.24.226:9092,10.114.24.232:9092 --topics yx0 --messages 1000000 --threads 1
./bin/kafka-producer-perf-test.sh --broker-list 10.114.24.226:9092,10.114.24.232:9092 --topics yx0 --messages 1000000 --threads 5
./bin/kafka-producer-perf-test.sh --broker-list 10.114.24.226:9092,10.114.24.232:9092 --topics yx0 --messages 1000000 --threads 10
测试结果
threads 线程数 | partitions 分区数 | replication-factor 副本数 | MB/S | nMsg/S 每秒发送消息 |
---|---|---|---|---|
1 | 2 | 1 | 81 | 20939 |
5 | 2 | 1 | 172 | 44 |