200 万连接测试:EMQX WebSocket 性能深度解析

本文内容来自“EMQ中文社区”。

在实时 Web 应用领域,从实时金融仪表盘和协作白板,到交互式游戏和大规模物联网车队管理,底层通信协议是影响体验的关键。MQTT 是物联网的事实标准,MQTT over WebSocket 已成为连接后端服务和浏览器客户端的首选解决方案。它既提供了强大的双向通信,又能轻松穿越企业防火墙。

随着应用程序规模的扩大,一个关键问题浮现:单个 MQTT broker 能承载多少 WebSocket 并发连接?在 EMQX,我们不断突破技术极限。在成功完成 1 亿次 MQTT/TCP 连接测试后,我们将目光转向了 WebSockets 协议。

现在,我们很高兴地宣布,EMQX 5.10 单集群已成功稳定支持 200 万 MQTT over WebSocket 并发连接。这一里程碑不仅验证了 EMQX 的大规模扩展能力,更展现了卓越的低延迟特性和资源利用效率。

本文将带您深入探索 200 万连接背后的技术征程。我们将详细解读测试环境设置、各阶段结果以及实现这一卓越性能的 EMQX 架构原理。

200 万连接测试:EMQX WebSocket 性能深度解析

挑战:从 50 万到 200 万连接

我们的目标是模拟现实世界的大规模应用场景:海量 WebSocket 客户端各自订阅独立主题,并持续接收消息流。为此,我们设计了渐进式的基准测试,通过逐阶段倍增连接负载,精准观测 EMQX 的扩展能力。

测试场景:

  • 连接:每个客户端建立一个持久的 WebSocket 连接。
  • 订阅:每个客户端订阅一个唯一的主题(t/%i),QoS 为 1。
  • 发布:相应数量的发布者客户端向这些唯一主题发送消息。
  • 消息流:一对一通信,每个连接每 10 秒大约发送 1 条消息。
  • 消息大小: 256 字节。

所有测试均使用我们基于 Terraform 的开源性能测试框架和强大的 emqtt-bench 负载生成工具进行。

第一阶段:建立 50 万连接为基础

本节将为您提供一个快速指南,介绍如何安装最新版本的 EMQX 5.10.0,以及如何配置和使用 EMQX NATS 网关。

千里之行,始于足下。首先,我们需要建立起 50 万个并发 WebSocket 连接,以确定基准性能。

EMQX 集群设置:

  • 节点:2 个 EMQX 核心节点
  • 实例类型:AWS c7g.4xlarge(16 vCPU,32 GiB RAM)

结果:

200 万连接测试:EMQX WebSocket 性能深度解析

可以看到,该集群轻松承载了 50 万个并发连接,CPU 与内存占用率始终维持在健康阈值内,且仍保留充足性能空间。第一阶段的成功证明了测试环境的可靠性,为后续更高强度的挑战奠定了坚实基础。

200 万连接测试:EMQX WebSocket 性能深度解析
EMQX 仪表板显示 500k WebSocket 连接

第二阶段:突破 100 万连接大关

本节将通过 Python 客户端代码示例,演示如何连接 NATS 网关,实现 NATS 客户端与 MQTT 客户端之间的双向消息互通。

在确定基准性能后,我们将连接规模倍增至 100 万,并验证 EMQX 是否具备线性扩展能力。为了应对激增的负载压力,我们对集群节点进行了纵向扩容。

EMQX 集群设置:

  • 节点:2 个 EMQX 核心节点
  • 实例类型:AWS c7g.8xlarge(32 vCPU,64 GiB RAM)

结果:

200 万连接测试:EMQX WebSocket 性能深度解析
200 万连接测试:EMQX WebSocket 性能深度解析
EMQX 仪表板显示 1M WebSocket 连接

第三阶段:挑战 200 万连接

仅用两个节点就实现 100 万连接令人印象深刻,但为了突破 200 万连接,我们采用了标准 EMQX 架构进行大规模部署:将核心节点和复制节点分离。

为什么要使用核心节点和复制节点:这种架构是 EMQX 可扩展性的基石。

  • 核心节点:负责集群管理、路由信息和数据持久化。它们是集群的「大脑」。
  • 复制节点:采用无状态设计,负责处理繁重的客户端连接和消息流量。它们可以无缝地在集群中添加或移除,从而实现容量的水平扩展。

通过这种分离部署架构,可以有效避免管理开销干扰连接性能,这在超大规模场景中至关重要。

EMQX 集群设置:

  • 核心节点:2 x c7g.2xlarge(8 vCPU,16 GiB RAM)
  • 复制节点:4 x c7g.8xlarge(32 vCPU,64 GiB RAM)

结果:

200 万连接测试:EMQX WebSocket 性能深度解析

资源使用情况清晰展现了架构优势:

  • 核心节点:CPU 占用率极低(约 1%),因为它们专用于管理任务,而不是连接处理。
  • 复制节点:平均 CPU 使用率在 56% – 69% 之间,RAM 占用维持在 54% 左右。四个复制节点高效协同,将 200 万连接均衡分配,每个节点处理约 50 万客户端。
200 万连接测试:EMQX WebSocket 性能深度解析
EMQX 仪表板显示 2M WebSocket 连接

这项创新不仅显著简化了复杂的集成挑战,消除了对定制桥接或独立消息中间件的需求,从而降低了开发和运营成本,更开启了物联网、微服务和实时控制等领域应用的新篇章。无论是智能工厂中的传感器数据流向云端微服务进行实时分析,还是后端控制系统向边缘设备发送指令,EMQX NATS 网关都能够确保数据在不同协议生态系统之间自由、高效地流动。   

核心指标:端到端延迟表现

处理海量连接是基础,保持低延迟是优势。在 200 万个连接和每秒近 10 万条消息的吞吐量下,系统的端到端延迟极低。

200 万连接测试:EMQX WebSocket 性能深度解析

在此规模下,99% 的延迟低于 5 毫秒,这充分证明了 EMQX 内部消息传递的效率以及其底层 Erlang/OTP 运行时的性能。对于毫秒必争的应用来说,这种级别的响应速度至关重要。

关键技术见解

仅用两个节点就实现 100 万连接令人印象深刻

  • 线性扩展能力是关键:

从 50 万到 100 万连接的测试证明,可以通过增加硬件资源来可预测地扩展 EMQX。而 200 万连接的突破则进一步验证,可以通过扩展集群复制节点规模来进一步提升系统容量。

  • 核心 – 复制架构优势:

对于百万级连接的部署场景,核心 – 复制架构模型是行之有效的方案。该架构在确保集群保持稳定且易于管理的同时,让复制节点能够专注于性能提升。

  • 高效的底层技术栈:

如果没有高度优化的技术堆栈,这种性能水平是不可能实现的。EMQX 受益于久经考验的 Erlang/OTP 环境(专为构建并发、容错系统而设计),以及用于处理 WebSocket 连接的高性能 Cowboy Web 服务器。

  • 关于负载均衡器的说明:

为确保最佳性能并排除干扰因素,本次测试中负载生成器直接连接至 EMQX 复制节点。在生产环境中,建议在复制节点前端部署高性能 TCP/SSL 负载均衡器。测试结果表明,EMQX 本身并非系统瓶颈。

结语

仅用两个节点就实现 100 万连接令人印象深刻

数字世界对网络实时交互的需求永无止境。本次基准测试表明,EMQX 已完全具备满足这一需求的能力。通过在单个集群中成功支持 200 万个 MQTT over WebSocket 并发连接,并保持卓越的低延迟表现,EMQX 已经成为与浏览器客户端实时传输数据的大规模应用的首选方案。

无论您正在构建下一代协作工具、金融交易平台,还是基于 Web 仪表盘的大规模物联网网络,EMQX 都能提供您所需的性能、可扩展性和可靠性,让您没有后顾之忧地开展业务部署。

欢迎感兴趣的用户亲身体验!

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论