运维必看!Kafka集群性能压测保姆级教程(建议收藏)

做运维的都懂,小型公司里没有专门的测试工程师,很多“额外活”都得自己做。

其中,Kafka几乎是一个绕不开的消息中间件,它的性能直接决定了整个业务的稳定性,一旦出现吞吐不足、延迟过高,背锅的还是运维。今天就手把手教各位运维同学,从零开始完成Kafka集群压测,不用测试功底,跟着做就能出结果、找瓶颈、做优化!

测试工具与环境说明

本次性能压测使用官方自带工具kafka-producer-perf-test.sh

除了kafka-producer-perf-test.sh工具,我们还需要部署一个kafkamanger,用来监控kafka的吞吐流量

还需要使用Linux网络带宽监控工具 sar来监控网络带宽情况

sar -n DEV 2

写入性能压测

测试配置:

• 生产者数量:分别为10、15、20、25、30个• 测试命令:

nohup kafka/bin/kafka-producer-perf-test.sh --topic test4 --num-records 100000000 --record-size 1000 --throughput 200000 --producer-props bootstrap.servers=node49:9092,node51:9092,node52:9092,node53:9092,node54:9092,node55:9092,node57:9092,node58:9092 --producer.config ./producer.properties &    

• 配置文件:producer.properties

compression.type=lz4
request.timeout.ms=10000
linger.ms=25
max.request.size=5242880
retries=0
batch.size=524288
buffer.memory=134217728
acks=1

各生产者数量测试结果

10个生产者

流量占用情况:

图片

带宽:57835KB ≈ 56.5MB ≈ 451.6Mb/s

生产者吞吐:

图片

吞吐率:169万条/秒

15个生产者

流量占用情况:

图片

带宽:79678KB ≈ 77.8MB ≈ 622Mb/s

生产者吞吐:

图片

吞吐率:265万条/秒

20个生产者

流量占用情况:

图片

带宽:109494KB ≈ 106.9MB ≈ 855Mb/s

生产者吞吐:

图片

吞吐率:366万条/秒

25个生产者

流量占用情况:

图片

带宽:118917KB ≈ 116MB ≈ 929Mb/s

生产者吞吐:

图片

吞吐率:410万条/秒

30个生产者

流量占用情况:

图片

带宽:111780KB ≈ 109MB ≈ 872Mb/s

生产者吞吐:

图片

吞吐率:399万条/秒

此时网络带宽已达上限,继续增加生产者会导致延迟上升、吞吐降低。

结论:千兆网卡客户端网络流量达到上限,Kafka集群生产吞吐峰值为 410万条/秒

消费性能压测

测试配置:

• 生产者数量:分别为5、10、15、20个• 测试命令:

nohup kafka/bin/kafka-consumer-perf-test.sh --broker-list node49:9092,node51:9092,node52:9092,node53:9092,node54:9092,node55:9092,node57:9092,node58:9092 --topic test4  --messages 100000000 --threads 400000 --consumer.config ./consumer.properties --group=test10 &      

• 配置文件:consumer.properties

group.id=test-consumer-group
fetch.min.bytes=6553600
fetch.max.wait.ms=1000
auto.commit.interval.ms=1000
auto.offset.reset=earliest
enable.auto.commit=true
max.poll.interval.ms=600000

各消费者数量测试结果

5个消费者

流量占用情况:

图片

带宽:67457KB ≈ 65MB ≈ 520Mb/s

执行结果:

• 共消费数据大小:476837.158MB• 每秒消费数据大小:1854.7501MB• 总共消费条数:5亿条• 每秒消费条数:1944846条

10个消费者

流量占用情况:

图片

带宽:120490KB ≈ 118MB ≈ 944Mb/s

执行结果:

• 共消费数据大小:953678.789MB• 每秒消费数据大小:4107.8406MB• 总共消费条数:10亿条• 每秒消费条数:4307383条

15个消费者

流量占用情况:

图片

带宽:120470KB ≈ 118MB ≈ 944Mb/s

执行结果:

• 共消费数据大小:1430516.538MB• 每秒消费数据大小:4216.4496MB• 总共消费条数:15亿条• 每秒消费条数:4421268条

20个消费者

流量占用情况:

图片

带宽:120484KB ≈ 118MB ≈ 944Mb/s

执行结果:

• 共消费数据大小:1907356.644MB• 每秒消费数据大小:4271MB• 总共消费条数:20亿条• 每秒消费条数:4478387条

结论:千兆网卡客户端网络流量达到上限,Kafka集群消费吞吐峰值为 445万条/秒

压测后如何定位瓶颈?

压测的核心不是出数据,而是通过数据找瓶颈——很多运维同学压测出峰值后,不知道怎么判断哪里出了问题,这里结合我们的实测案例,教你1分钟定位瓶颈。

本文案例的结果:当集群吞吐量接近峰值(生产410万条/秒、消费445万条/秒)时,系统出现轻微延迟,排查后发现是千兆网卡成为核心瓶颈。

排查方法:压测时,用iftopsar等命令监控网卡带宽,发现网卡带宽被完全占满(接近100%),此时消息传输受阻,无法继续提升吞吐速度。

关键总结:运维排查压测瓶颈,优先监控3个指标——网卡带宽、CPU使用率、内存使用率,其中网卡是Kafka压测中最常见的瓶颈(尤其是高吞吐场景)。

总结

运维做Kafka压测,核心是“简单、落地、有用”。对小型公司运维来说,Kafka压测不用追求专业测试的复杂流程,核心是掌握“准备-实操-排查-优化”这4步,用自带工具、简单命令,就能完成压测,提前规避业务风险。

记住:Kafka是运维绕不开的组件,掌握压测技能,既能搞定日常运维难题,也能提升自身竞争力。后续大家在压测中遇到问题(比如命令执行报错、瓶颈排查无果),可以留言交流,一起避坑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值