文档首页/ 分布式消息服务RocketMQ版/ 用户指南/ 测试实例性能/ 测试4.8.0版本RocketMQ实例性能(极限场景)
更新时间:2025-12-08 GMT+08:00
分享

测试4.8.0版本RocketMQ实例性能(极限场景)

本章节主要测试RocketMQ实例4.8.0版本不同产品规格在发送1KB大小的消息,同时向大量Topic进行生产,每个Topic被两个消费组订阅,每个消费组下启动一个消费者进行消费,且消费堆积数较大时,得到实例的生产消费性能。

测试环境

进行测试前,您需要先构建如下的测试环境:

  1. 购买如表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

    开启

    关闭

    开启

  2. 创建Topic,创建步骤请参考创建Topic

    极限场景需要创建的Topic数量见表5所示,每个Topic队列数为8。

  3. 创建消费组,创建步骤请参考创建消费组

    极限场景中每个Topic需要两个消费组,Topic数量见表5所示。

  4. 创建如表2所示用户,创建步骤请参考配置RocketMQ ACL用户
    表2 用户参数

    名称

    管理员

    默认Topic权限

    默认Topic权限

    密钥

    test

    不开启

    发布+订阅

    订阅

    自定义

  5. 购买ECS服务器(区域、可用区、虚拟私有云、子网、安全组与RocketMQ实例保持一致,Linux系统),具体步骤请参考购买弹性云服务器

    由于启动的客户端数量较多,需要购买较多ECS作为测试机,每台测试机可同时启动不超过50个测试命令。

  6. 在ECS中安装Java JDK,并配置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

如上命令中,-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支持的最大消息大小是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
表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

测试结果参考

以下性能规格数据是在特定测试条件下获得的参考值,不保证一定能达到。随着底层硬件和软件的不断更新,本页面的内容也将定期更新。建议您针对业务场景进行压测,并参考配置RocketMQ监控告警对实例进行监控,及时发现性能瓶颈,扩容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

网络出流量

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%

相关文档