
# 测试4.8.0版本RocketMQ实例性能（极限场景）
本章节主要测试RocketMQ实例4.8.0版本不同产品规格在发送1 KB大小的消息，同时向大量Topic进行生产，每个Topic被两个消费组订阅，每个消费组下启动一个消费者进行消费，且消费堆积数较大时，得到实例的生产消费性能。
#### 测试环境
进行测试前，您需要先构建如下的测试环境：
1. 购买如[表1]所示实例，购买步骤请参考[购买实例](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-002.html)。
    表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 | 开启    | 关闭   | 开启  |
      
   
2. 创建Topic，创建步骤请参考[创建Topic](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-008.html)。
   极限场景需要创建的Topic数量见[表5]，每个Topic队列数为8。
   
3. 创建消费组，创建步骤请参考[创建消费组](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-013.html)。
   极限场景中每个Topic需要两个消费组，Topic数量见[表5]。
   
4. 创建如[表2]所示用户，创建步骤请参考[配置RocketMQ ACL用户](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-035.html)。
    表2用户参数 
   | 名称   | 管理员 | 默认Topic权限 | 默认消费组权限 | 密钥  |
   |:---|:---|:---|:---|:---|
   | test | 不开启 | 发布+订阅     | 订阅      | 自定义 |
      
   
5. 购买ECS服务器（区域、可用区、虚拟私有云、子网、安全组与[RocketMQ实例]保持一致，Linux系统），具体步骤请参考[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
   由于启动的客户端数量较多，需要购买较多ECS作为测试机，每台测试机可同时启动不超过50个测试命令。
   
6. 在ECS中安装[Java JDK](https://www.oracle.com/java/technologies/javase-downloads.html)，并配置JAVA_HOME与PATH环境变量。
   ```
   export JAVA_HOME=/root/jdk1.8.0_231 
   export PATH=$JAVA_HOME/bin:$PATH
   ```
   
7. 下载测试工具。
   ```
   wget https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip
   ```
   
8. 解压测试工具。
   ```
   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
```
![](https://support.huaweicloud.com/usermanual-hrm/public_sys-resources/note_3.0-zh-cn.png)
如上命令中，-a true表示开启ACL访问控制，-m true表示开启消息轨迹。
 表3生产消息参数说明 
| 参数名称    | 说明                                                             | 取值样例                                     |
|:---|:---|:---|
| 连接地址    | RocketMQ实例的连接地址，在RocketMQ控制台的"概览 \> 连接信息"中获取。                  | 192.168.111.182:8100;192.168.111.14:8100 |
| Topic名称 | RocketMQ实例下创建的Topic名称，从[2]中获取。   | topic-01                                 |
| 消息大小    | 自定义生产消息的大小。 RocketMQ支持的最大消息大小是4 MB。 | 1024（1 KB）                               |
| 生产者线程数  | 生产者的线程数。                                                       | 1                                        |
| ACL用户名  | 自定义用户名称，用于识别不同的用户，从[表2]中获取。   | test                                     |
| ACL密钥   | 自定义用户的密钥，从[表2]中获取。            | XXXXXXXX                                 |
   
将[表3]的取值示例代入命令示例中，执行如下命令生产消息：
```
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
```
 表4消费消息参数说明 
| 参数名称    | 说明                                                           | 取值样例                                     |
|:---|:---|:---|
| 连接地址    | 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
```
#### 测试结果参考
![](https://support.huaweicloud.com/usermanual-hrm/public_sys-resources/caution_3.0-zh-cn.png)
以下性能规格数据是在特定测试条件下获得的参考值，不保证一定能达到。随着底层硬件和软件的不断更新，本页面的内容也将定期更新。建议您根据实际业务场景进行压测，并参考[配置RocketMQ监控告警](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-043.html)对实例进行监控，及时发现性能瓶颈，扩容RocketMQ集群。
 表5测试结果参考（极限场景） 
| 性能指标                  | 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                   |
| 网络出流量（含Broker内主备同步流量） | 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%                         |
   
