# 测试5.x基础版本RocketMQ实例性能
本章节主要测试RocketMQ实例5.x基础版本不同产品规格在发送3800字节大小的消息时，实例的生产速率、消费速率和平均生产时延。
#### 测试环境
进行测试前，您需要先构建如下的测试环境：
1. 购买如[表1]所示实例，购买步骤请参考[购买实例](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-002.html)。
    表1实例参数 
   | 名称            | 规格                  | 存储空间        | ACL访问 | 公网访问 | SSL |
   |:---|:---|:---|:---|:---|:---|
   | rocketmq-01 | rocketmq.b2.large.4  | 超高I/O 300GB | 关闭      | 关闭    | 不开启 |
   | rocketmq-02 | rocketmq.b2.large.8  | 超高I/O 300GB  | 关闭      | 关闭  | 不开启   |
   | rocketmq-03   | rocketmq.b2.large.12 | 超高I/O 300GB  | 关闭      | 关闭  | 不开启 |
      
   
2. 创建如[表2]所示Topic，创建步骤请参考[创建Topic](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-008.html)。
    表2Topic参数 
   | 名称        | 消息类型 |
   |:---|:---|
   | topic-01 | 普通 |
      
   
3. 创建如[表3]所示消费组，创建步骤请参考[创建消费组](https://support.huaweicloud.com/usermanual-hrm/hrm-ug-013.html)。
    表3消费组参数 
   | 名称      | 最大重试次数 | 是否允许以广播模式消费 | 是否顺序消费 |
   |:---|:---|:---|:---|
   | group-01 | 16    | 否             | 否      |
      
   
4. 购买1台ECS服务器（区域、可用区、虚拟私有云、子网、安全组与[RocketMQ实例]保持一致，Linux系统），具体步骤请参考[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
5. 在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
   ```
   
6. 下载测试工具。
   ```
   wget https://dms-demos.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip
   ```
   
7. 解压测试工具。
   ```
   unzip rocketmq-tutorial.zip
   ```
   
 
#### 测试命令
**生产命令：**
在"benchmark"文件夹下，执行如下命令：
```
sh producer.sh -n "${连接地址}" -t ${Topic名称} -s ${消息大小} -w ${生产者线程数}
```
 表4生产消息参数说明 
| 参数名称    | 说明                                                                | 取值样例                                   |
|:---|:---|:---|
| 连接地址   | RocketMQ实例的连接地址，在RocketMQ控制台的"概览 \> 连接信息"中获取。                   | 192.168.111.182:8100;192.168.111.14:8100 |
| Topic名称 | RocketMQ实例下创建的Topic名称，从[表2]中获取。 | topic-01                                  |
| 消息大小     | 自定义生产消息的大小。 RocketMQ支持的最大消息大小是4 MB。   | 3800（单位：字节）                             |
| 生产者线程数   | 生产者的线程数。                                                       | 256                                      |
   
将[表4]的取值示例代入命令示例中，执行如下命令生产消息：
```
sh producer.sh -n "192.168.111.182:8100;192.168.111.14:8100" -t topic-01 -s 3800 -w 256
```
**消费命令：**
在"benchmark"文件夹下，执行如下命令：
```
sh consumer.sh -n "${连接地址}" -t ${Topic名称} -g ${消费组名称}
```
 表5消费消息参数说明 
| 参数名称      | 说明                                                              | 取值样例                                    |
|:---|:---|:---|
| 连接地址    | RocketMQ实例的连接地址，在RocketMQ控制台的"概览 \> 连接信息"中获取。                   | 192.168.111.182:8100;192.168.111.14:8100 |
| Topic名称 | RocketMQ实例下创建的Topic名称，从[表2]中获取。 | topic-01                                |
| 消费组名称  | RocketMQ实例下创建的消费组名称，从[表3]中获取。  | group-01                                |
   
将[表5]的取值示例代入命令示例中，执行如下命令消费消息：
```
sh consumer.sh -n "192.168.111.182:8100;192.168.111.14:8100" -t topic-01 -g group-01
```
#### 测试结果参考
表6测试结果参考 
| 性能指标   | rocketmq.b2.large.4 | rocketmq.b2.large.8 | rocketmq.b2.large.12 |
|:---|:---|:---|:---|
| 实例生产速率 | 1008.500 Count/s    | 2019.710 Count/s     | 3011.640 Count/s     |
| 实例消费速率  | 1008.520 Count/s   | 2019.710 Count/s   | 3010.590 Count/s      |
| 平均生产时延   | 26.336 ms           | 8.788 ms           | 5.876 ms             |
   
