搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
繁依Fanyi0
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
VMware中Ubuntu拓展磁盘容量的两种方式 &图形化方式&命令行磁盘分区方式(亲测有效&简单且详细)&linux磁盘分区_ubuntu磁盘扩容
2
数据结构之 【拓扑排序】_数据结构 拓扑排序
3
从零开始到完整的React后台管理项目开发路程(第一节)_react 从0开始开发博客
4
基于Tekton和ArgoCD的GitOps实战
5
软件工程,怎么学_自学软件工程
6
全方位提升用户数字化体验的解决方案
7
Mysql 给每一行记录加上行号,类似于rownum_mysql 记录行号
8
超简单的Mac版VsCode配置c/c++环境新手教学_mac vscode c++ cin
9
数据库迁移解决方案探索之表结构转换_数据库表结构不一致如何迁移csdn
10
百度抗原抗体结构预测模型效果远超AlphaFold3
当前位置:
article
> 正文
MQTT 异常断开(一)
作者:繁依Fanyi0 | 2024-05-25 10:46:32
赞
踩
MQTT 异常断开(一)
分析问题总结:
前提:MQTT是基于TCP层再次封装,MQTT是不关心TCP层的实现与传输,但是如果TCP链路出现异常(丢失TCP ACK,网络延时TCP ACK等)一定会导致MQTT断开连接。
MQTT代理服务器存在如下问题:
a.代理服务器,对于
连接时没有及时处理收到模块关于TCP层的 TCP ACK(Seq确认包),出现重传MQTT Connect Ack。模块内部MQTT的处理逻辑,NQTT收到Connect Ack之后,模块已经准备就绪,回码OK,
但是客户端MQTT代理服务器,要等到模块发给代理服务器,MQTT连接Connect Ack关于TCP层的TCP ACK才认为链路已经建立(模块内部MQTT对此透明);
b.客户代理服务器,对于模块发布主题消息时,没有及时回复PUBACK,客户端等待超时,MQTT SDK内部启动关闭会话机制,关闭MQTT会话;
c.客户代理服务器,不仅仅处理MQTT这一种协议,还负责处理HTTP/HTTPS等协议,在分析时,也有发现HTTP/HTTPS协议关于TCP层的TCP ACK丢失,链路断开。
内部测试不能测试出来问题的推测:
a.内部搭建的MQTT代理服务器,基本仅做MQTT测试使用,代理服务器的性能,以及网络环境都比客户现场的要好,另外测试环境网络状态单一,不能模拟客户使用的MQTT代理服务器环境;
b.测试脚本,没有做到反复循环压测(前提是Qos=1)使MQTT的连接,订阅,发布频率达到代理服务的极限处理,即网络TCP层链路出现问题。
编译临时版本挂测
02、 03、 04版本内部挂测记录如下,每一次出现的Link Closed均已分析。
02版本挂测结果
原因客户MQTT代理服务器,没有响应TCP ack
原因:模块向MQTT代理服务器发送TCP ACK,但是代理服务器没有响应,TCP链路异常断开
原因:模块PUB主题消息成功,但是客户代理服务器在10秒内,没有回复模块PUBACK
原因:客户MQTT代理服务器没有发送给模块PUBACK,链路重置
03版本
原因:客户MQTT代理服务器回复TCP ACK延时,TCP已经发起链路重置
04版本测试:
原因:MQTT连接失败,客户MQTT代理服务器,没有收到确认的TCP ACK
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
【wpsshop博客】
推荐阅读
article
#新版Onenet云平台使用(
ESP8266
AT
指令
上报数据以及公网
MQTT
服务器
连接
测试)_es...
参考:新版ONENET物联网开放平台
AT
+
MQTT
指令
连接
_at
指令
连接
onenet
的
mqtt
-CSDN博客ESP826...
赞
踩
article
ArduinoUNO+
ESP8266
实现
MQTT
简单发布(不烧录
ESP8266
)_
esp8266
a...
分为以下部分:1:接线并使用AT指令验证连接2:使用软串口3:搭建/配置/测试
MQTT
服务端4:在Arduino实现MQ...
赞
踩
article
AWS
IOT
离线检测功能(
MQTT
遗言
)_
aws
lastwill
...
本文环境基于
AWS
IOT
嵌入式C lib:https://github.com/
aws
/
aws
-iot-device-...
赞
踩
article
Android
MQTT...
Android
MQTT本地搭建MQTT测试参考:MQTT在
Android
端的使用详解以及MQTT服务器搭建、Paho客...
赞
踩
article
MQTT
AT
命令_
mqtt
at
指令...
AT
+
MQTT
USERCFG:设置
MQTT
用户配置
AT
+
MQTT
CLIENTID:设置
MQTT
客户端ID
AT
+...
赞
踩
article
ESP
-
AT
系列
:
AT
+
MQTT
使用_
at
+
mqttusercfg
...
MQTT
AT
指令说明
AT
工程
:
https
:
//github.com/espressif/esp-
at
AT
文档
:
...
赞
踩
article
kettle
从入门到精通
第五十三
课
ETL
之
kettle
MQTT
/
RabbitMQ
produc...
MQTT
是基于发布/订阅模式(Publish/Subscribe)的协议,其中设备可以发布消息到一个主题(Topic)...
赞
踩
article
Kettle
实现
rabbitMQ
的
生产
与消费_
kettle
mqtt
...
Kettle
是一款非常强大的ETL工具,不仅可以使用图形化界面,还可以处理各种数据,今天记录一下本人使用
Kettle
中M...
赞
踩
article
基于
kettle
的
数据
集成
平台
(三)_
kettle
mqtt
consumer
websocket
...
上篇文章主要介绍了使用
kettle
平台
实现文档的高效解析。通过上传文档和下载文档的方式,来对各种异构文档进行
数据
格式的统...
赞
踩
article
安卓+
OneNet
+
stm32
Mqtt
远程物联网_小实验_
stm32
+
esp8266
+
mqtt
+on...
Attention:只是自己简单的留个总结,记录一下简单的结合一下在家里面搞个物联网挺实在的,开个灯了检测一下温湿度,E...
赞
踩
相关标签
服务器
数据库
运维
arduino
物联网
aws iot
断线检测
遗言消息
设备影子
LWT
android
mqtt
wifi
蓝牙
MQTT
AT
ESP
ESP32
ESP-MQTT
etl
rabbitmq
kettle
kettle mqtt
大数据