桌面客户端性能提升,优化使用资源消耗

简介: 近期我们发布了1.9.1-beta.1版本:主要优化了MQTT X桌面端使用时的部分性能问题,优化数据存储方式,并在MQTT X CLI中加入自动重连功能。

十二月末,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 引擎在运行时分配的内存大小

优化前

优化前 图1.png

优化后

优化后 图2.png

我们可以看到内存使用在优化前接近 600MB 左右,CPU 使用率基本维持 98% 左右,优化后内存维持在 380MB 左右,CPU 使用率维持在 60% 左右,内存和 CPU 的使用率都有了明显的下降。后续我们将继续优化这些性能问题,可以基本满足用户使用时在接收大量主题消息的情况下,仍然能够保持较低的 CPU 和内存使用率。

支持批量存储

在该测试版中,我们支持了消息和数据的批量存储,当用户接收大量的消息时,避免了数据库的频繁写入,提高了性能,同时也减少了数据库压力和内存与 CPU 消耗,防止部分数据库在使用时崩溃的问题。

该性能优化目前仍在进行中,预计将在 1.9.1 正式版中,全面优化这些卡顿及性能问题。

主题输入框提示

在之前的版本中,很多新手用户在使用时无法快速准确的找到输入主题的地方。当建立连接后,我们需要手动输入主题并填写 payload 后,才能够发送消息。

在该测试版中,我们优化了主题输入框的提示功能,当用户未输入主题时,提示框将显示高亮,以便提醒用户在界面中高亮的主题输入框内输入发送主题。

主题输入框提示 图3.png

命令行客户端

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 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/mqttx-newsletter-202212

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
8月前
|
存储 缓存 数据库
优化性能与减少资源浪费:深入了解缓存策略
缓存策略是现代Web开发中关键的优化技术之一,它可以显著提高网站性能,降低服务器负载,并减少用户等待时间。在本博客中,我们将深入研究缓存策略的概念、不同类型的缓存和如何在项目中实施它们。
77 0
|
17天前
|
Java 关系型数据库 MySQL
服务器cpu 100%解决方案
服务器cpu 100%解决方案
15 0
|
9月前
|
编解码 监控 前端开发
Android平台GB28181设备接入端如何降低资源占用和性能消耗
Android平台GB28181设备接入端如何降低资源占用和性能消耗?
|
8月前
|
存储 前端开发
我对请求做了个性能小优化,提升了50%的页面性能
我对请求做了个性能小优化,提升了50%的页面性能
44 0
|
11月前
|
前端开发 JavaScript Java
移动端性能优化:减少应用的加载时间和内存占用
移动应用的性能对用户体验至关重要。在移动设备上,加载时间和内存占用是两个主要的性能指标。本文将介绍一些有效的技术和策略,帮助开发人员优化移动应用的加载时间并减少内存占用,以提升应用的性能和响应速度。
188 0
EMQ
|
存储 JSON 监控
MQTT X 1.9.1 发布:资源消耗降低 80%,稳定性大幅提升
MQTT 5.0客户端工具MQTT X 1.9.1稳定版本正式发布,CPU资源消耗与内存占用减少80%,整体性能大幅优化。
EMQ
154 0
MQTT X 1.9.1 发布:资源消耗降低 80%,稳定性大幅提升
|
机器学习/深度学习 人工智能 算法
速度高达百万帧/秒,颜水成团队开源RL环境并行模拟器,大幅节省CPU资源
在强化学习(RL)智能体模拟训练中,环境高速并行执行引擎至关重要。最近,新加坡 Sea AI Lab 颜水成团队提出一个全新的环境模拟并行部件 EnvPool,该部件在不同的硬件评测上都达到了优异的性能。
180 0
速度高达百万帧/秒,颜水成团队开源RL环境并行模拟器,大幅节省CPU资源
|
消息中间件 弹性计算 前端开发
T级内存,创建效率提升10倍以上,阿里云 KVM异构虚拟机启动时间优化实践
阿里云工程师李伟男和郭成在 KVM Forum 2020 上详细介绍了阿里云 KVM 虚拟机创建及启动时间优化的具体技术实现,本文根据其演讲整理而成。
T级内存,创建效率提升10倍以上,阿里云 KVM异构虚拟机启动时间优化实践
|
存储 监控 数据安全/隐私保护
|
存储 监控 数据中心
《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一2.1.4 运行容量管理
本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第2章 ,第2.1.4节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1470 0