天天看點

基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

基于Jmeter壓測IoT物聯網平台的性能

原始連結

https://mp.weixin.qq.com/s/p2zYb5g4buoQwpnT-cBXPQ
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

 背景  

MQTT 是超輕量級消息協定,用于連接配接移動端與雲服務雙向通信,廣泛應用于物聯網(IoT)領域,如裝置向雲端上報狀态、雲端向裝置推送消息、裝置端A向裝置端B發送消息等場景。

本文以充電寶機櫃上報狀态場景為例介紹如何使用 MQTT 插件和 JMeter 腳本壓測IoT物聯網平台的 MQTT 服務性能。

 準備工作  

開通IoT物聯網裝置接入服務。

https://www.aliyun.com/product/iot-deviceconnect

安裝JMeter 5.1.1版本  版本 

https://jmeter.apache.org

 壓測實戰  

1.建立産品和注冊裝置

我們在IoT物聯網平台裝置管理中,建立一個充電寶産品,并注冊10個裝置,獲得身份三元組。

基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

2.準備裝置身份資訊CSV檔案

每個裝置和IoT物聯網平台建立連接配接時,需要提供UserName 、 Password 、 ClientId 這 3個身份資訊,上報狀态資料時需要知道自身的productKey和deviceName來确定通信Topic。

依照IoT物聯網平台身份認證文檔,我們把三元組轉換成UserName 、 Password 、 ClientId,存儲到client.csv檔案中。示例如下:

基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

3.下載下傳 Jmeter ,安裝 MQTT 插件

下載下傳 mqtt-jmeter 插件最新版本 JAR 包:mqtt-xmeter-2.0.2-jar-with-dependencies.jar 。下載下傳位址:

https://github.com/emqx/mqtt-jmeter

拷貝插件 JAR 包到 JMeter 安裝目錄的

lib/ext/

子目錄下。操作過程如下:

基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

4.編輯 JMeter 腳本

我們以 JMeter 5.1.1 英文圖形界面為例。

4.1 配置用戶端 CSV 資料檔案

  • 打開 JMeter,并建立腳本。
  • 在 JMeter 左側檔案目錄中右鍵單擊 Test Plan ,選擇 Add > Threads (Users) > Thread Group。
  • 在 JMeter 左側檔案目錄中右鍵單擊 Test Plan ,選擇 Add > Listener > > View Results Tree ,添加 View Results Tree 監聽器,友善本地調試測試腳本。
  • 在 Test Plan 區域右鍵單擊 Thread Group ,選擇 Add > Logic Controller > Once Only Controller。JMeter 中一個線程模拟一個 MQTT 用戶端裝置,使用 Once Only Controller 保證一個線程僅讀取一次用戶端 CSV 資料檔案,綁定一條用戶端資訊。
  • 在 Test Plan 區域右鍵單擊 Once Only Controller , 選擇 Add > Config Element > CSV Data Set Config。并在 CSV Data Set Config 對話框中配置以下資訊。
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

Filename :用戶端資訊 CSV 檔案路徑 

client.csv

 。

File encoding:CSV 檔案編碼格式,本示例使用 

UTF-8

Delimiter:這裡我們輸入 

#

Recycle on EOF:是否循環讀取檔案。選擇 

False

4.2 建立 MQTT 連接配接

我們使用 Once Only Controller 控制一個用戶端隻需執行一次建連操作。

  • 在 Test Plan 區域右鍵單擊 Once Only Controller,選擇 Add > Sampler > MQTT Connect。
  • 在 MQTT Connect 對話框中配置以下資訊。
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

4.3 配置釋出消息

  • 在 Test Plan 區域右鍵單擊 Thread Group,選擇 Add > Sampler > MQTT Pub Sampler
  • 在 MQTT Pub Sampler 對話框中配置以下資訊。
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

QoS Level:用戶端向伺服器釋出消息的服務品質。本示例中選擇 

,即隻發送一次,丢失不重發,可按需選擇其他級别。

Topic name:消息 topic 。MQTT topic 支援層次結構,使用 / 分割,類似檔案路徑,如 

pts_test/jmeter

 等。

Add timestamp in payload:是否添加消息頭添加發送時間戳。一般勾選此項,友善測試時檢查消息延遲。

Payloads:消息體。本示例中填寫 

this message is from jmeter ${clientId}!

,即在消息體中添加用戶端 ID,友善測試和調試檢查。

4.4 啟動壓測腳本

  • 在 Test Plan 區域單擊 Thread Group,配置 Loop Count 為 10(循環執行 10 次)。
  • 在 JMeter 頁面左上角單擊儲存,然後執行腳本。
  • 在 View Results Tree 頁面檢視腳本執行結果:
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能
  • 在Summary Report 頁面檢視腳本執行結果:
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能
  • 在Graph Results 頁面檢視腳本執行結果:
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

4.5 IoT物聯網平台控制台日志

基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能

【往期回顧】

1.自建MQTT叢集遷移阿裡雲IoT平台 2.IoT時代:WiFi配網技術剖析 3.微信小程式和IoT智能家居實踐 4.IoT雲端通用資料解析腳本實踐
基于JMeter工具的IoT物聯網平台MQTT服務性能壓測實戰基于Jmeter壓測IoT物聯網平台的性能