【云技术在线】提供性能测试/压力测试服务。
如果需要压测 MQTT 服务,则需使用 MQTT 插件和 JMeter 生成 JMeter 脚本,再将脚本上传到 PTS 控制台进行压测。
前提条件
- 已部署可在公网访问的 MQTT 服务。
- 已安装 JMeter 5.x 版本。
背景信息
MQTT 是专为移动互联网(Mobile Internet)、物联网(IoT)设计的超轻量级消息协议,用于连接移动端与云服务双向通信,广泛应用于各种应用领域,如端向云汇报状态、云向端推送消息、端向端发送消息(即时聊天)等场景。
现有使用 MQTT 发布广播消息,共有 5 个订阅客户端,每个消息订阅客户端都收到一份消息的场景,本文以此类场景为例介绍如何使用 PTS 的 JMeter 模式压测 MQTT 服务。
步骤一:安装 MQTT 插件
步骤二:准备客户端信息 CSV 文件
每个 MQTT 客户端需要提供以下信息:
- 用户名和密码。
为保证安全,MQTT 服务器通常需要认证,最常用的认证方式即用户名和密码认证。
- 客户端 ID(ClientId)。
客户端 ID 是全局唯一 ID,客户端唯一标识,通常与用户设备关联。如关联手机序列号,则可通过客户端 ID 变化检测用户是否更换了新手机。每个用户可能有一个或多个客户端 ID 。
客户端信息 CSV 文件应包含 UserName 、 Password 、 ClientId 这 3 列数据。例如期望压测 10000 台客户端设备同时在线的场景,则需要准备 10000 条客户端信息。
如客户端信息示例 CSV 文件 client.csv
内容如下:
UserName,Password,ClientId
pts_test,pts-pass1,client-test0001
pts_test,pts-pass1,client-test0002
pts_test,pts-pass1,client-test0003
说明
- 做压测时建议使用测试用户数据,避免泄露真实用户信息,避免真实用户产生脏数据。
- 使用预先准备的测试客户端 ID 方便服务器做客户端 ID 校验,同时方便跟踪排查问题。
- 手动编辑 CSV 文件很容易出错,推荐使用 EXECL、Numbers 等软件导出,或使用 Apache commons-csv程序生成。
步骤三: 本地编辑 JMeter 脚本
本教程以 JMeter 5.x 英文图形界面为例。
步骤四:使用 PTS 压测 MQTT 消息
在 PTS 控制台使用 JMeter 压测场景,上传 mqtt-jmeter 插件 JAR 包、JMeter 脚本和客户端信息 CSV 文件。
压测结果分析
开始压测后,压测过程中可看到实时并发数(发布消息客户端和订阅消息客户端总数),TPS 和 RT(消息延迟)等统计信息。
本示例中发布消息为广播,每个消息订阅客户端都收到一份消息,总共有 5 个订阅客户端,因此可看到接收消息数约是发布消息数的 5 倍。压测结束后将生成压测报告,可查看场景并发、TPS、响应时间等变化趋势图和统计数据汇总等信息。如果出现错误,还可以结合请求采样日志和 JMeter 日志等进行排查。
压力测试/性能测试服务
¥278.00 – ¥58,158.00