文档章节

Rocketmq拉取pull消息分页数目测试

tantexian
 tantexian
发布于 2016/06/30 23:13
字数 890
阅读 523
收藏 0

一 机器部署

1、机器组成

7台机器,均为16G内存

每台服务器均有4个CPU,2核

 

2、运行环境配置

3、刷盘方式

每台机器master机器均采用异步刷盘方式

 

 

 

 

 

二 性能评测

1、评测目的

   测试pull消费模式,单次批量拉消息最大条数。

  

2、评测指标

    批量拉取消息最大条数msgExtSize

    自定义配置 最大拉取条数 maxNums

   

3、评测逻辑

  (1)先发送10000条消息,等待消息全部发送完毕,然后启动consumer端消费消息。

    (2)配置maxNums的值分别为 1、3、5、8、16、20、24、27、31、32、33、34、35、36、54、80、100,然后对比每次拉取消息的msgExtSize条数。

   (3)记录每次批量拉取消息的最大条数,即可测试出批量拉消息最大条数。

    (4)步骤3找出批量拉消息最大条数后,在这个数值前后再设置连续数字,进一步验证此数值。

   

4、评测过程

    (1)第一组:开启20个线程,每个线程发送3000条数据,总共向topic名称为 “pullTest”发送60W条消息(消息量越多越好,consumer端消费速率很快,故发送消息的数据量越多越好,这样以便于看出效果)。

    消息发送如下:

      

       设置maxNums=1的消费记录,输出的msgExtSize=1

      

       设置maxNums=3的消费记录,输出的msgExtSize=2

 

       设置maxNums=5的消费记录,输出的msgExtSize=4

      

       设置maxNums=8的消费记录,输出的msgExtSize=7

 

设置maxNums=16的消费记录,输出的msgExtSize=15

 

       设置maxNums=20的消费记录,输出的msgExtSize=19

      

       设置maxNums=24的消费记录,输出的msgExtSize=23

      

       设置maxNums=27的消费记录,输出的msgExtSize=26

 

       设置maxNums=32的消费记录,输出的msgExtSize=31

 

       设置maxNums=36的消费记录,输出的msgExtSize=32

      

       设置maxNums=54的消费记录,输出的msgExtSize=32

      

       设置maxNums=80的消费记录,输出的msgExtSize=32

      

       设置maxNums=100的消费记录,输出的msgExtSize=32

      

       分析以上各条件的测试数据可知: 批量拉消息最大条数的条数是32。

      

      

       (2)第二组:在拉取消息的最大条数 前后的数字,细粒度的再次测试。

       设置maxNums=33的消费记录,输出的msgExtSize=32

 

       设置maxNums=34的消费记录,输出的msgExtSize=32

       设置maxNums=35的消费记录,输出的msgExtSize=32

      

       设置maxNums=31的消费记录,输出的msgExtSize=30

   

    进一步分析测试数据,批量拉消息最大条数的条数是32。

    分析结果如下:

自定义最大拉取数
(期望)
批量拉消息最大条数
(实际)
1 1
3 2
5 4
8 7
16 15
20 19
24 23
27 26
31 30
32 31
33 32
34 32
35 32
36 32
54 32
80 32
100 32

 

 

 

二 评测结果

   1、如下测试结论,基于消息存储于内存的场景(而非消息存储于磁盘的场景)。

   在Pull消费场景下,令 maxA = 自定义最大拉取条数, maxB=实际批量拉消息最大条数, 则得出如下结论:

    (1)若maxA = 1, 则maxB = 1

    (2)若maxA <= 32, 则 maxB = maxA - 1

    (3)若maxA > 32, 则maxB = 32 

 

 2、查阅RocketMQ配置文件,如果消息存储于磁盘,则实际批量拉消息最大条数是为8(并非期望的数值32),奈何此种测试场景不太好重现,暂未测试,留待后续进一步重现测试。

 

 

 

 

 

    

    

© 著作权归作者所有

tantexian
粉丝 225
博文 527
码字总数 746616
作品 0
成都
架构师
私信 提问
[RocketMQ]消息中间件—RocketMQ消息消费(一)

文章摘要:在发送消息给RocketMQ后,消费者需要消费。消息的消费比发送要复杂一些,那么RocketMQ是如何来做的呢? 在RocketMQ系列文章的前面几篇幅中已经对其“RPC通信部分”和“普通消息发送...

morpheusWB
2018/09/29
230
0
消息中间件—RocketMQ消息消费(一)

文章摘要:在发送消息给RocketMQ后,消费者需要消费。消息的消费比发送要复杂一些,那么RocketMQ是如何来做的呢? 在RocketMQ系列文章的前面几篇幅中已经对其“RPC通信部分”和“普通消息发送...

癫狂侠
2018/08/12
0
0
[RocketMQ]消息中间件—RocketMQ消息消费(二)(push模式实现)

摘要:在RocketMQ中,消息消费都是基于Pull消息方式,那么Push模式中又是如何实现Consumer端准实时消费的呢? 在上一篇—“消息中间件—RocketMQ消息消费(一)”中,已经简要地介绍了下Roc...

morpheusWB
2018/09/29
85
0
消息中间件—RocketMQ消息消费(二)(push模式实现)

摘要:在RocketMQ中,消息消费都是基于Pull消息方式,那么Push模式中又是如何实现Consumer端准实时消费的呢? 在上一篇—“消息中间件—RocketMQ消息消费(一)”中,已经简要地介绍了下Roc...

癫狂侠
2018/08/16
0
0
消息中间件 RocketMQ源码解析:Message拉取&消费(下)

摘要: 原创出处 http://www.iocoder.cn/RocketMQ/message-pull-and-consume-second/ 「芋道源码」欢迎转载,保留摘要,谢谢! 本文主要基于 RocketMQ 4.0.x 正式版 1、概述 2、Consumer 3、P...

芋道源码
2017/05/09
118
1

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部