centos kafka性能如何测试
小樊
34
2025-12-23 11:57:39
CentOS 上 Kafka 性能测试实操指南
一 工具与准备
- 使用 Kafka 自带基准工具:
- 生产者压测:kafka-producer-perf-test.sh
- 消费者压测:kafka-consumer-perf-test.sh
- 准备与检查:
- 已安装并启动 Kafka 集群(建议至少 3 Broker),客户端与 Broker 网络互通。
- 创建测试 Topic(示例):
bin/kafka-topics.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --create --topic test_topic_001 --partitions 6 --replication-factor 3
- 如需鉴权(SASL/Kerberos),准备客户端配置文件(如 kafka-client-properties.conf),并在命令中使用 –producer.config/–consumer.config 指定。
二 快速开始 生产者压测
- 关键参数说明:
- –topic:目标主题
- –num-records:发送总记录数
- –record-size:单条消息字节数
- –throughput:限流阈值,-1 表示不限速
- –producer-props:客户端连接等配置(如 bootstrap.servers)
- 常用性能开关:acks、batch.size、linger.ms、compression.type
- 示例命令(不限速,1KB 消息,acks=1,LZ4 压缩,适度批量与等待聚合):
/opt/kafka/bin/kafka-producer-perf-test.sh
–topic test_topic_001
–num-records 10000000
–record-size 1024
–throughput -1
–producer-props bootstrap.servers=broker1:9092,broker2:9092,broker3:9092
acks=1 batch.size=65536 linger.ms=10 compression.type=lz4
- 结果关注:
- 输出包含:records sent、records/sec、MB/sec、avg latency、max latency(以及分位延迟)。这些指标用于判断吞吐与延迟的权衡。
三 快速开始 消费者压测
- 关键参数说明:
- –bootstrap-server:Broker 列表
- –topic:目标主题
- –messages:消费总条数
- –threads:消费者线程数
- –print-metrics:打印客户端指标
- 示例命令(单线程,消费 1000 万条):
/opt/kafka/bin/kafka-consumer-perf-test.sh
–bootstrap-server broker1:9092,broker2:9092,broker3:9092
–topic test_topic_001
–messages 10000000
–threads 1
–print-metrics
- 结果关注:
- 输出包含:data.consumed.in.MB、MB.sec、data.consumed.in.nMsg、nMsg.sec、rebalance.time.ms、fetch.time.ms、fetch.MB.sec、fetch.nMsg.sec,用于评估消费吞吐、再均衡开销与抓取效率。
四 测试场景设计与可复现实验
- 分区与并发:固定消息大小与负载,逐步调整 Topic 分区数 与 Producer/Consumer 并发/线程数,观察吞吐是否随分区近似线性扩展,以及再均衡影响。
- 消息大小:在 100B–5000B 区间取样,验证“条数吞吐 vs MB 吞吐”的差异与最优区间。
- 生产者策略:对比 acks=0/1/all、batch.size、linger.ms、compression.type(none/snappy/lz4/gzip) 的组合,找到吞吐与持久性的平衡点。
- 消费者策略:对比 单线程 vs 多线程、不同 fetch 参数 与 自动/手动提交 对吞吐与滞后(Consumer Lag)的影响。
- 稳定性与极限:长时间运行(如 ≥1 小时)观察延迟分布、错误率、Broker I/O 与 GC 情况,逐步加压至目标上限。
五 监控指标与瓶颈定位
- 关键指标清单:
- 生产者:吞吐量(records/sec、MB/sec)、平均/最大/分位延迟、批处理率、压缩率
- 消费者:吞吐、再均衡时间、抓取耗时、处理时间、提交率、Consumer Lag
- Broker:请求处理率、请求队列、网络吞吐、磁盘 IOPS/带宽、日志段增长、GC 暂停
- 监控与诊断:
- 开启 JMX 并使用 JConsole/Kafka Manager 观察 Broker 与 Topic 级别指标,便于定位瓶颈(CPU、网络、磁盘、请求队列等)。
- 若使用 SASL/Kerberos,确保 –producer.config/–consumer.config 正确加载安全配置,避免认证失败干扰压测结果。