RocketMQ多线程场景生产和消费TPS测试

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一 机器部署

1、机器组成

7台机器,均为16G内存

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

RocketMQ多线程场景生产和消费TPS测试_第1张图片

 

2、运行环境配置

RocketMQ多线程场景生产和消费TPS测试_第2张图片

3、刷盘方式

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

25155507_odDD.jpg

 

RocketMQ多线程场景生产和消费TPS测试_第3张图片

 

 

 

 

 

 

二 性能评测

1、评测目的

多线程环境下,测试producer端的TPS 和 consumer端的TPS。

 

2、评测指标

(1)生产者producer

TPS、线程个数、发送成功数量、发送失败数量、接收成功数量、接收失败数量、发送消息成功总耗时。

(2)消费者consumer

TPS、接收消息总数、消息存储总耗时,消息存储平均耗时、消息消费总耗时、消息消费平均耗时。

3、评测逻辑

  (1)固定消息长度,producer端发送消息body的字符串默认100字符长度。

(2)输入不同的线程数,产生不同组的producer,记录发送消息的TPS、发送成功数和消息消费的TPS、消费成功数等等。

(3)根据多组测试数据,分析平均的生产TPS和平均消费TPS。

4、评测步骤

(1)创建性能测试的topic,名称为BenchmarkTopicTest。 队列个数默认8个。

(2)输入线程数、消息长度、是否开启message的key值,并做表格记录TPS。

(3)针对特定场景,保持线程数不变,增加消息message的size,记录producer端和consumer端的TPS,并做表格记录。

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
           

 

5、评测过程

(1)第一组 线程个数1,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 450 450 1 128 False

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第4张图片

 

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第5张图片

 

(2)第二组 线程个数10,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 3300 3250 10 128 False

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第6张图片

 

 

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第7张图片

 

(3)第三组 线程个数32,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 8000 7900 32 128 False

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第8张图片

 

consumer端消费记录

25155509_vj63.jpg

 

(4)第四组 线程个数50,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 11400 11300 50 128 False

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第9张图片

 

consumer端消费记录

25155510_2ewE.jpg

 

 

(5)第五组 线程个数64,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置message的key值
1 17300 18000 64 128 False

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第10张图片

 

consumer端消费记录

25155510_hgBd.jpg

 

(6)第六组 线程个数72,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置message的key值
1 18000 18200 72 128 False

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第11张图片

 

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第12张图片

 

(7)第七组 线程个数80,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 19000 20000 80 128 False

producer端发送记录

25155511_Apx7.jpg

 

consumer端消费记录

25155511_Mor8.jpg

 

(8)第八组 线程个数90,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 20000 20000 90 128 True

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第13张图片

 

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第14张图片

 

(9)第九组 线程个数100,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 21000 21000 100 128 False

producer端发送记录

25155512_ZR5F.jpg

 

consumer端消费记录

25155512_qETE.jpg

 

(10)第十组 线程个数160,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 24000 23000 160 128 false

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第15张图片

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第16张图片

 

 

(11)第十一组线程个数320,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 28000 27500 320 128 false

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第17张图片

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第18张图片

 

(12)第十二组 线程个数640,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 29500 30000 640 128 false

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第19张图片

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第20张图片

 

(13)第十三组 线程个数1000,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 30000 29000 1000 128 false

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第21张图片

consumer端消费记录

25155514_YlXE.jpg

 

(14)第十四组 线程个数2000,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 32000 31000 2000 128 false

producer端发送记录

25155515_C4z7.jpg

consumer端消费记录

25155515_IhXR.jpg

 

(15)第十五组 线程个数3200,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 35300 35000 3200 128 false

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第22张图片

consumer端消费记录

25155515_fMN3.jpg

 

(16)第十六组 线程个数5000,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 36400 36000 5000 128 false

producer端发送记录

25155515_ttyd.jpg

consumer端消费记录

25155516_PPo8.jpg

 

(17)第十七组 线程个数6400,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 36500 36100 6400 128 false

producer端发送记录

25155516_t4fk.jpg

consumer端消费记录

25155516_7W9q.jpg

 

 

(7)第六组 线程个数100,消息长度固定128,不配置message的key值

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 17800 17500 100 128 True

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第23张图片

 

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第24张图片

 

 

  1. 第六组 线程个数100,消息长度固定1280,配置topic的key值为时间戳
编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 14000 14000 100 1280 True

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第25张图片

 

consumer端消费记录

25155517_Uwks.jpg

 

(9)第六组 线程个数100,消息长度固定12800,配置message的key值为时间戳

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 8800 9200 100 12800 True

producer端发送记录

RocketMQ多线程场景生产和消费TPS测试_第26张图片

 

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第27张图片

 

(10)第六组 线程个数100,消息长度固定128000,配置message的key值为时间戳

编号 TPS (Producer) TPS (Consumer) 线程数 消息长度 是否配置
message的key值
1 1300 880 100 128000 True

producer端发录

RocketMQ多线程场景生产和消费TPS测试_第28张图片

consumer端消费记录

RocketMQ多线程场景生产和消费TPS测试_第29张图片

 

6、分析结果如下:

保持消息长度为128,不配置message消息的key值,结果如下

编号 TPS(Producer) TPS(Consumer) 线程数 消息长度 是否配置
message的key值
1 450 450 1 128 FALSE
2 3300 3250 10 128 FALSE
3 8000 7900 32 128 FALSE
4 11400 11300 50 128 FALSE
5 17300 18000 64 128 FALSE
6 18000 18200 72 128 FALSE
7 18000 20000 80 128 FALSE
8 20000 20000 90 128 FALSE
9 21000 21000 100 128 FALSE
10 24000 23000 100 128 FALSE
11 28000 27500 100 1280 FALSE
12 29500 30000 100 12800 FALSE
13 30000 29000 100 128000 FALSE
14 24000 23000 160 128 FALSE
15 28000 27500 320 128 FALSE
16 29500 30000 640 128 FALSE
17 30000 29000 1000 128 FALSE
18 32000 31000 2000 128 FALSE
19 35300 35000 3200 128 FALSE
20 36400 36000 5000 128 FALSE
21 36500 36100 6400 128 FALSE

  

 

 

7、保持线程数为100,逐步增大消息body长度,配置message消息的key值为时间戳

编号 TPS(Producer) TPS(Consumer) 线程数 消息长度 是否配置
message的key值
1 17800 17500 100 128 TRUE
2 14000 14000 100 1280 TRUE
3 8800 9200 100 12800 TRUE
4 1300 880 100 128000 TRUE

 

 

三 评测结果

1、随着线程数增加,producer端和consumer端的TPS均保持逐步增加的趋势,线程数目约等于100的时候,producer端的生产TPS、consumer端的消费TPS基本保持一致。

  1. 线程数目大于3200之后,producer端的生产TPS基本稳定在36000左右,后续几乎不在上升。同时consumer端的TPS略微低于producer端,但也同样稳定在35000上下。

3、保持线程数100不变,逐步增加消息body的size,producer端和consumer端的TPS均呈现下降趋势,且producer端的下降率高于consumer端。

说明随着消息body的增加,RocketMQ存储消息所需要的时间越来越多,导致producer的TPS下降。 Consumer端消费消息,网络传输带来的时间损耗整体较低,所以反而consumer端的TPS下降并不是特别快。

 

转载于:https://my.oschina.net/tantexian/blog/703803

你可能感兴趣的:(RocketMQ多线程场景生产和消费TPS测试)