中级会员
 
- 积分
- 291
- 金钱
- 291
- 注册时间
- 2021-2-5
- 在线时间
- 135 小时
|
问题是这样的,嵌入式底层在采集完成数据之后会存储在4G模块里面,然后通过服务器的指令将文件上传,有一种情况是在网络状况不好的时候依然需要上传这些数据,这个时候文件上传就会超时,就是这个超时之后设备出现某些异常(比较明确的现象是设备网络不正常了,没有上传,mqtt下发的的指令也没回),首先设备是在正常运行的,至少看门狗在运行,但是推送消息失败,一开始我觉得是因为推送文件超时导致某处的信号量没释放,在一下次获取的时候阻塞了任务,这种情况我不是很确定,因为查阅了所有的信号量都是成对使用的,然后我突然想起一个关键的点,就是mqtt的keepalive配置,这个点配置的是20秒,文件上传超时时间是90秒,我查阅资料:如果服务器在保持活动时间段的1.5倍内没有收到来自客户端的消息,那么它将断开客户端连接,就像客户端发送了断开连接消息一样。keepalive的时间文档上默认是120秒,所以这个过程极有可能造成mqtt断开,但是我不知道这个时间配置成默认的120米秒会有什么意想不到的情况,写这么多,主要是想项大家请教一些经验
|
|