测试报告
性能压测
100 万设备量级:alinkiot 对比 EMQX 5.8.7 开源版本
- 同样基于 32C64GB×3 的配置,模拟 100 万设备按照 10000 条/秒的速率发送上行数据,alinkiot 相比 EMQX CPU 资源消耗降低 19%~22%,内存消耗降低 2% 左右;
- 同样基于 32C64GB×3 的配置,模拟 100 万设备按照 100000 条/秒的速率发送上行数据,alinkiot 相比 EMQX CPU 资源消耗降低 11%~16%,内存消耗降低 11%~13% 左右;
- 同样基于 32C64GB×3 的配置,模拟 100 万设备按照 125000 条/秒的速率发送上行数据,alinkiot 可以稳定运行,但 EMQX 会挂掉,无法正常提供服务;
- 同样基于 32C64GB×3 的配置,alinkiot 可承载的最大上行 TPS 为 159000,而 EMQX 最大 TPS 在 110000 左右。
10 万设备量级:alinkiot 对比
上行消息未推送到 Kafka(EMQX 5.8.7 开源版本)
基于 32C64GB×1 的配置,使用同一台主机分别部署 alinkiot 和 EMQX 进行压测,设备量级 10 万,匿名登录速率 5000 个/秒,上行消息速率 10 万 TPS,消息大小 1KB 等条件均保持一致,持续运行 10 分钟,共计发送消息 6000000 条,消息转发成功率 100%。alinkiot CPU 资源消耗峰值为 77%,比 EMQX 少 8%;内存资源消耗峰值为 8.6%,比 EMQX 少 6.4%。
上行消息会推送到 Kafka(EMQX 4.3.6 企业版)
基于 32C64GB×1 的配置,采用 Docker 部署方式部署 alinkiot,设备量级 10 万,匿名登录速率 5000 个/秒,上行消息速率 10 万 TPS,消息大小 1KB 等条件和 EMQX 官网报告中保持一致。持续运行 1 小时,共计发送消息 360000000 条,消息流转成功率 100%,alinkiot CPU 资源消耗峰值为 96%,比 EMQX 多 8%;内存资源消耗峰值为 9.3%,比 EMQX 少 3.2%。
亮点结论: 100 万设备量级压测中,TPS 加压至 125000 时 EMQX(开源版)服务崩溃,而 alinkiot 持续稳定支撑至 159000 TPS,CPU 峰值仅 92%;同资源规格下,alinkiot 的 CPU / 内存峰值占用全程低于 EMQX 开源版(10 万设备量级、不推 Kafka 场景亦是如此)。企业版 + Kafka 场景下 alinkiot 内存占用更低(9.3% vs 12.5%),但 CPU 峰值略高(96% vs 88%),属真实压测结果,非单方面碾压。
压测结果汇总
基于 32C64GB×3 的配置,对比 alinkiot 和 EMQX 开源版本的性能(上行消息不推 Kafka)
设备量级:100 万,消息大小:1KB,QoS:1
| 对比组 | MQTT Broker 类型 | 版本 | 上行 TPS | CPU 峰值使用率 | 内存峰值使用率 |
|---|---|---|---|---|---|
| 第一组 | EMQX | 5.8.7 (open source) | 10000 | 46%、43%、45% | 21.6%、21.0%、19.4% |
| alinkiot | — | 10000 | 24%、24%、26% | 19.0%、18.4%、19.7% | |
| 第二组 | EMQX | 5.8.7 (open source) | 100000 | 81%、80%、81% | 37.8%、47.3%、36.1% |
| alinkiot | — | 100000 | 70%、64%、66% | 24.6%、23.8%、25.0% | |
| 第三组 | EMQX | 5.8.7 (open source) | 125000 | emqx 服务挂了 | emqx 服务挂了 |
| alinkiot | — | 125000 | 80%、71%、73% | 24.3%、23.4%、24.2% |
基于 32C64GB×1 的配置,对比 alinkiot 和 EMQX 开源版本的性能(上行消息不推 Kafka)
设备量级:10 万,消息大小:1KB,QoS:1
| MQTT Broker 产品 | Broker 资源配置 | 上线速率 | 心跳时间 | 消息发送 TPS | CPU 消耗峰值 | 内存消耗峰值 |
|---|---|---|---|---|---|---|
| EMQX (5.8.7 Open Source) | 32C64GB×1 | 5000 | 300 秒 | 10 万 | 85% | 15% |
| alinkiot | 32C64GB×1 | 5000 | 300 秒 | 10 万 | 77% | 8.6% |
基于 32C64GB×1 的配置,对比 alinkiot 和 EMQX 企业版本的性能(上行消息推 Kafka)
设备量级:10 万,消息大小:1KB,QoS:1
| MQTT Broker 产品 | Broker 资源配置 | Kafka 配置 | 上线速率 | 心跳时间 | 消息发送 TPS | CPU 消耗峰值 | 内存消耗峰值 |
|---|---|---|---|---|---|---|---|
| EMQ X v4.3.6 | 32C64GB×1 | 16C64GB×1 | 5000 | 300 秒 | 10 万 | 88% | 12.5% |
| alinkiot | 32C64GB×1 | 16C64GB×1 | 5000 | 300 秒 | 10 万 | 96% | 9.3% |