kafka 生产和消费 性能测试工具 kafka-producer-perf-test.sh kafka-consumer-perf-test.sh
目录
- kafka-producer-perf-test.sh
- 基本用途
- 基本命令格式
- 核心参数说明
- 常用测试场景
- 1. 基础吞吐量测试(无限制发送)
- 2. 固定速率测试(控制发送速度)
- 3. 不同可靠性配置测试
- 结果解读
- 注意事项
- kafka-consumer-perf-test.sh
- 基本语法
- 主要参数说明
- 示例
- 输出解释
kafka-producer-perf-test.sh
kafka-producer-perf-test.sh
是 Kafka 提供的官方生产者性能测试工具,用于评估向 Kafka 主题发送消息的性能表现。它可以帮助你测试生产者吞吐量、延迟等关键指标,优化生产者配置或评估集群写入能力。
基本用途
该工具通过模拟不同压力的消息生产场景,输出以下核心指标:
- 每秒发送消息数(records/sec)
- 每秒数据吞吐量(MB/sec)
- 平均延迟(ms)
- 95%/99% 分位延迟(ms)
- 总耗时
基本命令格式
bin/kafka-producer-perf-test.sh \--topic <测试主题> \--record-size <单条消息大小(字节)> \--num-records <总消息数量> \--throughput <每秒最大消息数(-1表示无限制)>--producer-props
核心参数说明
参数 | 作用 |
---|---|
--topic | 测试用的主题名(建议专用测试主题) |
--record-size | 单条消息的大小(字节) |
--num-records | 总共要发送的消息数量 |
--throughput | 每秒最多发送的消息数(-1 表示不限制,尽力发送) |
--producer-props | 生产者配置参数(如 acks=all 、linger.ms=5 bootstrap.servers 等) |
--print-metrics | 输出详细的性能指标 |
--transactional-id | 启用事务时的事务 ID(可选) |
常用测试场景
1. 基础吞吐量测试(无限制发送)
bin/kafka-producer-perf-test.sh \--topic perf-test-topic \--record-size 1024 \--num-records 1000000 \--throughput -1 \--producer-props bootstrap.servers=192.168.37.10:9092
- 测试发送 100 万条 1KB 消息的最大吞吐量
- 输出示例:
1000000 records sent, 125000.0 records/sec (122.07 MB/sec), 5.2 ms avg latency, 15.0 ms max latency. 50th percentile latency: 4 ms, 95th: 8 ms, 99th: 12 ms, 99.9th: 14 ms.
2. 固定速率测试(控制发送速度)
bin/kafka-producer-perf-test.sh \--topic perf-test-topic \--record-size 2048 \--num-records 500000 \--throughput 50000 \--producer-props bootstrap.servers=192.168.37.10:9092
- 测试以每秒 5 万条的速率发送 50 万条 2KB 消息的表现
3. 不同可靠性配置测试
# 高可靠性配置(acks=all)
bin/kafka-producer-perf-test.sh \--topic perf-test-topic \--record-size 1024 \--num-records 1000000 \--throughput -1 \--producer-props bootstrap.servers=192.168.37.10:9092 acks=all retries=3# 高性能配置(acks=1)
bin/kafka-producer-perf-test.sh \--topic perf-test-topic \--record-size 1024 \--num-records 1000000 \--throughput -1 \--producer-props bootstrap.servers=192.168.37.10:9092 acks=1 linger.ms=5
- 对比不同
acks
配置对性能的影响
结果解读
测试输出包含以下关键指标:
records/sec
:每秒发送消息数,核心吞吐量指标MB/sec
:每秒数据量,反映网络/磁盘负载avg latency
:平均延迟,消息从发送到确认的平均时间50th/95th/99th percentile latency
:延迟分位数,评估延迟分布情况(99% 的消息延迟不超过该值)
注意事项
- 测试前确保:
- 测试主题已创建,且分区数合理(通常建议分区数 ≥ broker 数)
- 集群资源充足(CPU、内存、磁盘 I/O 不成为瓶颈)
- 多次测试取平均值,减少偶然因素影响
- 通过调整
--producer-props
测试不同配置的影响:acks
:可靠性与性能的主要平衡点batch.size
和linger.ms
:批量发送优化参数compression.type
:压缩算法(如snappy
、lz4
)对性能的影响
- 结合消费者性能测试(
kafka-consumer-perf-test.sh
),全面评估端到端性能
kafka-consumer-perf-test.sh
kafka-consumer-perf-test.sh
是 Kafka 提供的一个性能测试工具,用于评估消费者的性能表现。它可以帮助你测试消费者从 Kafka 主题读取消息的吞吐量、延迟等关键指标。
以下是该工具的基本使用方法和常见参数说明:
基本语法
bin/kafka-consumer-perf-test.sh \--bootstrap-server <kafka-broker-list> \--topic <topic-name> \--group <consumer-group> \--messages <number-of-messages> \[其他可选参数]
主要参数说明
--bootstrap-server
:Kafka broker 地址列表(必需),格式如host1:port1,host2:port2
--topic
:要消费的主题名称(必需)--group
:消费者组名称(必需)--messages
:要消费的消息总数(必需)--fetch-size
:每次 fetch 请求的字节数,默认 1048576--threads
:用于消费的线程数,默认 1--timeout
:测试超时时间(毫秒),默认 300000--print-metrics
:打印详细的指标信息
示例
bin/kafka-consumer-perf-test.sh \--bootstrap-server localhost:9092 \--topic test-topic \--group perf-test-group \--messages 1000000
输出解释
执行后会得到类似以下的输出:
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
2023-10-01 10:00:00:000, 2023-10-01 10:00:10:123, 125.0, 12.35, 1000000, 98765.43, 100, 10023, 12.47, 99770.53
主要指标说明:
MB.sec
:每秒消费的兆字节数(吞吐量)nMsg.sec
:每秒消费的消息数rebalance.time.ms
:再平衡时间(毫秒)fetch.time.ms
:实际拉取消息的时间(毫秒)