MQTT消息隊列壓力測試


環境准備:
jmeter插件下載:
mqttxmeter1.0.1jarwithdependencies.jar
把MQTT插件放在 %JMeter_Home%/lib/ext下。重啟jmeter.

MQTT連接。

 

Server name or IP: 被測MQTT服務器地址。
Port number: TCP連接的端口1883, SSL連接則是8883。
Timeout(s): 連接超時設置,以秒為單位。
user name: 連接MQTT的帳戶名。
password: 連接MQTT的密碼。(具體詢問開發)
ClientId: 客戶端標識,具體詢問開發被模擬的客戶端標識(注意一個標識快速連接多次會連接失敗,並發記得參數化(經驗))。
Keep alive(s): 心跳信號發送間隔。例如,300表示客戶端每隔300秒向服務器發出ping請求,以保持連接活躍。(注意,不正常disconnect,連接還會繼續保持。除非關掉jmeter. 正常mqtt disconnect請無視。)
Connect attempt max: 第一次連接失敗后,嘗試重連的最大次數。超過該次數則認為連接失敗。
Reconnect attempt max: 后續連接過程中連接失敗后,嘗試重連的最大次數。超過該次數則認為連接失敗。
好了,連接上就可以進行消息發布了。


MQTT發布

 

QoS Level: 服務質量,取值為0,1,2,分別代表MQTT協議規范里的至多一次(AT_MOST_ONCE),至少一次(AT_LEAST_ONCE),精確一次(EXACTLY_ONCE)(網上COPY,具體我就用了0,用1 2發送失敗。)
Topic name: 做為發布方,把消息發布到所屬的話題中。
Add timestamp in payload: 如果勾選,發布的消息體開頭會附帶當前時間戳,利用它可以在消息接收端計算消息達到的延時。不勾選則只發送實際的消息體。

  1. Message type: 目前支持三種消息類(我只用了String,其它請看網上的其它介紹。)
    1. String: 普通字符串 (如上面截圖所示,你要發送的消息。具體上報什么,可找開發要相關json等。)
    2. Hex String: 以16進制數值表示的串,比如字符串Hello, 可以表示為48656C6C6F (其中,48在ascii表中對應字母H,依次類推)。通常16進制串用來構造非文本的消息體,例如描述某些私有的協議交互和控制信息等等。
    3. Random string with fixed length*: 按指定長度生成隨機的串作為消息體。

此時消息發送成功了。


消息訂閱


topic name(s): 想要訂閱的主題。(可以訂閱多個)多個主題以英文逗號分隔。
Sample on:

  1. specified elapsed time(ms): 訂閱的主題每多少毫秒作為一個結果展示(個人理解)。在這些毫秒內所收到的消息全部展示在一個結果內。
  2. number of received messages: 每收到多少個消息作為一個結果展示(個人理解)。

斷開連接


注意:主動支行MQTT DisConnect可以斷開。若測試過程中手動停止,致使線程未運行DisConnect,則連接不會斷開。(已經過驗證。)

測試過程中遇到的問題:

  1. MQTT連接數未修改。連接到1W報錯連接失敗。
  2. 修改MQTT連接數后,成功並發到5W,后續還會再進行測試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM