测试目的
试验MMQ(MQTT 分布式服务器)在低性能主机中实现一万连接和百万消息吞吐的基准测试,本次测试使用了 3 个 MMQ 节点的集群,每个节点所在机器为华为云。
测试场景
本次测试使用华为云主机(1vCPUs | 1GiB | s6.small.1)和弹性公网1 Mbit/s,3 个 MMQ 节点和测试机在同一个 vpc 中,主要进行了 1 万的 MQTT 连接加上 QoS0 百万消息吞吐具体如下所示。
注:如果不做特别说明,所有的连接默认都设置了 300 秒的心跳时间,所有的消息 payload 均为 50 字节。
1万 MQTT 连接、QoS0 广播场景百万消息吞吐
1万 MQTT 客户端以每秒 1000的新增连接速率接入MMQ 集群,连接完成后每秒向MMQ集群发送消息。因此,总的消息发布吞吐率为每秒 10000 条。
测试结果概述
- 平均连接速率达到 2000条/秒,连接平均响应时间 4.2ms
- 每个节点 MMQ CPU 平均使用 64%,1万客户端全部连接后消息收发期间每节点 MMQ CPU使用范围为 50%~70%
- 每个节点 MMQ 内存平均使用 500M,1万客户端全部连接后消息收发期间每节点 MMQ 内存使用范围为 400GMB~500MB
|
| 最小响应时间 (s) | 最大响应时间(s) | 平均响应时间(s) | 平均吞吐量 | MMQ CPU 使用 | MMQ 内存使用(M) |
| MQTT 连接 | 0.002 | 0.03 | 0.0042 | 19978 | 50%~70% | 400~500 |
| MQTT Pub | / | / | / | 1000 |
测试环境及部署
华为云中的测试部署如下所示,本次测试共使用 1 台测试机,模拟 1万 MQTT 连接和1万QoS 0 消息吞吐,JMeter 提供的基于 JMeter MQTT 插件的测试工具来模拟业务测试场景.
MMQ / JMeter配置:
| 节点 | 数量 | 版本 | 操作系统 | CPU | 内存 | 硬盘 |
| MMQ | 3 | 1.1.1 | Centos 8 | 1核 | 1G | 40G |
| JMeter压力测试机 | 1 | 5,4,1 | Win 10 | 8核 | 16G | 40G |



