高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

物联网设备连接和部署规模的不断扩大,对物联网消息平台的可扩展性和健壮性提出了更高的要求。为了确认云原生分布式 MQTT 消息服务器 EMQX 的性能表现可以充分满足当今物联网连接规模的需求,我们在 23 个节点的 EMQX 集群上建立了 1 亿个 MQTT 连接,对 EMQX 的可扩展性进行了压力测试。

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

在本测试中,每个 MQTT 客户端订阅了一个唯一的通配符主题,这比直接主题需要更多的 CPU 资源。消息发布时,我们选择了一对一的发布者-订阅者拓扑模型,每秒处理消息可达 100 万条。此外,我们还比较了在使用两个不同的数据库后端——RLOG DB 和 Mnesia 时,最大订阅率如何随着集群大小的增加而变化。本文将详细介绍测试情况以及在此过程中面临的一些挑战。

测试方法

​​

我们使用了 AWS CDK 来进行集群测试的部署和运行,其可以测试不同类型和数量的实例,还可以尝试使用 EMQX 的不同开发分支。压测脚本:

https://github.com/emqx/cdk-emqx-cluster

我们在负载生成器节点中使用了我们的 emqtt-bench 工具生成具有各种选项的连接/发布/订阅流量,并使用 EMQX 的 Dashboard 和 Prometheus 来监控测试的进度和实例的健康状况。

我们用不同实例类型和数量进行了逐一测试。在最后几次测试中,我们决定对 EMQX 节点和 loadgen 使用 c6g.metal 实例,对集群使用”3+20”拓扑,即 3 个参与写入事务的核心节点,以及 20 个为只读副本并将写入委托给核心节点的复制节点。

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

在这些测试中未使用任何负载均衡器,loadgen 直接连接到每个节点。

在测试中,我们首先连接了所有订阅者客户端,然后才开始连接发布者。只有在所有发布者都连接后,它们才开始每 90 秒进行一次消息发布。在本文报告的 1 亿连接测试中,订阅者和发布者连接到 broker 的速率为 16000 连接/秒,不过我们相信集群可以保持更高的连接速率。

测试结果

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

上面的动画展示了一对一发布-订阅测试的最终结果。我们建立了 1 亿个连接,其中 5000 万是订阅者,另外 5000 万是发布者。通过每 90 秒发布一次消息,我们可以看到平均入站和出站速率达到了每秒 100 万条以上。

在发布高峰期,20 个复制节点(这些节点是连接的节点)中的每一个节点在发布过程中平均用到90% 的内存(约 113GiB)和约 97% 的 CPU(64 个 arm64 内核)。处理事务的 3 个核心节点使用 CPU 较少(使用率不到 1%),并且只使用了 28% 的内存(约 36GiB)。256 字节有效负载的发布过程中需要的网络流量在 240MB/s 到 290 MB/s 之间。在发布高峰期,loadgen 需要几乎全部内存(约 120GiB)和整个 CPU。

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

测试期间 EMQX 节点对 CPU、内存和网络使用情况的 Grafana 截图

为了将 RLOG 集群与等效的 Mnesia 集群进行比较,我们使用了另一种总连接数较少的拓扑:RLOG 使用 3 个核心节点+7 个复制节点,Mnesia 集群使用 10 个节点,其中 7 个节点进入连接。我们以不同速率进行连接和订阅,不进行发布。

下图展示了我们的测试结果。对于 Mnesia,连接和订阅节点的速度越快,观察到的“扁平化”行为就越多,即集群无法达到目标最大连接数,在这些测试中,目标最大连接数为 5000 万。而对于 RLOG,我们可以看到它能够达到更高的连接速率,而集群不会表现出这种扁平化行为。由此我们可以得出结论,使用 RLOG 的 Mria 在连接速率较高的情况下比我们过去采用的 Mnesia 后端性能表现更好。

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

经过一系列测试并获得这些令人满意的结果之后,我们认为 Mria 提供的 RLOG 数据库后端可在 EMQX 5.0 中投入使用。它已经成为当前主分支中的默认数据库后端。


最后,赠送出一张 20元优惠券,邀您加入中国最大 IoT 物联网开发者社区获取1000+行业资料

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

往期推荐

☞ 中国云计算第一股关停 IoT云服务

☞ 2022年IoT平台趋势:私有化部署

☞ 国内MCU行业发展研究报告

☞ 2021年4G通信模组企业排行

☞ 国内4大 IoT物联网平台选型对比

☞ 云厂商的[IoT物联网平台]不香了吗?

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试

本文章来源于互联网,如有侵权,请联系删除!原文地址:高度可扩展,IoT 物联网场景 1 亿设备 MQTT 连接压力测试