【发布时间】:2019-06-15 07:02:38
【问题描述】:
我有一个天蓝色的 IoT 中心,上面有 10 个 IoT 设备。出于某种奇怪的原因,所有设备都不断离线。在连接了几个小时(或更短时间)后,它们突然断开连接。当手动重启设备时,它会再次开始发送数据,事情似乎已经解决,但设备很快再次断开连接:
Error: Time:Fri Jun 14 11:50:35 2019 File:/usr/sdk/src/c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2230 mqtt_client timed out waiting for CONNACK
Error: Time:Fri Jun 14 11:50:35 2019 File:/usr/sdk/src/c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2230 mqtt_client timed out waiting for CONNACK
Error: Time:Fri Jun 14 11:50:35 2019 File:/usr/sdk/src/c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2230 mqtt_client timed out waiting for CONNACK
Error: Time:Fri Jun 14 11:50:35 2019 File:/usr/sdk/src/c/iothub_client/src/iothubtransport_mqtt_common.c Func:InitializeConnection Line:2230 mqtt_client timed out waiting for CONNACK
由于设备分布在不同的物理位置,我认为这不会是互联网连接问题。甚至我在家里跑步的device simulator in NodeJS 在一个小时左右后都会断开连接。
IoT 集线器 是配置了 2 个集线器单元 的 B1。 根据 B1 的 IoT specs,它应该能够每天处理 400.000 条消息,每个消息的最大大小为 4KB。由于消息小于 1 KB 并且仅每 10 分钟发送一次,因此消息计数必须远低于 400.000 的 2 倍。
有谁知道这可能是什么问题?
我的假设是否正确,即其他 Azure 资源(例如也在运行的数据库、Web 应用程序或 Azure 函数)不能过度消耗 CPU/内存以致物联网中心受到限制?
额外细节:IoT 中心上的设备使用 MQTT 发送数据。为了从 IoT 中心读取数据,使用了 Azure 函数(此处没有可见错误)。
【问题讨论】:
-
查看您的输出日志以及非常快速的 CONNACK 超时连续,我怀疑您使用的是旧版本的 C SDK。该区域存在已解决的错误,因此在重新连接期间 SDK 未等待指定的 30 秒重新连接。与您的问题无关,但如果您运行的是旧版本,我建议您购买更高版本。
标签: azure mqtt iot azure-iot-hub