Kafka是一种分布式,分区,复制的提交日志服务。它提供了消息传递系统的功能。

 

我们先来看看它的消息传递术语:

  • Kafka在称为主题的类别中维护消息的提要。
  • 我们将调用向Kafka主题生成器发布消息的进程。
  • 我们将调用订阅主题的流程并处理已发布消息的消费者
  • Kafka作为由一个或多个服务器组成的集群运行,每个服务器称为代理

因此,在高层次上,生产者通过网络向Kafka集群发送消息,而Kafka集群又向消费者提供这样的服务:

 

有关Apache Kafka的更多信息,请参阅以下链接:
Kafka文档

因此,为了对Kafka进行性能测试或基准测试,我们需要考虑两个方面:

  1. Producer End的表现
  2. 消费者端的表现

我们需要为ProducerConsumer执行此测试,以便我们可以确保Producer可以生成多少消息,而Consumer可以在给定时间内消耗这些消息。对于大量消息,我们也可以确保数据丢失。

此测试的主要目的是找出以下统计信息:
1。数据大小的
吞吐量(消息/秒)2。消息数量的吞吐量(消息/秒)
3。总数据
4.消息总数

让我们继续下载并设置Kafka,请点击这里

完成后,您可以继续执行性能统计,按照下面提到的步骤执行此操作:

1.启动一个新的终端窗口
2.将目录设置为Kafka / bin 
3.在这里您可以找到多个shell脚本,我们将使用以下内容来获取性能统计信息:

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

如果要查看有关shell脚本(perf工具)的帮助,只需键入即可

sh ./kafka-producer-perf-test.sh --help
or
sh ./kafka-consumer-perf-test.sh --help

分别为制片人和消费者。

Producer End的表现

在控制台上键入以下命令,然后按Enter键:

sh ./kafka-producer-perf-test.sh --broker-list localhost:9092 --topic test --messages 100

让我们一个一个地理解这些命令行选项..

  • 第一个参数是“broker-list”,在这里我们需要提到代理信息,它是代理的主机和引导程序的端口列表,这是必需的参数。
  • 第二个参数是“topic”,这个参数还需要参数并显示我们之前讨论过的消息类别。
  • 第三个显示您要生成和发送的消息数量,我们将第一个场景设置为100。

一旦测试完成,一些统计数据将打印在控制台上,如:

start.time:2016-02-03 21:38:28:094 
end.time:2016-02-03 21:38:28:449
compression:0
message.size:100
batch.size:200
total.data.sent .in.MB:0.01
MB.sec:0.0269
total.data.sent.in.nMsg:100
nMsg.sec:281.6901
  1. start.time,end.time将显示测试何时开始并完成。
  2. 如果Compression为'0',则表示消息压缩已关闭(默认)。
  3. 信息。size显示每条消息的大小。
  4. batch.size表示一批中将发送的消息数,默认情况下设置为200。
  5. total.data.sent.in.MB显示以MB为单位发送到集群的总数据。
  6. MB.sec表示每秒以MB为单位传输的数据量(吞吐量大小)。
  7. total.data.sent.in.nMsg将显示在此测试期间发送的总消息数。
  8. 最后nMsg.sec显示一秒内发送的消息数(消息计数的吞吐量)。

在进行此性能测试时,您可以使用更多参数,例如;

  • csv-reporter-enabled:如果设置,将启用CSV指标报告器
  • initial-message-id:用于生成测试数据,如果设置,消息将使用ID标记,并由生产者从此ID开始按顺序发送。消息内容将是字符串类型,并以“消息:000 ... 1:abc ...”的形式,使用此参数,您将能够看到消费者正在消费的消息。
  • message-size:它表示每条消息的大小,当你想用一些大的消息加载测试Kafka时,它会很有用。
  • vary-message-size:如果设置,则消息大小将根据给定的最大值而变化。

还有一些其他选项可以在Producer性能测试期间根据需要使用。

对于这个博客,我根据消息的数量获取了一些性能数据,并通过图形内联显示了性能。

消费者端的表现

现在让我们看一下如何在消费者端获取性能统计数据,输入以下命令并按Enter键。

sh ./kafka-consumer-perf-test.sh --topic test --zookeeper localhost:2181

让我们理解它的命令行选项,

  • 第一个参数是“topic”,这个参数还需要参数并显示消息类别。
  • 第二个参数是“zookeeper”,这个参数还需要参数,并以host:port的形式显示zookeeper连接的连接字符串。

一旦测试完成,一些统计数据将打印在控制台上,如:

start.time:2016-02-04 11:29:41:806 
end.time:2016-02-04 11:29:46:854
fetch.size:1048576
data.consumed.in.MB:0.0954
MB.sec: 1.9869
data.consumed.in.nMs:1001
nMsg.sec:20854.1667
  1. start.time,end.time将显示测试何时开始并完成。
  2. fetch.size **显示单个请求中要获取的数据量。
  3. data.consumed.in.MB ****显示所有消息的大小。
  4. ** MB.sec *表示每秒以MB为单位传输的数据量(吞吐量大小)。
  5. data.consumed.in.nMsg将显示在此测试期间消耗的总消息数。
  6. 最后nMsg.sec显示一秒内消耗的消息数量(消息计数的吞吐量)。

Consumer的性能测试也基于消息数量,结果以图形内联显示。

通过使用统计数据,我们可以决定批量大小,消息大小和给定配置可以生成/消耗的最大消息数,换句话说,我们可以为Kafka基准数量。

所有上述分析都是使用Kafka的默认设置完成的,可以有多种情况我们可以测试并获取Kafka Producer和Consumer的性能统计数据,其中一些情况可以是:

  1. 更改主题数量
  2. 更改异步批量大小
  3. 更改邮件大小
  4. 更改分区数
  5. 网络延迟
  6. 更改经纪人数量
  7. 更改生产者/消费者等的数量

上述更改可以在文件夹中可用的属性文件中完成:

sh /Kafka/kafka_2.9.1-0.8.2.2/config

Apache Kafka使用默认配置执行一些负载测试来完成性能测试和基准测试的更多相关文章

  1. 如何在 Apache 里修改 PHP 配置

    当使用 PHP 作为 Apache 模块时,也可以使用 Apache 配置文件(例如:httpd.conf) 和 .htaccess 文件中的指令来修改 PHP 的配置 设定,不过需要有 " ...

  2. JMeter分布式负载测试(吞吐量控制器)

    在本节中,我们将学习如何使用吞吐量控制器在JMeter中创建分布式负载测试计划. 出于测试目的,我们将在我们网站 www.yiibai.com 的URL下的某些网页上创建分布式负载.这些网页包括: 主 ...

  3. 性能测试vs负载测试vs压力测试-概念普及

    下面我们主要介绍性能测试.负载测试和压力测试. 效率作为ISO 9126内部和外部质量的重要质量属性之一,其含义是在规定条件下,相对于所用的资源的数量,软件产品可提供适当性能的能力.资源可能包括其他软 ...

  4. Loadrunner常用目录、组成部分及负载测试流程

    常用目录 bin:存放一些可执行程序 classes:可能用到的jar包 My Template:存放一些自己创建的模板 include:头文件(可以编写自定义函数,保存成.h的头文件形式并放在这个目 ...

  5. 使用JMeter进行Apache Kafka负载测试

    1.卡夫卡负载测试 在这个Apache Kafka教程中,我们将了解如何使用Apache JMeter,如何在Apache Kafka上执行Kafka负载测试.此外,这个Kafka负载测试教程教我们如 ...

  6. JMeter进行Apache Kafka负载测试

    1.卡夫卡负载测试 在这个Apache Kafka教程中,我们将了解如何使用Apache JMeter,如何在Apache Kafka上执行Kafka负载测试.此外,这个Kafka负载测试教程教我们如 ...

  7. Apache Kafka 分布式消息队列中间件安装与配置 转载

    bin/zkServer.sh start /home/guym/down/kafka_2.8.0-0.8.0/config/zookeeper.properties& bin/kafka-s ...

  8. 【高可用HA】Apache (4) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk

    Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk httpd版本: httpd-2.4.17 jk版本: tomcat-connectors-1.2.41 参考 ...

  9. 《SpringMVC从入门到放肆》二、SpringMVC的执行流程及默认配置

    上一篇博文我们做了一个hello world的程序,并且已经成功的跑起来了.这一篇我们来深入的了解一下SpringMVC的执行流程以及一些其它的配置. 一.执行流程 来解释一下上图中的各个名词1.Di ...

随机推荐

  1. 修改Nginx配置参数解决http状态码:413上传文件大小限制问题

    修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要修改 ...

  2. MES助力伊利集团打造智慧工厂

    1.项目背景介绍 在国家政策和事业部.工厂的实际需求双重背景下,2016年7-9月期间,伊利集团信息部门.业务部门,先后与国内外领先的设备和咨询公司进行了智能制造.智慧工厂等话题的沟通交流,并组织实地 ...

  3. Android 自定义ListView动态加载数据

    我们都知道网络取数据是耗时操作,如果我们一次性请求所有数据,假如数据量不多那还可以接受,但是如果数据量特别多,那么带来的后果就是用户的愤怒(用户是很没有耐心的),所以这时候我们就需要动态的加载数据,分 ...

  4. Android源码分析(十七)----init.rc文件添加脚本代码

    一:init.rc文件修改 开机后运行一次: chmod 777 /system/bin/bt_config.sh service bt_config /system/bin/bt_config.sh ...

  5. Django使用Mysql已存在数据表的方法

    在mysql数据库中已经存在有数据的表,自己又不想删除,下面方法可以同步django中创建的表 1.最好将自己建的表名改为前缀和django自动创建表名前缀相同,不改也可以,但是后期表太多容易混乱 2 ...

  6. 静态资源上传至远程ftp服务器,ftp工具类封装

    工具类,是一个单独的工程项目 提取必要信息至ftp.properties配置文件中 ftp_host=192.168.110.128 ftp_port=21 ftp_username=ftpuser ...

  7. Linux shell case条件判断及位置变量

    case语句使用于需要进行多重分支的应用情况 case分支判断结构 语法: case 变量名称 in      value1)          statement          statemen ...

  8. 迁移生产环境的GItLab11.3.5到新的服务器

    在新的服务器上 rpm安装git 首先停止,Gitlab服务 root@localhost # gitlab-ctl stop 参考了 以下链接: https://blog.csdn.net/liul ...

  9. 【JavaScript】案例三:使用JS完成页面定时弹出广告——事件(onload)

     事件(onload) *注意点: 变量加var局部变量,不加var全局变量 setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭. 返回值:返回 ...

  10. Java八大排序之基数排序

    基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分 ...