RocketMQ性能测试结果

0. 测试环境

阿里云,内存型R5,2核16G内存,5台机器。

RocketMq部署采用Docker,自己定制了镜像,参见:docker-rocketmq

1. 单机测试

单机: NameServer、Broker、Test程序都部署在一台机器上。

1.1 单机 发送线程与TPS

此时默认msgLen=100,主要看线程数的增加,对于同步发消息性能的影响。

可以看到12个线程后,TPS ~= 12K/s,之后线程数再增加,也不会有很大增长了。

我选用的R5机器,只有2个核心,而且应该是有其他隔离限制,所以性能不太高,之后可以换更好的机器再测试。

1.2 单机 消息长度与TPS

此时固定线程数为8,主要看消息长度的增加,对于同步发消息性能的影响。

这里看到影响不太明显,并且TPS普遍偏低。

分析了下。主要原因是

  1. 都部署在一台机器上,有一定相互影响
  2. 当时物理机可能有别人在搞事情,导致资源受限

后面的集群测试,结果比较符合预期。

2. 集群测试

集群测试: 1台ns,3台broker(master only no slave 异步刷盘),打压单独1台

2.1 集群 线程数与TPS

固定30个topic,均匀分布到3台broker上

可以看到,TPS可以打到25k,大概是单机的2倍。

2.2 集群 消息长度与TPS

和上面单机测试相比,集群测试结果符合预期。

即随着消息长度增加,TPS逐渐下降。

对于常见长度(msgLen < 1k),下降不太明显。

2.3 集群 Topic数量与TPS

测试topic数量对同步发消息的影响。

500个topic平均分配到3台broker上。

结论是至少在500个Topic内,没有太大影响。

打压程序用Java写的,放到了github上,perf-rocketmq,供参考。

另外,我这里用的阿里云ECS,性能难免受限,各位感兴趣,可以用更好的机器测一下。

欢迎汇报更好的测试结果。

附原始打压数据:

# 单机打压
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=1, TPS=3117.40
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=2, TPS=5822.08
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=3, TPS=8973.44
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=4, TPS=11280.32
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=5, TPS=11092.62
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=6, TPS=12068.55
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=7, TPS=12909.89
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=8, TPS=13768.42
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=9, TPS=13579.58
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=10, TPS=13952.84
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=11, TPS=14817.01
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=12, TPS=14699.40
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=13, TPS=14324.60
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=14, TPS=16033.35
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=15, TPS=15482.27
Sync Send Test 100k, len=100, topicCnt=1, threadCnt=16, TPS=15494.27

Sync Send Test 1k, len=1, topicCnt=1, threadCnt=8, TPS=2008.03
Sync Send Test 1k, len=10, topicCnt=1, threadCnt=8, TPS=4219.41
Sync Send Test 1k, len=100, topicCnt=1, threadCnt=8, TPS=5464.48
Sync Send Test 1k, len=1000, topicCnt=1, threadCnt=8, TPS=4016.06
Sync Send Test 1k, len=2000, topicCnt=1, threadCnt=8, TPS=3921.57
Sync Send Test 1k, len=3000, topicCnt=1, threadCnt=8, TPS=4132.23
Sync Send Test 1k, len=4000, topicCnt=1, threadCnt=8, TPS=3906.25
Sync Send Test 1k, len=5000, topicCnt=1, threadCnt=8, TPS=2770.08
Sync Send Test 1k, len=6000, topicCnt=1, threadCnt=8, TPS=4237.29
Sync Send Test 1k, len=7000, topicCnt=1, threadCnt=8, TPS=4405.29
Sync Send Test 1k, len=8000, topicCnt=1, threadCnt=8, TPS=3846.15
Sync Send Test 1k, len=9000, topicCnt=1, threadCnt=8, TPS=3921.57
Sync Send Test 1k, len=10000, topicCnt=1, threadCnt=8, TPS=3773.58
# 集群情况
DefaultCluster    broker2                 0     192.168.6.87:10911     V4_3_2                   0.00(0,0ms)         0.00(0,0ms)          0 431625.93 -1.0000
DefaultCluster    broker3                 0     192.168.6.86:10911     V4_3_2                   0.00(0,0ms)         0.00(0,0ms)          0 431625.93 -1.0000
DefaultCluster    broker4                 0     192.168.6.89:10911     V4_3_2                   0.00(0,0ms)         0.00(0,0ms)          0 431625.93 -1.0000


# 集群打压

Sync Send Test 100k, len=100, topicCnt=30, threadCnt=1, TPS=2593.43
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=2, TPS=6069.80
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=3, TPS=9349.29
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=4, TPS=11674.06
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=5, TPS=14432.10
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=6, TPS=16414.97
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=7, TPS=18463.81
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=8, TPS=18811.14
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=9, TPS=18775.82
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=10, TPS=22836.26
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=11, TPS=22466.86
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=12, TPS=22381.38
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=13, TPS=25025.03
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=14, TPS=25588.54
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=15, TPS=26055.24
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=16, TPS=27173.91

Sync Send Test 100k, len=1, topicCnt=30, threadCnt=16, TPS=28074.12
Sync Send Test 100k, len=10, topicCnt=30, threadCnt=16, TPS=26709.40
Sync Send Test 100k, len=100, topicCnt=30, threadCnt=16, TPS=23105.36
Sync Send Test 100k, len=1000, topicCnt=30, threadCnt=16, TPS=22366.36
Sync Send Test 100k, len=2000, topicCnt=30, threadCnt=16, TPS=18129.08
Sync Send Test 100k, len=3000, topicCnt=30, threadCnt=16, TPS=16949.15
Sync Send Test 100k, len=4000, topicCnt=30, threadCnt=16, TPS=15494.27
Sync Send Test 100k, len=5000, topicCnt=30, threadCnt=16, TPS=10243.80
Sync Send Test 100k, len=6000, topicCnt=30, threadCnt=16, TPS=10817.83
Sync Send Test 100k, len=7000, topicCnt=30, threadCnt=16, TPS=10139.93
Sync Send Test 100k, len=8000, topicCnt=30, threadCnt=16, TPS=9321.40
Sync Send Test 100k, len=9000, topicCnt=30, threadCnt=16, TPS=8646.03
Sync Send Test 100k, len=10000, topicCnt=30, threadCnt=16, TPS=7697.64

Sync Send Test 100k, len=100, topicCnt=1, threadCnt=8, TPS=10423.18
Sync Send Test 100k, len=100, topicCnt=50, threadCnt=8, TPS=14300.01
Sync Send Test 100k, len=100, topicCnt=100, threadCnt=8, TPS=18083.18
Sync Send Test 100k, len=100, topicCnt=150, threadCnt=8, TPS=17361.11
Sync Send Test 100k, len=100, topicCnt=200, threadCnt=8, TPS=18446.78
Sync Send Test 100k, len=100, topicCnt=250, threadCnt=8, TPS=16714.02
Sync Send Test 100k, len=100, topicCnt=300, threadCnt=8, TPS=18674.14
Sync Send Test 100k, len=100, topicCnt=350, threadCnt=8, TPS=16691.70
Sync Send Test 100k, len=100, topicCnt=400, threadCnt=8, TPS=18597.73
Sync Send Test 100k, len=100, topicCnt=450, threadCnt=8, TPS=18178.51
Sync Send Test 100k, len=100, topicCnt=500, threadCnt=8, TPS=17733.64

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *