我们有许多设备(大约50-60个设备)通过MQTT连接到IoTHub。为了节省电量,我们的设备每 5分钟醒来一次,保持清醒 1秒以获取任何消息,如果没有任何消息则重新进入睡眠状态。这工作正常,直到大约2周前,当这停止工作。
在尝试了一些事情后,我们发现如果我们将保持唤醒时间增加到3 秒,那么当设备连接时,IoTHub会将消息推送到设备。平均而言,一旦设备连接,物联网中心大约需要 2.5秒来推送消息。这将很快耗尽我们的电池,我们不能将其用作解决方案。考虑到设备与IoTHub位于同一区域,等待消息发送似乎太长了。
我们还注意到,有时连接超时需要增加到接近 10秒才能成功连接,这似乎太长了。
在我们的物联网设备上,我们使用MQTT协议,由于硬件资源有限,我们无法使用Azure IoT sdk
所以这里的问题是:
一旦设备连接,IoTHub花费2-3秒推送mqtt消息是否正常?
与IoTHub建立连接需要10秒才能正常吗?
更新1 - 2017年5月5日上午10:11
我已通过MSDN向Microsoft提出此问题,以下是问题的链接:https://social.msdn.microsoft.com/Forums/en-US/9d24c261-2280-4515-8e89-8097625307ee/azure-iothub-is-taking-more-than-23-seconds-to-dispatch-messages-via-mqtt-to-the-devices-when?forum=azureiothub
我们在云服务上使用Azure sdk。然而,在物联网设备上,由于硬件限制,我们无法使用sdk,因此我们只是使用MQTT协议来连接,订阅,处理消息,然后断开连接。 我们位于澳大利亚(墨尔本SE),我们正在测试多个部署,有些部署在AU,有些部署在美国东部,所有部署都给我们类似的延长等待时间来连接和发送/推送消息到物联网设备
答案 0 :(得分:4)
好的,我的调查结果基于与Microsoft支持和IotHub产品团队的对话。 我不确定为什么这个问题被否决了。这是一个常见的问题,可以挑战任何人构建物联网解决方案,我认为分享这个有很好的价值。
Microsoft回复摘要是:
IoTHub团队发现他们有一个缺陷被推到 2017年3月,这使得推送到设备的消息的延迟增加了大约<1秒次。这就是导致我们的解决方案破裂的原因。这是因为我们假设我们的IoT设备可以在重新连接的 1秒内从IoTHub获取消息。
Microsoft建议我们不能指望特定的延迟,因为不包含在他们的SLA中。这里的要点是,如果您正在设计物联网解决方案,请确保您不假设任何设置延迟,因为此时间可能会在数百毫秒到10秒之间波动。
2017年5月19日更新
微软刚刚回复了更多细节。他们现在在Azure IoTHub的文档中添加了一个部分,表示更改或扩展IotHub的层不会改变延迟并确认延迟不是SLA的一部分。这是详细信息: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-quotas-throttling#latency
更新结束
我希望这可以帮助其他可能遇到同样问题的人