生产端压测测什么
kafka-producer-perf-test.sh 是 Kafka 自带的生产端压测工具,模拟指定大小与条数的消息写入,输出吞吐(records/sec、MB/sec)与延迟分位数。它的价值在于把「这台集群、这套配置能写多快」变成可测量的数据,用于容量规划、分区数估算与客户端参数调优。结论只有在压测配置与生产一致时才有参考意义。
基本信息
| 关键参数 | --num-records、--record-size、--throughput、--producer-props |
|---|---|
| 输出指标 | records/sec、MB/sec、平均与各分位延迟 |
| 建议做法 | 在专用主题上压测,客户端配置与生产保持一致 |
| 解读要点 | 吞吐看 MB/sec,延迟看 p99 而不是平均值 |
典型使用场景
- 容量规划:估算单分区与集群写入上限,反推所需分区数
- 参数调优对比:量化 acks、compression.type、batch.size、linger.ms 改动的效果
- 升级前后基线对比:客户端或 broker 版本升级后确认没有性能回退
- 故障复盘:确认故障期间写入能力的下降幅度
- 验收测试:新集群上线前跑一遍,确认达到设计指标
压测与收尾
压测与收尾
# 基础压测:100 万条 512 字节消息,不限速,acks=all 加 lz4 压缩
kafka-producer-perf-test.sh --topic perf-orders \
--num-records 1000000 --record-size 512 --throughput -1 \
--producer-props bootstrap.servers=kafka1:9092 acks=all compression.type=lz4
# 限速压测:控制在 10000 条/秒,观察稳定状态下的延迟
kafka-producer-perf-test.sh --topic perf-orders \
--num-records 500000 --record-size 1024 --throughput 10000 \
--producer-props bootstrap.servers=kafka1:9092 acks=1 linger.ms=20
# 压测结束后删除专用主题,避免残留数据长期占盘
kafka-topics.sh --bootstrap-server kafka1:9092 --delete --topic perf-orders输出指标读法
| 指标 | 含义 | 关注点 |
|---|---|---|
| records/sec | 每秒写入条数 | 与消息大小强相关,需同时看 MB/sec |
| MB/sec | 每秒写入数据量 | 容量规划的主要依据 |
| avg latency | 平均延迟 | 会被慢批次拉低,不能单独使用 |
| p50/p95/p99 | 延迟分位数 | p99 更能反映业务长尾体验 |
| max latency | 最大延迟 | 出现尖峰通常是 GC 或副本同步抖动 |
压测会真实写入数据并占用磁盘与网络带宽,应在低峰执行、控制记录数,结束后删除测试主题;在没有限速的情况下直接对生产集群全速压测,可能影响线上业务。
--throughput -1 表示不限速,以当前最快速度写入;更适合先用小记录数验证一次,再按需要放大规模,而不是上来就跑千万条。