家宽,拨号成功大约 18 小时后,局端会自动踢下线,无公网 ip ,重拨号会得到新的内网 ip 。有个 nodered 连接了两个 mqtt 服务器,重拨号后一个可以在一分钟内重新连接,一个要 15 分钟才重新连接,这 15 分钟无法收发消息,谁知道是什么导致了这种差异?目前是设置了每天 4:15 强制重新拨号来避开日常使用时间,避免影响使用。
2023-02-27 04:15:13 重新拨号成功
27 Feb 04:15:45 - [info] [mqtt-broker:iobroker] Disconnected from broker: mqtt://domain:port
27 Feb 04:16:00 - [info] [mqtt-broker:iobroker] Connected to broker: mqtt://domain:port
27 Feb 04:30:50 - [info] [mqtt-broker:ifttt] Disconnected from broker: mqtts://ip:port
27 Feb 04:31:05 - [info] [mqtt-broker:ifttt] Connected to broker: mqtts://ip:port
mqtt://domain:port 是连的别人的,mqtts://ip:port 是我自己部署的,有试过改用域名,没区别。重新拨号后会走 mqtts://ip:port 发送通知,所以这个 15 分钟比较影响使用。会是 mqtts 与 mqtt 的区别导致吗?
1
ysc3839 2023-02-27 15:35:34 +08:00 via Android
没有 keep alive ,导致断开后也不知道已经断开?直到 15 分钟可能有通信,才知道断开了?
|
2
tairan2006 2023-02-28 09:02:07 +08:00
你这 mqtts 的证书绑定的是公网 IP 地址么…
如果服务端是你自己部署的,建议先看看服务端日志,或者抓个包。 |
3
documentzhangx66 2023-02-28 09:23:38 +08:00
两个 mqtt 都写入 trace 级别的日志,甚至有条件可以直接开 IDE 调试运行。大概率是程序 bug 。
|
4
lovelylain OP @tairan2006 是的,自签名的,有效期可以很长,不用担心续期失败。
@ysc3839 自己查了一下资料,区别可能是是否有数据传输导致的,nodered mqtt 本身实现了 60 秒 keepalive ,所以正常情况下没有数据就 60 秒断开,但是有数据时这个 60 秒就不生效了 |
5
lovelylain OP 要根据系统的 tcp_retries2 重试,重试 15 次就是差不多是 15 分钟,有时间验证下重拨不发数据和把
|