当前位置: 首页 > news >正文

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=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:实际拉取消息的时间(毫秒)
http://www.dtcms.com/a/290725.html

相关文章:

  • kafka 生产消息和消费消息 kafka-console-producer.sh kafka-console-consumer.sh
  • Python 进阶(六): Word 基本操作
  • ROS 与 Ubuntu 版本的对应关系
  • 初学者STM32—USART
  • 了解类加载器吗?类加载器的类型有哪些?
  • Java 大视界 -- 基于 Java 的大数据分布式计算在地球物理勘探数据处理与地质结构建模中的应用(356)
  • 鹏鼎控股入职测评综合能力真题SHL测评题库2025年攻略
  • postgresql16.4 配置 数据库主从
  • PyTorch 实现 CIFAR-10 图像分类:从数据预处理到模型训练与评估
  • git bash命令不够完善,想整合msys2该怎么办?
  • 02-UE5蓝图初始的三个节点作用
  • 文娱投资的逆势突破:博派资本的文化旅游综合体战略
  • 阿里云宝塔Linux面板相关操作记录
  • 照片to谷歌地球/奥维地图新增功能:导出 GeoJSON 数据
  • 高级技术【Java】【反射】【注解】【动态代理】
  • c++:父类的析构函数定义为纯虚函数注意事项
  • “专属私有云”或“行业公有云(逻辑隔离的公共云专区)”两种主流部署模式到底有什么区别?政务云不就应该是专属的私有云么?政务云是不是不能混用?
  • 网络编程基础:从 OSI 模型到 TCP/IP 协议族的全面解析
  • 【AI高性能网络解析】第三期:数据快递,海量数据跨广域高效传输技术实践
  • 计算机网络:概述层---计算机网络的组成和功能
  • harbor镜像仓库由原来的v2.11.1版本升级到v2.13.1,数据不丢失
  • Taro 生命周期相关 API 详解
  • HTML整理
  • Lists的分批次操作
  • 安卓第一个项目
  • 信息学奥赛一本通 1576:【例 2】选课 | 洛谷 P2014 [CTSC1997] 选课
  • Netty中CompositeByteBuf的使用
  • 位标志法处理多选字段在数据库中的存储方式 查询效率与扩展性之间的权衡
  • https正向代理 GoProxy
  • 苹果最新系统iOS 17的调试和适配方法 - Xcode 14.3.1 真机调试指南