1、mqtt c client在網路延時較大時連接失敗
網路連接超時,有幾種原因引起:
1、網路問題,運營商網路專不通暢,或者是使用同網路的其他人屬在下載或者在線看視頻;
2、設備問題;
3、電腦本身問題;
4、電腦中毒;
5、系統問題。
解決辦法:
1、查看網路連接是否正常,可以給網路運營商打電話,要求查詢線路,也可以將同網路內的其他人的網速限制一下;
2、路由器、貓、網卡等設備故障,也會引起網路卡,建議先重啟,如果不能解決,建議更換設備;
3、電腦網卡驅動程序需要重新安裝一下,再重新聯網;
4、全盤查殺病毒後重新聯網;
5、建議重新安裝系統(重新安裝系統之前一定要提前備份重要資料)。
2、php適合做MQTT伺服器嗎
Apache-Apollo:一個代理伺服器,在ActiveMQ基礎上發展而來,可以支持STOMP、AMQP、MQTT、Openwire、SSL和WebSockets等多種協議,並且Apollo提供後台管理頁面,方便開發者管理和調試。
EMQ:EMQ 2.0,號稱百萬級開源MQTT消息伺服器,基於Erlang/OTP語言平台開發,支持大規模連接和分布式集群,發布訂閱模式的開源MQTT消息伺服器。
HiveMQ:一個企業級的MQTT代理,主要用於企業和新興的機器到機器M2M通訊和內部傳輸,最大程度的滿足可伸縮性、易管理和安全特性,提供免費的個人版。HiveMQ提供了開源的插件開發包。
Mosquitto:一款實現了消息推送協議MQTT v3.1的開源消息代理軟體,提供輕量級的、支持可發布/可訂閱的消息推送模式。
3、關於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保留消息。其實就是客戶端離線後在連接上可以收到之前推出的消息。
4、SIM800C,gprs,mqtt發送數據長度最大不超過256個位元組
應該是你那個模塊的緩存的問題,可能超過了緩存。你的模塊最大1460個位元組。
5、設備將數據發送到MQTT伺服器,那伺服器怎麼數據轉發到後台系統?
網上有很多的實際案例,多看幾個就明白了,比如這個:
6、mqtt 伺服器如何使用設置最大發送數量
1、在這里下載伺服器,下載後解壓,然後運行apache-apollo-1.6\bin\apollo.cmd,輸入create mybroker(名字任意取,這里是根據官網介紹的來取的)創建伺服器實例,伺服器實例包含了所有的配置,運行時數據等,並且和一個伺服器進程關聯。
2、create mybroker之後會在bin目錄下生成mybroker文件夾,裡麵包含有很多信息,其中etc\apollo.xml文件下是配置伺服器信息的文件,etc\users.properties文件包含連接MQTT伺服器時用到的用戶名和密碼,後面會介紹,可以修改原始的admin=password,可以接著換行添加新的用戶名密碼。
3、打開cmd,運行…apache-apollo-1.6\bin\mybroker\bin\apollo-broker.cmd run 開啟伺服器,可以在瀏覽器中輸入http://127.0.0.1:61680/查看是否安裝成功,該界面展示了topic,連接數等很多信息。
經過上面的簡單步驟,伺服器基本上就已經完成,下一篇將介紹Android客戶端的編寫和注意事項。
客戶端使用的API,開始我使用的是mqtt-client,使用過後發現問題百出,不能很好的滿足要求,後來使用了官方推薦的Eclipse Paho,