测试4.8.0版本RocketMQ实例性能(极限场景)
本章节主要测试RocketMQ实例4.8.0版本不同产品规格在发送1KB大小的消息,同时向大量Topic进行生产,每个Topic被两个消费组订阅,每个消费组下启动一个消费者进行消费,且消费堆积数较大时,得到实例的生产消费性能。
测试环境
进行测试前,您需要先构建如下的测试环境:
- 购买如表1所示实例,购买步骤请参考购买实例。
表1 实例参数 名称
规格
代理数量
存储空间
ACL访问
公网访问
SSL
rocketmq-01
rocketmq.4u8g.cluster.small
1
超高I/O 1500GB
开启
关闭
开启
rocketmq-02
rocketmq.4u8g.cluster
1
超高I/O 1500GB
开启
关闭
开启
rocketmq-03
rocketmq.8u16g.cluster
1
超高I/O 1500GB
开启
关闭
开启
rocketmq-04
rocketmq.12u24g.cluster
1
超高I/O 1500GB
开启
关闭
开启
rocketmq-05
rocketmq.16u32g.cluster
1
超高I/O 1500GB
开启
关闭
开启
- 创建Topic,创建步骤请参考创建Topic。
极限场景需要创建的Topic数量见表5所示,每个Topic队列数为8。
- 创建消费组,创建步骤请参考创建消费组。
极限场景中每个Topic需要两个消费组,Topic数量见表5所示。
- 创建如表2所示用户,创建步骤请参考配置RocketMQ ACL用户。
- 购买ECS服务器(区域、可用区、虚拟私有云、子网、安全组与RocketMQ实例保持一致,Linux系统),具体步骤请参考购买弹性云服务器。
由于启动的客户端数量较多,需要购买较多ECS作为测试机,每台测试机可同时启动不超过50个测试命令。
- 在ECS中安装Java JDK,并配置JAVA_HOME与PATH环境变量。
export JAVA_HOME=/root/jdk1.8.0_231 export PATH=$JAVA_HOME/bin:$PATH
- 下载测试工具。
wget https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip
- 解压测试工具。
unzip rocketmq-all-5.1.4-bin-release.zip
测试命令
生产命令:
在“benchmark”文件夹下,执行如下命令:
JAVA_OPT=-Dtls.enable=true sh producer.sh -n "${连接地址}" -t ${Topic名称} -s ${消息大小} -w ${生产者线程数} -a true -ak ${ACL用户名} -sk ${ACL密钥} -m true
如上命令中,-a true表示开启ACL访问控制,-m true表示开启消息轨迹。
|
参数名称 |
说明 |
取值样例 |
|---|---|---|
|
连接地址 |
RocketMQ实例的连接地址,在RocketMQ控制台的“概览 > 连接信息”中获取。 |
192.168.111.182:8100;192.168.111.14:8100 |
|
Topic名称 |
RocketMQ实例下创建的Topic名称,从2中获取。 |
topic-01 |
|
消息大小 |
自定义生产消息的大小。 RocketMQ支持的最大消息大小是4M。 |
1024(1KB) |
|
生产者线程数 |
生产者的线程数。 |
1 |
|
ACL用户名 |
自定义用户名称,用于识别不同的用户,从表2中获取。 |
test |
|
ACL密钥 |
自定义用户的密钥,从表2中获取。 |
XXXXXXXX |
将表1的取值示例代入命令示例中,执行如下命令生产消息:
JAVA_OPT=-Dtls.enable=true sh producer.sh -n "192.168.111.182:8100;192.168.111.14:8100" -t topic-01 -s 1024 -w 1 -a true -ak test -sk XXXXXXXX -m true
消费命令:
在“benchmark”文件夹下,执行如下命令:
JAVA_OPT=-Dtls.enable=true sh consumer.sh -n "${连接地址}" -t ${Topic名称} -g ${消费组名称} -a true -ak ${ACL用户名} -sk ${ACL密钥} -m true
|
参数名称 |
说明 |
取值样例 |
|---|---|---|
|
连接地址 |
RocketMQ实例的连接地址,在RocketMQ控制台的“概览 > 连接信息”中获取。 |
192.168.111.182:8100;192.168.111.14:8100 |
|
Topic名称 |
RocketMQ实例下创建的Topic名称,从2中获取。 |
topic-01 |
|
消费组名称 |
RocketMQ实例下创建的消费组名称,从3中获取。 |
group-01 |
|
ACL用户名 |
自定义用户名称,用于识别不同的用户,从表2中获取。 |
test |
|
ACL密钥 |
自定义用户的密钥,从表2中获取。 |
XXXXXXXX |
将表4的取值示例代入命令示例中,执行如下命令消费消息:
JAVA_OPT=-Dtls.enable=true sh consumer.sh -n "192.168.111.182:8100;192.168.111.14:8100" -t topic-01 -g group-01 -a true -ak test -sk XXXXXXXX -m true
测试结果参考
以下性能规格数据是在特定测试条件下获得的参考值,不保证一定能达到。随着底层硬件和软件的不断更新,本页面的内容也将定期更新。建议您针对业务场景进行压测,并参考配置RocketMQ监控告警对实例进行监控,及时发现性能瓶颈,扩容RocketMQ集群。
|
性能指标 |
rocketmq.4u8g.cluster.small |
rocketmq.4u8g.cluster |
rocketmq.8u16g.cluster |
rocketmq.12u24g.cluster |
rocketmq.16u32g.cluster |
|---|---|---|---|---|---|
|
Topic数量 |
1000 |
2000 |
4000 |
6000 |
8000 |
|
每个Topic的消费组数量 |
2 |
2 |
2 |
2 |
2 |
|
消息生产速率 |
6163 个/秒 |
5590 个/秒 |
9027 个/秒 |
15033 个/秒 |
18567 个/秒 |
|
消息消费速率 |
3671 个/秒 |
2985 个/秒 |
4208 个/秒 |
5263 个/秒 |
3812 个/秒 |
|
网络入流量 |
18.2 MB/s |
22.8 MB/s |
38.8 MB/s |
63.2 MB/s |
67.3 MB/s |
|
网络出流量 |
38.6 MB/s |
37.1 MB/s |
58.8 MB/s |
93.2 MB/s |
110.4 MB/s |
|
CPU使用率 |
95% |
97% |
92% |
93.5% |
90.5% |
|
CPU核均负载 |
5.425 |
6.267 |
3.776 |
4.074 |
3.042 |
|
内存使用率 |
74% |
68% |
64% |
63.6% |
59% |