kafka是一个大数据消息队列(可以看做为缓存软件)
功能测试:能够读写数据
性能测试:1、测试生产者每秒往kafka写入的最大吞吐量 2、测试消费者每秒从kafka里获取消息最大吞吐量
硬件
3台物理机组成的kafka集群。
内存121G、249G、121G
CPU都是超线程后40核
系统centos7.9
SAS硬盘 500g
看情况加
--command-config /usr/local/service/kafka/config/kafka-client-properties.conf
我是开了kerbers认证的
kafka-client-properties.conf文件内容如下
security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=hadoop
测试1、功能测试,创建一个topic能够往里面写
#创建topic
bin/kafka-topics.sh --bootstrap-server ${brokerIP}:9092 --create --topic test_topic_001 --partitions 5 --replication-factor 2 --command-config /usr/local/service/kafka/config/kafka-client-properties.conf
生产数据到kafka
bin/kafka-console-producer.sh --topic test_topic_001 --bootstrap-server ${brokerIP}:9092 --producer.config /usr/local/service/kafka/config/kafka-client-properties.conf
bin/kafka-console-consumer.sh --topic test_topic_001 --from-beginning --bootstrap-server ${brokerIP}:9092 --consumer.config /usr/local/service/kafka/config/kafka-client-properties.conf
消费者获取kafka数据
功能测试结束
测试2 ,生产者性能测试
先学习下参数
./kafka-producer-perf-test.sh
--topic 指定topic
--num-records 指定生产数据量
--throughput 指定吞吐量 -1为不限定吞吐量
--record-size record数据大小(单位字节数)
--producer-props key=value 指定producer配置
10个分区,3个副本(副本会影响Io和网络延迟,但是模拟实际环境)每条300字节数据,5000万条数据量。
新建topic
/usr/local/service/kafka/bin/kafka-topics.sh --create --topic kindom_test --partitions 10 --replication-factor 3 --bootstrap-server xxx1:9092,xxx2:9092,xxx3:9092 --command-config /usr/local/service/kafka/config/kafka-client-properties.conf
生产数据
bin/kafka-producer-perf-test.sh --topic kindom_test --num-records 50000000 --throughput -1 --record-size 300 --producer-props bootstrap.servers=xxx1:9092,xxx2:9092,xxx3:9092 acks=1 --producer.config /usr/local/service/kafka/config/kafka-client-properties.conf
50000000 records sent, 645103.022953 records/sec (184.57 MB/sec), 149.40 ms avg latency, 969.00 ms max latency, 5 ms 50th, 607 ms 95th, 750 ms 99th, 853 ms 99.9th.
Kafka写入吞吐量
约64万条/秒
平均速率184MB/秒
测试3,消费者性能测试
学习下参数
--broker-list:kafka-broker列表
--topic:指定topic
--fetch-size:指定每次fetch的数据大小(字节数)
--messages:总共要消费的消息数
--threads:线程数
单线程测试,消费5000万数据
bin/kafka-consumer-perf-test.sh --topic kindom_test --threads 1 --messages 50000000 --broker-list xxx1:9092,xxx2:9092,xxx3:9092 --consumer.config /usr/local/service/kafka/config/kafka-client-properties.conf
start.time, end.time, data.consumed.in.MB, MB.sec , data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
2025-01-08 17:08:31:958, 2025-01-08 17:09:03:884, 14305.1147, 448.0710 , 50000000, 1566121.6563, 441, 31485, 454.3470, 1588057.8053
消费吞吐量 448mb/s
每秒消费156万条
学习下参数
data.consumed.in.MB:总消费大小(MB)
MB.sec:平均每秒消费(MB/s)
data.consumed.in.nMsg:总消费条数(条)
nMsg.sec:平均每秒消费(条)
rebalance.time.ms:再平衡时间(ms)
fetch.time.ms:fetch平均时间(ms)
fetch.MB.sec:fatch平均大小(MB/s)
fetch.nMsg.sec:fatch平均条数(条)
参考: