Rocketmq拉取pull消息分页数目测试
2016-06-30 00:00
281 查看
一 机器部署
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、如下测试结论,基于消息存储于内存的场景(而非消息存储于磁盘的场景)。
在Pull消费场景下,令 maxA = 自定义最大拉取条数, maxB=实际批量拉消息最大条数, 则得出如下结论:
(1)若maxA = 1, 则maxB = 1
(2)若maxA <= 32, 则 maxB = maxA - 1
(3)若maxA > 32, 则maxB = 32
2、查阅RocketMQ配置文件,如果消息存储于磁盘,则实际批量拉消息最大条数是为8(并非期望的数值32),奈何此种测试场景不太好重现,暂未测试,留待后续进一步重现测试。
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),奈何此种测试场景不太好重现,暂未测试,留待后续进一步重现测试。
相关文章推荐
- MyRocketMQ集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)
- 单例模式的优缺点
- awk入门(gawk)
- 创业的第二百一十一天
- java常用环境配置整理
- Table 行间距
- logback中使用properties文件
- Mycat架构分析
- leftover women
- JNLP(jar包签名)
- 从零开始开发JVM语言(十二)重载方法的选择
- Shiro+Webseal做单点登录
- Num63 前台用户注册&redis的简单java使用
- 实现td内容自动换行
- 获取星座的接口
- 麦田里的守望者》杂记
- 最简单的音频剪切和合并
- mysql触发器使用
- Jvm 内存分析-jstat -gcutil
- Java根据JSON的路径获取节点值