关于kafka压力测试(使用官方自带脚本测试)

这篇具有很好参考价值的文章主要介绍了关于kafka压力测试(使用官方自带脚本测试)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

kafka官方自带压测脚本文件

在kakfa的bin目录下有很多脚本,其中有两个脚本是kafka官方自带的压力测试脚本。用来测试kafka在生产和消费中,有哪些瓶颈来限制了工作效率。

kafka-consumer-perf-test.sh
kafka-producer-perf-test.sh

Producer生产者环境测试

测试命令

bin/kafka-producer-perf-test.sh  --topic test --record-size 100 --num-records
 100000 --throughput -1 --producer-props bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092

各个参数解释

record-size 是一条信息有多大,单位是字节。
num-records 是总共发送多少条信息。
throughput 是每秒多少条信息,设成-1,表示不限流,可测出生产者最大吞吐量。

返回测试结果

100000 records sent, 95877.277085 records/sec (9.14 MB/sec), 187.68 ms avg latency, 424.00 ms max 
latency, 155 ms 50th, 411 ms 95th, 423 ms 99th, 424 ms 99.9th.

返回结果说明

一共写入10w条消息
吞吐量为9.14 MB/sec
每次写入的平均延迟为187.68毫秒
最大的延迟为424.00毫秒。

Consumer消费者环境测试

测试命令

bin/kafka-consumer-perf-test.sh --broker-list hadoop102:9092,hadoop103:9092,
hadoop104:9092 --topic test --fetch-size 10000 --messages 10000000  --threads 1

各个参数解析

fetch-size 指定每次fetch的数据的大小
messages 总共要消费的消息个数
threads 开启的线程数

测试结果说明

start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec
2019-02-19 20:29:07:566, 2019-02-19 20:29:12:170, 9.5368, 2.0714, 100010, 21722.4153

共消费数据9.5368MB
吞吐量2.0714MB/s
共消费100010条
平均每秒消费21722.4153条

提升kafka的吞吐量

可通过以下的方式来提升kafka生产者的吞吐量

buffer.memory

该参数用来设置生产者内存缓冲区的大小,生产者用它缓冲要发送到服务器的消息。
如果应用程序发送消息的速度超过发送到服务器的速度,会导致生产者空间不足。
这个时候 send() 方法调用要么被阻塞,要么抛出异常,取决于如何设置 block.on.buffer.full 参数(在 0.9.0.0 版本里被替换成了 max.block.ms ,表示在抛出异常之前可以阻塞一段时间)。
设置发送消息的缓冲区,默认值是33554432,就是32MB
如果发送消息出去的速度小于写入消息进去的速度,就会导致缓冲区写满,此时生产消息就会阻塞住,所以说这里就应该多做一些压测,尽可能保证说这块缓冲区不会被写满导致生产行为被阻塞住

compression.type

默认情况下,消息发送时不会被压缩。
该参数可以设置为 snappy 、 gzp 或 1z4 ,它指定了消息被发送给 broker 之前使用哪一种压缩算法进行压缩。
snappy 压缩算法由 Google 发明,它占用较少的 CPU ,却能提供较好的性能和相当可观的压缩比,如果比较关注性能和网络带宽,可以使用这种算法。
gzip 压缩算法一般会占用较多的 CPU ,但会提供更高的压缩比,所以如果网络带宽比较有限,可以使用这种算法。
使用压缩可以降低网络传输开销和存储开销,而这往往是向 Kafka 发送消息的瓶颈所在。
默认是none,不压缩,但是也可以使用lz4压缩,效率还是不错的,压缩之后可以减小数据量,提升吞吐量,但是会加大producer端的cpu开销。

batch.size

当有多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里。
该参数指定了一个批次可以使用的内存大小,按照字节数计算(而不是消息个数)。
当批次被填满,批次里的所有消息会被发送出去。
不过生产者并不一定都会等到批次被填满才发送,半满的批次,甚至只包含一个消息的批次也有可能被发送。
所以就算把批次大小设置得很大也不会造成延退,只是会占用更多的内存而已。
但如果设置得太小,因为生产者需要更频繁地发送消息,会增加一些额外的开销。
设置merge batch的大小,如果 batch 太小,会导致频繁网络请求,吞吐量下降;
如果batch太大,会导致一条消息需要等待很久才能被发送出去,而且会让内存缓冲区有很大压力,过多数据缓冲在内存里
默认值是:16384,就是16kb,也就是一个batch满了16kb就发送出去,一般在实际生产环境,这个batch的值可以增大一些来提升吞吐量,可以自己压测一下。

linger.ms

该参数指定了生产者在发送批次之前等待更多消息加入批次的时间。
KafkaProducer 会在批次填满或 linger.ms 达到上限时把批次发送出去。
默认情况下,只要有可用的线程,生产者就会把消息发送出去,就算批次里只有一个消息。
把 linger.ms 设置成比0大的数,让生产者在发送批次之前等待一会儿,使更多的消息加入到这个批次。
虽然这样会增加延退,但也会提升吞吐量(因为一次性发送更多的消息,每个消息的开销就变小了)。
这个值默认是0,意思就是消息必须立即被发送,但是这是不对的。
一般设置一个100毫秒之类的,这样的话就是说,这个消息被发送出去后进入一个batch,如果100毫秒内,这个batch满了16kb,自然就会发送出去。
但是如果100毫秒内,batch没满,那么也必须把消息发送出去了,不能让消息的发送延迟时间太长,也避免给内存造成过大的一个压力。

来源: https://juejin.cn/post/6997321470594514980

可以通过以下方法提高消费效率

增加CPU 内存的数量,启用更多的消费组,设置更多region文章来源地址https://www.toymoban.com/news/detail-680287.html

到了这里,关于关于kafka压力测试(使用官方自带脚本测试)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • APP性能测试Monkey随机压力测试(android手机压测)

    App本身性能数据获取(cpu 内存 帧率 启动时间 流量 电量) Monkey随机压力测试(android手机压测) Android SDK,即Android Software Development Kit,是android的软件开发工具包. 它提供了在Windows/Linux/Mac平台上开发Android应用的开发组件。包含了在Android平台上开发移动应用程序的各种工具集。 使用

    2024年02月03日
    浏览(36)
  • 【压测指南|压力测试核心性能指标及行业标准】

    在做压力测试时,新手测试人员常常在看报告时倍感压力:这么多性能测试指标分别是什么意思,应该达到什么标准? 本文将结合实际压测报告,帮助您快速理解压测时的主要性能指标,了解如何解读该指标以及通常情况下应该达到的标准。 性能测试过程是模拟用户真实视

    2024年02月15日
    浏览(38)
  • Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET 版本

    上次发布了:Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET Core 版本 今天计划准备压测一下 .NET 版本,来测试并记录一下 Taurus.MVC 框架在 .NET 版本的性能,以便后续持续优化改进。 为了方便对比,本文章的电脑环境和测试思路,尽量和上文保持一致,以便方便对

    2024年04月16日
    浏览(40)
  • Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET Core 版本

    最近的 Taurus.MVC 版本,对性能这一块有了不少优化,因此准备进行一下压测,来测试并记录一下 Taurus.MVC 框架的性能,以便后续持续优化改进。 今天先压测 .NET Core 版本,后续有时间再压测一下.NET 版本。 下面来看不同场景下的压测结果,以下测试结果会由两台电脑进行分

    2024年04月10日
    浏览(33)
  • Apache自带压力测试工具—ab

    ab全称为:apache bench 我们先来了解一下压力测试的概念: 吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。 计算公式:

    2024年01月16日
    浏览(33)
  • 优测云服务平台|【压力测试功能升级】轻松完成压测任务

    1.多份报告对比查看测试结果 2.报告新增多种下载格式 Word格式 Excel格式 3.新增多种编排复杂场景的控制器 漏斗控制器 并行控制器 事务控制器 仅一次控制器 分组控制器 集合点 4.新增概览页面,包含多种统计维度 针对同一个压测场景,历史报告列表页可查看所有报告的对比

    2024年02月12日
    浏览(61)
  • Jmeter验证码图片识别注册接口压力测试实战_压测时,登录需要传图形验证码

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月22日
    浏览(42)
  • 手机多模块反复重启压力测试脚本

    双击main.py即可运行。如果有什么异常,窗口一闪而逝,可在cmd窗口下,输入main.py后回车,可以查看输出打印来debug template_lcd.py 是写重启和查看节点的逻辑 main.py是对template_lcd.py的封装(也能封装bat脚本),它能通过adb   devices命令的输出来自动检测手机数量,将template_lcd.p

    2024年03月16日
    浏览(38)
  • 【运维知识大神篇】超详细的ELFK日志分析教程10(kafka集群原理+基本使用+zookeeper和kafka堆内存调优+kafka监控和压力测试+filebeat和logstash对接kafka)

    本篇文章继续给大家介绍ELFK日志分析,我们先前介绍了ELFK架构,zookeeper部署使用,kafka的部署,仅差kafka使用就将整个体系融汇贯通了。我们本篇文章将以kafka为核心,详细介绍kafka使用,最终将kafka融入ELFK架构中,大致内容见下面目录。 目录 kafka集群原理 一、专业术语 二、

    2024年02月04日
    浏览(50)
  • 【Kafka-3.x-教程】-【七】Kafka 生产调优、Kafka 压力测试

    【Kafka-3.x-教程】专栏: 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五】Kafka-监控-Eagle 【Kafka-3.x-教程】-【六】Kafka 外

    2024年01月25日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包