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:实际拉取消息的时间(毫秒)
相关推荐
indexsunny4 小时前
互联网大厂Java面试实战:从Spring Boot到微服务架构的深度解析
java·spring boot·spring cloud·kafka·prometheus·security·microservices
若水不如远方5 小时前
分布式一致性(六):拥抱可用性 —— 最终一致性与 Gossip 协议
分布式·后端·算法
shughui6 小时前
Fiddler下载、安装、使用、汉化,详细图文教程(2026附安装包)
前端·测试工具·fiddler
睡醒的土豆8 小时前
解决 Kafka 管理工具中文乱码问题
分布式·kafka
SuniaWang11 小时前
《Spring AI + 大模型全栈实战》学习手册系列· 专题二:《Milvus 向量数据库:从零开始搭建 RAG 系统的核心组件》
java·人工智能·分布式·后端·spring·架构·typescript
Hui Baby11 小时前
TIDB分布式数据库提交设想
数据库·分布式·tidb
⑩-11 小时前
RabbitMQ 架构和工作原理?RabbitMQ 延迟队列如何实现?
java·分布式·架构·rabbitmq
国冶机电安装12 小时前
分布式控制系统(DCS)安装:从方案设计到投运验收的完整指南
分布式
飞Link12 小时前
告别 ROS 的臃肿:用 ZeroMQ 构建极速具身智能分布式大脑(附 Python 实战)
开发语言·分布式·python
殷紫川13 小时前
击穿 Kafka 高可用核心:分区副本、ISR 机制与底层原理全链路拆解
架构·kafka