環球實時:桌面客戶端性能提升,優化使用資源消耗

2023-01-05 14:19:41 來源:51CTO博客

十二月末,??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 原創,轉載請注明出處。

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

標簽: 配置文件 發布消息 連接命令

上一篇:【環球速看料】第二十二章《記事本》第2節:記事本功能實現
下一篇:世界速讀:滲透測試工程師的職業發展