首页 > 其他分享 >桌面客户端性能提升,优化使用资源消耗

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

时间:2023-01-05 12:05:15浏览次数:56  
标签:重连 桌面 配置文件 消耗 bench MQTT 客户端 优化 mqttx

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

优化前

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

优化后

桌面客户端性能提升,优化使用资源消耗_物联网_02

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

支持批量存储

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

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

主题输入框提示

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

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

桌面客户端性能提升,优化使用资源消耗_配置文件_03

命令行客户端

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​

标签:重连,桌面,配置文件,消耗,bench,MQTT,客户端,优化,mqttx
From: https://blog.51cto.com/u_15204296/5990036

相关文章

  • 中国移动魔百盒 安装当贝桌面
    中国移动魔百盒安装当贝桌面TableofContents一、起因二、经过三、效果ReferenceTable1.修改历史日期修订人备注2022-12-25崔嘉诚......
  • Microsoft Remote Desktop for mac(远程桌面连接工具) v10.8.0中文正式版
    mac版微软远程桌面连接工具MicrosoftRemoteDesktop哪里可以下载?MicrosoftRemoteDesktopforMac中文正式版是一款非常优秀的远程桌面连接工具,可以帮助您快速连接到基于......
  • 客户端指定不同的vip/域名/F5地址来实现按规则请求不同的集群
    假设后端分为了多个集群,比如A集群它处理用户id是求模100等于0的所有用户,并且它连的分库分表的数据也是用户id求模100等于0的所有用户;那么这个A集群的对外地址aaa就可以打......
  • Python网络编程之TCP 客户端程序开发
    一、开发TCP客户端程序开发步骤回顾创建客户端套接字对象和服务端套接字建立连接发送数据接收数据关闭客户端套接字二、socket类的介绍导入socket模块 importsocket......
  • RocketMQ 5.0 多语言客户端的设计与实现
    本文作者:古崟佑,阿里云中间件开发。 RocketMQ5.0版本拥有非常多新特性,比如存储计算分离、batch能力的提升等,它是具有里程碑意义的版本。提到新版本,我们往往会首先......
  • RocketMQ 5.0 多语言客户端的设计与实现
    本文作者:古崟佑,阿里云中间件开发。RocketMQ5.0版本拥有非常多新特性,比如存储计算分离、batch能力的提升等,它是具有里程碑意义的版本。提到新版本,我们往往会首先想到服务......
  • 文字页游开发(客户端)1
    客户端搭建 在服务端搭建成功后,在下载好node、npm相关的内容后就可直接下载安装vue相关的内容这边就直接使用vue-cli脚手架去安装vuenpminstall-g@vue/cli具体......
  • intel更新13代桌面处理器产品线,更多核心更贵价格
    intel13代酷睿产品线更新带来了更多低于125wTDP的处理器。intel确认了10个65wTDP的SKU和6个35wTDP的SKU。13代酷睿包含新的RaptorLake和旧的AlderLake(Refresh)处理器。......
  • HTTP客户端之Spring WebClient
    对于HTTP客户端,其实有很多种,而SpringBoot也提供了一种方式叫SpringWebClient。它是在Spring5中引入的异步、反应式HTTP客户端,用于取代较旧的RestTemplate,以便在使用Sprin......
  • 仿网易新闻客户端
    ​​https://github.com/xiangzhihong/newsApp​​newsApp是一款仿网易新闻的客户端产品,非官方版本,属于个人业余时间做的一个小项目;界面有一些仿网易新闻客户端主要用到......