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=all、linger.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.size 和 linger.ms:批量发送优化参数
    • compression.type:压缩算法(如 snappy、lz4)对性能的影响
  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:实际拉取消息的时间(毫秒)
相关推荐
此时不提桶,更待何时16 小时前
06-23-A-RabbitMQ生态集成详解
分布式·rabbitmq
雪雪爱冲浪17 小时前
2026 年网络爬虫领域的Puppeteer vs. Playwright
爬虫·网络协议·测试工具·接口隔离原则
m0_6464299721 小时前
RabbitMQ 核心知识总结(生产实战版)
分布式·rabbitmq
DBA_G1 天前
GBase 8c分布式数据库客户端工具 gsql
数据库·分布式
chunyublog1 天前
Spark 词频统计练习
大数据·分布式·spark
ClouGence1 天前
开源数据库管理工具 CloudDM 4.4.0 发布,新增 Kafka、SAP HANA 数据源
数据库·kafka
acrel71 天前
高速公路分布式光伏并网电能质量与安全保护方案应用
分布式·安全
RobinXYuan1 天前
【Kafka 源码手记】01 从消息队列到 Event Streaming
kafka·源码阅读
IT小小猪1 天前
# Hadoop 3.3.6 完全分布式集群部署知识库
hadoop·分布式·eclipse
此时不提桶,更待何时1 天前
06-24-B-RabbitMQ面试与生产事故实战
分布式·面试·rabbitmq