MQTT 1.9.1-beta.1 带来桌面客户端性能提升,优化使用资源消耗
十二月末,MQTT X 团队发布了 1.9.1-beta.1 版本,这也是 MQTT X 的首个公共测试版。我们希望能够通过测试版本,让更多用户参与到 MQTT X 的测试中来,和我们一起打造一个更加稳定的版本,进而帮助用户轻松使用 MQTT X 完成 MQTT 服务与应用的开发。
在 1.9.1-beta.1 版本中,我们主要优化了 MQTT X 桌面端使用时的部分性能问题,减少了在使用过程中的卡顿现象和内存消耗,优化数据存储方式,减少数据库崩溃的情况;在 MQTT X CLI 中加入自动重连功能,并支持将配置参数保存到配置文件中,减少了每次使用时的参数输入;同时也修复了一些已知的问题。
目前团队正专注于 1.9.1-beta.2 版本的研发,将修复更多社区反馈和测试出的问题,对性能进行更多优化。
最新版本:1.9.1-beta.2 版本
桌面客户端
性能优化
在目前的用户反馈中,我们发现了一些性能问题,比如在使用过程中会出现卡顿现象、内存消耗过大等。我们在 1.9.1-beta.1 版本中对这些问题进行了优化。
我们使用 MQTT X CLI 的 bench
命令,设置以每秒 100 条消息的速率向 mqttx/bench
主题发布消息,并将 MQTT X 运行在开发环境中,连接上同一个 MQTT 服务,然后订阅 mqttx/bench
主题,最后使用性能监控工具来对 MQTT X 进行性能监控,在差不多同等时间和环境内来对比区分我们在优化前后的性能变化,以便于更好地了解当前的优化效果。
bench
命令如下:
mqttx bench pub -c 100 -t mqttx/bench -m hello
JS heap size 是指 JavaScript 引擎在运行时分配的内存大小
优化前:
优化后:
我们可以看到内存使用在优化前接近 600MB 左右,CPU 使用率基本维持 98% 左右,优化后内存维持在 380MB 左右,CPU 使用率维持在 60% 左右,内存和 CPU 的使用率都有了明显的下降。后续我们将继续优化这些性能问题,可以基本满足用户使用时在接收大量主题消息的情况下,仍然能够保持较低的 CPU 和内存使用率。
支持批量存储
在该测试版中,我们支持了消息和数据的批量存储,当用户接收大量的消息时,避免了数据库的频繁写入,提高了性能,同时也减少了数据库压力和内存与 CPU 消耗,防止部分数据库在使用时崩溃的问题。
该性能优化目前仍在进行中,预计将在 1.9.1 正式版中,全面优化这些卡顿及性能问题。
主题输入框提示
在之前的版本中,很多新手用户在使用时无法快速准确的找到输入主题的地方。当建立连接后,我们需要手动输入主题并填写 payload 后,才能够发送消息。
在该测试版中,我们优化了主题输入框的提示功能,当用户未输入主题时,提示框将显示高亮,以便提醒用户在界面中高亮的主题输入框内输入发送主题。
命令行客户端
MQTT X CLI 在 1.9.1-beta.1 的测试版中,主要是添加了以下两个较大的新功能,为用户提供更好的使用体验。
支持自动重连
命令行工具同样也支持了自动重连功能,当连接断开时将自动重连,无需手动重连。支持设置重连周期以及最大重连次数。
# 以连接命令时的自动重连次数配置为例,修改为 5 次,重连周期为 5000 毫秒 mqttx conn -h 'broker.emqx.io' -p 1883 --maximun-reconnect-times 5 --reconnect-period 5000
支持配置文件
支持将连接、订阅和发布时的参数保存到配置文件中,减少用户在使用时的参数配置次数,快速复用配置文件中的参数来连接、订阅和发布消息。保存和加载配置文件的路径也可以由用户自行定义。
# 以连接命令时的配置文件为例,保存配置文件到当前目录下的 mqttx.json 文件中 mqttx conn -h 'broker.emqx.io' -p 1883 --save mqttx.json # 加载当前目录下的 mqttx.json 文件中的连接配置 mqttx conn --config mqttx.json
上述两个新功能同样支持在 MQTT X CLI 的 bench 命令中使用,方便用户性能测试时快速测试连接、订阅和发布消息等。
未来规划
MQTT X 还在持续增强完善中,以期为用户带来更多实用、强大的功能,为物联网应用与服务的测试和开发提供便利。接下来我们将重点关注以下方面,敬请期待:
接收消息和存储时的性能优化,大量消息不卡顿(继续减少 CPU 和内存的消耗)
可配置忽略 QoS 0 的消息存储,以减少存储空间的占用
MQTT Debug 功能
接收到的消息可以进行自动图表绘制
插件功能
脚本测试自动化(Flow)
版权声明: 本文为 EMQ 原创,转载请注明出处。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
v2.3 发布,新增西门子 Fetch/Write 驱动
十二月,我们发布了 Neuron 2.3.0 版本。该版本主要新增了监控模块,Neuron 内部的关键数据可通过 HTTP API 对外暴露;南向增加了西门子 FetchWrite 驱动,主要用于西门子 S7-300/400 系列 PLC;北向增加 WebSocket 应用,支持读写数据上报。此外,IEC60870-5-104 驱动功能进行了扩展,新增对时请求以及点位写控制支持。 新增监控模块 2.3 版本新增的监控模块通过 HTTP API 将 Neuron 内部的关键数据对外暴露,方便用户对 Neuron 以及设备进行监控管理。 协议驱动更新 新增西门子 FetchWrite 驱动 西门子的以太网通信模块提供了一种基于 TCP 的 FETCH WRITE 通信方式,该方式无需在 PLC 侧编程就可以得到 PLC 内的所有数据。 该驱动基于 FetchWrite 标准协议实现,用于带有网络扩展模块 CP443 的西门子 PLC 访问。可支持 DB、M、I、Q、PEPA、Z、T 等区域的多种数据类型读写。 IEC60870-5-104 驱动 增加对时请求,此驱动将会周期性地向设备发送对...
- 下一篇
eKuiper 连接格式优化,支持自定义
12月, eKuiper 团队继续专注于 1.8.0 版本新功能的开发。我们重构了外部连接(source/sink) 的格式机制,更加清晰地分离了连接、格式和 Schema,同时支持了格式的自定义;受益于新的格式机制,我们大幅完善了文件源(file source)的能力,支持定时监控文件系统及各种格式的文件,并且采用流的方式消费文件系统数据;最后,我们增加了完整数据包括规则和配置的导入导出功能,支持节点的迁移。另外,我们也修复了一些问题,并发布到 1.7.x 版本中。 12月的版本发布包括: v1.8.0-alpha.3:包含 1.8.0 已开发完成的新功能 v1.7.4:包含 bug fixes v1.7.5:包含 bug fixes 连接格式优化和自定义:序列化和 Schema eKuiper 通过 source/sink 与外部系统进行连接、读入或写出数据。以 source 为例,每种类型的 source 读取数据时都需要经过连接(connect)和序列化(serialization)两个步骤。例如,MQTT source,连接意味着遵循 MQTT 协议连接 broker,而序列...
相关文章
文章评论
共有0条评论来说两句吧...