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)
  • 总耗时

基本命令格式

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. 基础吞吐量测试(无限制发送)
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% 的消息延迟不超过该值)

注意事项

  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 主题读取消息的吞吐量、延迟等关键指标。

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

基本语法

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:实际拉取消息的时间(毫秒)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值