欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

關于mosquitto怎么用c語言實現消息的訂閱和發送mqtt

方一強2年前14瀏覽0評論

關于mosquitto怎么用c語言實現消息的訂閱和發送mqtt?

1.目標:測試Mosquitto使用MQTT協議發消息的相關性能指標,包含發送速度,并發負載能力,資源占用,消息到達率。

2.MQTT協議簡介:

1).建立長連接。客戶端發起請求和服務端建立長連接,建立成功后,服務端會返回ACK(CONNACK)

2).客戶端訂閱:客戶端發起訂閱,訂閱成功后,服務端會返回ACK(SUBACK)

3).發消息:發布者會給服務端發消息,服務端在把消息給合適的客戶端。

Qos=0(服務質量):客戶端消息收到后,不會發出ACK給服務端(PUBACK)。

Qos =1:服務端會發ACK給發布者,客戶端收到消息后會發ACK給服務端。

4).取消訂閱:客戶端發起取消訂閱,服務端返回ACK(UNSUBACK)

5)Pingreq&Pingresp:客戶端和服務端會保持心跳。

3.存在問題:

1. 如何模擬出40W的用戶

2. 如何長連接,訂閱,發消息,取消訂閱,Pingreq行為如何實現。

4. python開源庫 Mosquitto.py,解決所有問題

1. 模擬40W用戶

a)可以使用虛擬機和Mosquitto.py實現,具體為:一般一臺虛擬機最多是6W+的模擬數據(需要修改句柄數,我使用5W),方法是Client_id可以簡單的做出5W個來,然后調用Mosquitto里面的connect方法,建立長連接。準備8臺虛擬機就可以實現40W客戶端的模擬

2.行為的模擬

a)訂閱:Mosquitto.subscribe / 發消息:Mosquitto.publish / 取消訂閱:Mosquitto.unsubscribe。 簡單一句話 Mosquitto庫實現所有的行為.

5. 指標:發送速度,到達率,并發負載,資源占用。

a. 發送速度:服務端日志記錄,分析解決

b. 到達率: 1.客戶端記錄下收到消息,分析計算。2.計算服務端收到的PUBACK(客戶端收到消息返回的ACK),進行計算

c. 并發負載:5W 用戶不斷增加,注意觀察服務端的負載情況。

e.資源占用:其實主要是cpu/mem/帶寬:cpu多核的話需要觀察top命令下的_id字段, mem可以觀察free -h命令的剩余mem, 帶寬可以使用mpstat進行觀察

6. 可以遇見問題:

a. 模擬客戶端的虛擬機需要修改句柄數才能支持5W的客戶端模擬數量

b. 要先吃透MQTT協議的流程,吃透了進行測試會非常的方便

c. Clear session,設置為true則不為客戶端保留休息,設置為false保留消息。其實就是客戶端離線后在連接上可以收到之前推出的消息。