kafka性能centos如何测试
小樊
32
2025-11-20 00:18:09
在 CentOS 上对 Kafka 进行性能测试
一 环境准备与基线检查
部署并启动 Kafka 集群,确保网络、磁盘、JVM 参数合理;开放 JMX 端口 便于采集指标(如延迟、请求耗时等)。
创建用于压测的 Topic,合理设置 分区数 与 副本数 (副本会带来额外复制开销,更接近真实场景)。
基线检查(可选):用系统工具排除底层瓶颈,例如磁盘写速 dd、读速 hdparm;确认网络带宽与延迟满足预期。
示例创建 Topic(根据实际地址替换 bootstrap-server):
bin/kafka-topics.sh --create --topic perf_test --partitions 6 --replication-factor 3 --bootstrap-server 10.0.0.11:9092
以上步骤完成后即可进入脚本压测环节。
二 使用自带脚本进行压测
生产者压测
关键参数:
–topic:目标主题
–num-records:总记录数
–record-size:单条消息字节数
–throughput:限流阈值(-1 表示不限速)
–producer-props:客户端配置(如 bootstrap.servers)
示例:
bin/kafka-producer-perf-test.sh --topic perf_test --num-records 1000000 --record-size 1000 --throughput 50000 --producer-props bootstrap.servers=10.0.0.11:9092
输出关注:Records/sec、MB/sec、平均/最大/分位延迟(50th/95th/99th)。
消费者压测
关键参数:
–topic、–group、–messages、–threads
–fetch-size:单次拉取字节数
示例:
bin/kafka-consumer-perf-test.sh --bootstrap-server 10.0.0.11:9092 --topic perf_test --group perf_g1 --messages 1000000 --threads 10 --fetch-size 1048576
输出关注:消费速率(MB/sec、records/sec)、消费耗时等。
认证与安全(如启用 SASL/Kerberos)
使用 --producer.config/–consumer.config 指定客户端配置文件,例如:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka
sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab=“/path/keytab” principal=“kafka/host@REALM”;
以上命令与参数可直接在 CentOS 上执行,用于得到吞吐与延迟的核心指标。
三 结果判读与瓶颈定位
关键指标
吞吐:records/sec、MB/sec(越高越好)
延迟:avg、max、50th/95th/99th(越低越稳)
消费侧:消费速率与总耗时(是否可稳定跟上生产)
快速定位思路
若吞吐上不去且 CPU 空闲:多为网络或分区并发不足,尝试增加 Topic 分区数、提升客户端并发线程。
若延迟高且波动大:检查 ack 策略(acks=-1 吞吐低但可靠)、批量与 linger、压缩、副本同步情况。
若磁盘/网络 IO 打满:降低复制因子或批量大小,优化磁盘调度/挂载选项,或扩容带宽。
若消费明显落后:提高 --threads 与 --fetch-size,检查消费组再均衡与滞后(lag)。
示例输出解读(节选)
Records sent, 3424.657534 records/sec (3.34 MB/sec), 13.61 ms avg latency, 255.00 ms max latency, 13 ms 50th, 20 ms 95th, 255 ms 99th
含义:当前吞吐约 3.34 MB/s,平均延迟 13.61ms,99 分位 255ms,说明尾延迟偏高,可优先优化批量与压缩策略。
四 监控与可视化
Kafka Manager(CMAK):集群拓扑、主题/分区、消费者组、Broker 负载等可视化,适合日常管理+压测过程观测。
Kafka Eagle:侧重 offset、lag、partition 分布 等,便于发现消费滞后与不均衡。
Prometheus + Grafana + Kafka Exporter:以 Producer/Consumer 延迟、吞吐、请求耗时 等为核心指标,做长期监控与告警。
部署方式(示例):
CMAK:解压后配置 zk/hosts 与端口,后台启动并开放 9000 端口;
Kafka Eagle:配置 Zookeeper/Kafka 连接后启动;
Kafka Exporter:部署后对接 Prometheus,Grafana 导入 Kafka 仪表盘。
以上工具在 CentOS 上均可快速落地,用于压测期间与日常的可观测性建设。
五 可复用的压测方案与参数建议
方案设计
固定消息大小(如 100B/1KB/10KB ),分别测试不同 分区数(并发度) 与 副本数(可靠性) 的组合;
生产者:对比 acks=1 / all 、批量与 linger、压缩(none/gzip/snappy/lz4/zstd)、限流阈值(throughput=-1 与限速对比);
消费者:对比单/多消费者组、不同线程数与 fetch-size;
每轮测试至少 3 次取中位数 ,并记录环境参数与监控指标,便于复盘。
示例矩阵(可按需裁剪)
场景
分区数
副本数
消息大小
acks
压缩
目标
低延迟
6
3
100B
1
lz4
观察 P95/P99 延迟
高吞吐
12
3
1KB
1
snappy
观察 MB/sec 上限
高可靠
6
3
1KB
all
zstd
观察吞吐-可靠性权衡
常用参数提示
生产者:–throughput -1(先测上限),再逐步限速观察延迟拐点;
消费者:–fetch-size 增大可提升吞吐但会增加内存占用;
认证:启用 SASL/Kerberos 时务必使用 --producer.config/–consumer.config 传入安全配置。
以上方法覆盖脚本参数、认证、监控与对比测试的关键环节,可直接用于制定压测计划与复现实验。