kafka 生产和消费 性能测试工具 kafka-producer-perf-test.sh 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)
  • 总耗时

基本命令格式

bash 复制代码
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=alllinger.ms=5 bootstrap.servers 等)
--print-metrics 输出详细的性能指标
--transactional-id 启用事务时的事务 ID(可选)

常用测试场景

1. 基础吞吐量测试(无限制发送)
bash 复制代码
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. 固定速率测试(控制发送速度)
bash 复制代码
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. 不同可靠性配置测试
bash 复制代码
# 高可靠性配置(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% 的消息延迟不超过该值)

注意事项

  1. 测试前确保:
    • 测试主题已创建,且分区数合理(通常建议分区数 ≥ broker 数)
    • 集群资源充足(CPU、内存、磁盘 I/O 不成为瓶颈)
  2. 多次测试取平均值,减少偶然因素影响
  3. 通过调整 --producer-props 测试不同配置的影响:
    • acks:可靠性与性能的主要平衡点
    • batch.sizelinger.ms:批量发送优化参数
    • compression.type:压缩算法(如 snappylz4)对性能的影响
  4. 结合消费者性能测试(kafka-consumer-perf-test.sh),全面评估端到端性能

kafka-consumer-perf-test.sh

kafka-consumer-perf-test.sh 是 Kafka 提供的一个性能测试工具,用于评估消费者的性能表现。它可以帮助你测试消费者从 Kafka 主题读取消息的吞吐量、延迟等关键指标。

以下是该工具的基本使用方法和常见参数说明:

基本语法

bash 复制代码
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:打印详细的指标信息

示例

bash 复制代码
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:实际拉取消息的时间(毫秒)
相关推荐
GIS数据转换器5 小时前
农村生活污水治理智慧管控平台
大数据·人工智能·分布式·数据分析·生活·智慧城市
Trouvaille ~7 小时前
【Redis篇】初识 Redis:特性、应用场景与版本演进
数据结构·数据库·redis·分布式·缓存·中间件·持久化
米高梅狮子8 小时前
Ceph 分布式存储 部署
linux·运维·数据库·分布式·ceph·docker·华为云
郭龙_Jack8 小时前
跨境电商 平台 - ERP - 内部子系统 交互方式总图
分布式·教育电商
喝醉酒的小白9 小时前
Kafka 集群应急故障排查手册
分布式·kafka
无籽西瓜a9 小时前
【西瓜带你学Kafka | 第八期】 Kafka的主从同步、消息可靠性、流处理与顺序消费(文含图解)
java·分布式·后端·kafka·消息队列·mq
qqVHU9 小时前
kafka笔记
笔记·分布式·kafka
醉颜凉9 小时前
Kafka 消息过期时间设置与清理机制全解析
分布式·kafka·linq
Jinkxs9 小时前
SkyWalking - Kafka _ RabbitMQ 消息链路追踪支持
kafka·rabbitmq·skywalking
犬小哈9 小时前
滴滴二面:你项目为什么选择 RocketMQ,而不是 Kafka? 我:支支吾吾....
分布式·kafka·rocketmq