fmq-集群版压测
fmq-压测
下面为单节点压测
一、测试背景
随着业务的快速拓展,基于 MQTT 协议构建的应用系统在消息通信性能方面面临着更高要求。为了精准评估当前 4 核 8G 单节点服务器在 MQTT 消息通信场景下的性能表现,为后续业务规模扩张及服务器资源合理规划提供有力数据支撑,特此开展本次压测工作。
二、测试环境
(一)硬件环境
服务器配置:采用 1 台 4 核 8G 服务器作为 MQTT 服务器,承载 FMQ MQTT Broker 运行。轻量级服务器
压测客户端:部署 4 台 4 核 8G 的轻量级服务器作为压测客户端,用于模拟海量 MQTT 客户端向服务器发起请求。
(二)软件环境
操作系统:服务器及 4 台压测客户端均选用 [操作系统名称及版本]。该操作系统在系统资源调度、网络协议栈优化等方面表现出色,能够充分发挥硬件性能。针对本次测试,对操作系统的内核参数进行了优化,如调整文件描述符数量限制,增大网络缓冲区大小等,以适配高并发的测试场景。
MQTT Broker:在服务器上运行 EMQ X [版本号]。为提升性能,对其默认配置进行了精细优化,包括调整线程池大小至 [具体数值],依据服务器硬件资源及测试负载预估,该数值可确保线程资源得到充分且合理利用;优化缓冲区设置,将消息接收缓冲区大小扩大至 [具体字节数],消息发送缓冲区大小调整为 [具体字节数],有效减少数据丢包与延迟。
压测工具:在 4 台压测客户端上均安装 emqtt_bench压测工具。该工具功能强大,可精确调控并发连接数、消息发送频率及消息大小等关键参数。通过合理分配每台压测客户端的测试任务,如每台分别负责模拟不同数量范围的并发连接,可实现对服务器全方位、多层次的压力测试。
三、测试方案
(一)测试指标
**连接数:**单节点MQTT服务器可以承载的客户端数量
并发连接数:用于衡量服务器同时处理客户端连接的能力上限。
消息发送速率:反映单位时间内客户端向服务器发送消息的数量。
消息接收速率:体现单位时间内服务器成功接收并处理的消息数量。
消息延迟:即从客户端发送消息起,至服务器接收并处理完毕返回确认消息所经历的时间间隔。
CPU 使用率:展示服务器在压测期间 CPU 资源的占用比例。
内存使用率:呈现服务器在压测过程中内存资源的消耗程度。
(二)测试场景
并发连接数递增测试:测试从 100 个并发连接起步,以每次递增 500 个连接的幅度,逐步提升至 5000 个并发连接。在每个并发连接数设定下,保持 10 分钟的稳定运行时长,期间持续采集各项性能指标数据。在这一过程中,4 台压测客户端按照预先规划的比例分担并发连接任务,例如第一台负责 0 - 1200 个连接,第二台负责 1201 - 2400 个连接,以此类推,确保负载均匀分布。
固定并发连接数下消息速率测试:依次设置并发连接数为 1000、2000、3000、4000 和 5000。在每个并发连接数条件下,从每秒 100 条消息的发送速率开始,每次递增 100 条消息,直至服务器出现明显性能瓶颈,如消息延迟急剧上升、消息丢失等状况。每个测试点同样维持 10 分钟稳定运行,采集性能数据。在该场景下,4 台压测客户端协同工作,根据设定的消息发送速率,合理分配各自的消息发送量,保证测试的准确性与可靠性。
(三)测试数据
纯连接压测
由于服务器资源有限,实际的连接数30w+以上
内存使用率

jvm使用率

服务器情况

5w TPS压测

服务器使用情况

10wTPS压测

服务器使用情况

15wTPS压测

服务器使用情况

运行1小时后
运行时间是1小时21分钟

服务器使用情况

消息内容:模拟真实业务消息,消息大小固定为 10字节,以贴合实际应用场景。
QoS 等级:本次测试重点针对 QoS 0 等级的消息展开,这两个等级在常见业务场景中应用广泛,能够有效检验服务器在不同服务质量要求下的性能表现。