Azure IoT 中心需要超过 2 秒的时间才能将消息推送到 mqtt 设备

Azure IoT hub is taking more than 2 sec to push messages to mqtt device

我们有许多设备 (大约 50-60 台设备) 通过 MQTT 连接到 IoTHub。为了节省电量,我们的设备每 5 分钟 唤醒一次,保持唤醒状态 1 秒 以获取任何消息,如果没有任何消息,它们会返回睡觉。直到大约 2 周前停止工作时,它才正常工作。

尝试一些事情后,我们发现如果我们将保持清醒时间增加到 3 秒,那么当设备连接时,IoTHub 会将消息推送到设备。设备连接后,IoT 中心平均需要 2.5 秒 来推送消息。这会很快耗尽我们的电池,我们不能将其用作解决方案。考虑到设备与 IoTHub 位于同一区域,等待消息发送的时间似乎太长。

我们还注意到,有时连接超时需要增加到将近 10 秒 才能成功连接,这似乎太长了。

在我们的 IoT 设备上,我们使用 MQTT 协议,由于硬件资源有限,我们无法使用 Azure IoT sdk

所以这里的问题是:

设备连接后IoTHub需要2-3秒推送mqtt消息是否正常?

与 IoTHub 建立连接最多需要 10 秒是否正常?

更新 1 - 2017 年 5 月 5 日 10:11 上午

我已经通过 MSDN 向 Microsoft 提出了这个问题,这里是问题的 link: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),我们正在测试多个部署,一些在澳大利亚,一些在美国东部,所有部署都给我们类似的延长等待时间来连接和发送/推送消息到物联网设备

好的,这是我根据与 Microsoft 支持人员和 IotHub 产品团队的对话得出的结论。 我不确定为什么这个问题被否决了。这是一个常见问题,可能会挑战任何构建 IoT 解决方案的人,我认为分享这个问题很有价值。

微软回复摘要为:

  1. IoTHub 团队发现他们有一个在 2017 年 3 月 前后推出的缺陷,这增加了推送到设备的消息的延迟大约1 秒。这就是导致我们的解决方案失败的原因。这是因为我们假设我们的物联网设备可以在 1 秒 重新连接后从 IoTHub 获取消息。

  2. Microsoft 已告知我们不能指望特定延迟,因为它未包含在他们的 SLA 中。这里的要点是,如果您正在设计 IoT 解决方案,请确保您不假设任何设定的延迟,因为这个时间可能会在 数百毫秒和 10 秒 之间波动。

2017 年 5 月 19 日更新

微软刚刚回复了更多细节。他们现在在 Azure IoTHub 的文档中添加了一个部分,说明更改或缩放 IotHub 的层不会改变延迟,并确认延迟不是 SLA 的一部分。这是详细信息: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-quotas-throttling#latency

更新结束

我希望这能帮助其他可能有同样问题的人