
# 测试4.8.0版本RocketMQ实例性能（基础场景）
本章节主要测试RocketMQ实例4.8.0版本不同产品规格在发送1 KB大小的消息，且消费堆积数较大时，同时进行生产和消费，得到实例的生产消费性能。
#### 测试环境
进行测试前，您需要先构建如下的测试环境：
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. 创建如[表2]所示Topic，创建步骤请参考[创建Topic](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-008.html)。
    表2Topic参数 
   | 名称       | 权限    | 关联代理     | 队列个数 |
   |:---|:---|:---|:---|
   | topic-01 | 发布+订阅 | broker-0 | 8    |
      
   
3. 创建如[表3]所示消费组，创建步骤请参考[创建消费组](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-013.html)。
    表3消费组参数 
   | 名称       | 关联代理     | 最大重试次数 | 是否允许以广播模式消费 |
   |:---|:---|:---|:---|
   | group-01 | broker-0 | 16     | 否           |
      
   
4. 创建如[表4]所示用户，创建步骤请参考[配置RocketMQ ACL用户](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-035.html)。
    表4用户参数 
   | 名称   | 管理员 | 默认Topic权限 | 默认消费组权限 | 密钥  |
   |:---|:---|:---|:---|:---|
   | test | 不开启 | 发布+订阅     | 订阅      | 自定义 |
      
   
5. 购买1台ECS服务器（区域、可用区、虚拟私有云、子网、安全组与[RocketMQ实例]保持一致，Linux系统），具体步骤请参考[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
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"文件夹下，执行如下命令：
```
sh producer.sh -n "${连接地址}" -t ${Topic名称} -s ${消息大小} -w ${生产者线程数} -a true -ak ${ACL用户名} -sk ${ACL密钥}
```
![](https://support.huaweicloud.com/usermanual-hrm/public_sys-resources/note_3.0-zh-cn.png)
如上命令中，-a true表示开启ACL访问控制。
 表5生产消息参数说明 
| 参数名称    | 说明                                                              | 取值样例                                     |
|:---|:---|:---|
| 连接地址    | RocketMQ实例的连接地址，在RocketMQ控制台的"概览 \> 连接信息"中获取。                   | 192.168.111.182:8100;192.168.111.14:8100 |
| Topic名称 | RocketMQ实例下创建的Topic名称，从[表2]中获取。 | topic-01                                 |
| 消息大小    | 自定义生产消息的大小。 RocketMQ支持的最大消息大小是4 MB。  | 1024（1 KB）                               |
| 生产者线程数  | 生产者的线程数。                                                        | 128                                      |
| ACL用户名  | 自定义用户名称，用于识别不同的用户，从[表4]中获取。    | test                                     |
| ACL密钥   | 自定义用户的密钥，从[表4]中获取。             | XXXXXXXX                                 |
   
将[表5]的取值示例代入命令示例中，执行如下命令生产消息：
```
sh producer.sh -n "192.168.111.182:8100;192.168.111.14:8100" -t topic-01 -s 1024 -w 128 -a true -ak test -sk XXXXXXXX
```
**消费命令：**
在"benchmark"文件夹下，执行如下命令：
```
sh consumer.sh -n "${连接地址}" -t ${Topic名称} -g ${消费组名称} -a true -ak ${ACL用户名} -sk ${ACL密钥}
```
 表6消费消息参数说明 
| 参数名称    | 说明                                                              | 取值样例                                     |
|:---|:---|:---|
| 连接地址    | RocketMQ实例的连接地址，在RocketMQ控制台的"概览 \> 连接信息"中获取。                   | 192.168.111.182:8100;192.168.111.14:8100 |
| Topic名称 | RocketMQ实例下创建的Topic名称，从[表2]中获取。 | topic-01                                 |
| 消费组名称   | RocketMQ实例下创建的消费组名称，从[表3]中获取。  | group-01                                 |
| ACL用户名  | 自定义用户名称，用于识别不同的用户，从[表4]中获取。    | test                                     |
| ACL密钥   | 自定义用户的密钥，从[表4]中获取。             | XXXXXXXX                                 |
   
将[表6]的取值示例代入命令示例中，执行如下命令消费消息：
```
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
```
#### 测试过程
1. 同时启动生产、消费命令。
2. 1分钟后停止消费命令，等待生产100 GB以上消息。
3. 再次启动消费命令，测试冷读场景下生产、消费性能。
 
#### 测试结果参考
![](https://support.huaweicloud.com/usermanual-hrm/public_sys-resources/caution_3.0-zh-cn.png)
以下性能规格数据为基准条件下（磁盘类型为超高IO，消息大小为1 KB，冷读场景）测试出的RocketMQ集群性能规格，实际性能规格表现还会受多种因素影响，包括但不限于磁盘类型、是否冷读、冷读并发度、是否开启SSL加密、是否开启ACL认证、是否开启消息轨迹、是否跨AZ、生产并发、队列流量分布是否均衡等。因此建议参考[配置RocketMQ监控告警](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-043.html)对实例进行监控，在业务增长导致实例性能不足之前及时进行扩容。
表7测试结果参考（基础场景） 
| 性能指标    | rocketmq.4u8g.cluster.small | rocketmq.4u8g.cluster | rocketmq.8u16g.cluster | rocketmq.12u24g.cluster | **rocketmq.16u32g.cluster** |
|:---|:---|:---|:---|:---|:---|
| 消息生产速率  | 28566 个/秒                   | 31644 个/秒             | 43272 个/秒              | 44934 个/秒               | 42380 个/秒                   |
| 消息消费速率  | 99826 个/秒                   | 104949 个/秒            | 210195 个/秒             | 219311 个/秒              | 197813 个/秒                  |
| 网络入流量   | 68 MB/s                     | 75 MB/s               | 115 MB/s               | 109 MB/s                | 96 MB/s                     |
| 网络出流量   | 240 MB/s                    | 251 MB/s              | 460 MB/s               | 400 MB/s                | 371 MB/s                    |
| CPU使用率  | 98%                         | 97%                   | 89%                    | 89%                     | 90%                         |
| CPU核均负载 | 4.07                        | 3.61                  | 2.25                   | 2.32                    | 2.83                        |
| 内存使用率   | 46%                         | 44%                   | 49%                    | 49%                     | 48%                         |
   
