Azure IoT Hub常见问题,microsoft azure文字转语音Azure IoT Hub常见问题使用Event订阅Azure IoT Hub设备上下线,如果不发快递消息,每隔一段时间会收到一次上下线通知:所有的SDK的令牌有效期为默认60分钟,令牌续订有效期约为 85%,即 60*0.85= 50分钟左右......
使用Event订阅Azure IoT Hub设备上下线,如果不发快递消息,每隔一段时间会收到一次上下线通知:
所有的SDK的令牌有效期为默认60分钟,令牌续订有效期约为 85%,即 60*0.85= 50分钟左右, 在默认的SAS令牌到期后,如果没有任何流量来刷新token,则会遇到IoT Hub断开设备,设备再重连的情况。
如果要调试该状态,可以在IoT hub中配置 诊断设置 到Log Analytics工作区:
输出到Log Analytics工作区中:
在日志中输入如下指令,可以查询到 404104 和401003的设备 deviceDisconnect 和deviceConnect的事件,事件每50分钟左右出现一次。
AzureDiagnostics where ResourceProvider == MICROSOFT.DEVICES and ResourceType == IOTHUBS where Category == Connections extend parsedjson = parsejson(propertiess) extend SDKVersion = tostring(parsedjson.sdkVersion) , DeviceId = tostring(parsedjson.deviceId) , Protocol = tostring(parsedjson.protocol) distinct TimeGenerated, OperationName, Level, ResultType, ResultDescription, DeviceId, Protocol, SDKVersion关于此现象官网的解释:
https://docs.microsoft.com/zhcn/azure/iothub/iothubtroubleshootconnectivity WT.mc352">
按照 MQTT 规范,IoT 中心的 keepalive ping 时间间隔是客户端 keepalive 值的 1.5 倍。但是,IoT 中心将服务器端最大超时限制为 29.45 分钟(1767 秒),因为所有 Azure 服务都绑定到了 Azure 负载均衡器 TCP 空闲超时(29.45 分钟)。
例如,使用 Java SDK 的设备会发快递 keepalive ping,然后失去网络连接。230 秒后,设备会由于处于脱机状态而错过 keepalive ping。但是,IoT 中心不会立即关闭连接 它会再等待(230 * 1.5) 230 = 115秒,然后再断开设备的连接,并显示错误 404104 DeviceConnectionClosedRemotely。
可设置的客户端最大 keepalive 值为1767 / 1.5 = 1177秒。任何流量都将重置 keepalive。例如,成功的 SAS 令牌刷新会重置 keepalive。
参照官网:
https://docs.microsoft.com/zhcn/azure/iothub/iothubmqttsupport?WT.mc595">
但请注意,100万设备连接到云中,是需要一定时间的,这个受限于连接速率:
“设备连接” 限制控制与 IoT 中心建立新设备连接的速率。“设备连接” 限制不控制同时连接的最大设备数。设备连接 速率限制取决于为 IoT 中心预配的单位数。
例如,如果购买的是单一 S1 单位,则限制为每秒 100 个连接。因此,若要连接 100,000 台设备,至少需要花费 1,000 秒(大约 16 分钟)。但是,同时连接的设备数可与用户在标识注册表中注册的设备数相同。
具体的连接速率参考:
限制免费、B1 和 S1B2 和 S2B3 和 S3新设备连接(此限制适用于建立新连接的速率,而不是连接总数) | 高于 100/秒或 12/秒/单位例如, 底线是100个连接/秒,两个 S1 单位是 2*12 = 24 个新连接/秒,该值 100,则按100进行限制。 如果有 9 个 S1 单位,则你的单位就有 108 个新连接/秒 (9*12)。 | 120 个新连接/秒/单位 | 6,000 个新连接/秒/单位 |
此外,设备到云的消息发快递也是有速率限制的:
在设计物联网系统时,要充分考虑这些限制条件,才能决定是将 S1 升级到S2 或者增加S1 的单元数。
限制免费、B1 和 S1B2 和 S2B3 和 S3设备到云的发快递 | 100 个发快递操作/秒或 12 个发快递操作/秒/单位,具体取决于哪一个更高例如,两个 S1 单位是 2*12 = 24/秒,但是在所有单位中至少有 100 个发快递操作/秒。如果有 9 个 S1 单位,则你的单位就有 108 个发快递操作/秒 (9*12)。 | 120 个发快递操作/秒/单位 | 6,000 个发快递操作/秒/单位 |
云到设备的发快递1 | 1.67 个发快递操作/秒/单位(100 条消息/分钟/单位) | 1.67 个发快递操作/秒/单位(100 个发快递操作/分钟/单位) | 83.33 个发快递操作/秒/单位(5,000 个发快递操作/分钟/单位) |
云到设备的接收1(仅当设备使用 HTTPS 时) | 16.67 个接收操作/秒/单位(1,000 个接收操作/分钟/单位) | 16.67 个接收操作/秒/单位(1,000 个接收操作/分钟/单位) | 833.33 个接收操作/秒/单位(50,000 个接收操作/分钟/单位) |
为了应对突发流量,IoT 中心可在有限的一段时间内接受超出限制的请求。其中的前几个请求会立即得到处理。但是,如果请求数持续违反限制,IoT 中心会开始将请求放入队列,并以限制速率对请求进行处理。此效应称为“流量整形”。此外,此队列的大小受到限制。如果违反限制的情况持续出现,队列最终将会填满,而 IoT 中心会开始拒绝请求并引发429 ThrottlingException。
例如,如果你使用模拟设备每秒将 200 条设备到云的消息发国际快递 S1 IoT 中心(它限制为每秒发快递 100 条 D2C 消息)。在前一两分钟,消息会立即得到处理。但是,由于设备发快递的消息数持续超过限制,IoT 中心随后将每秒处理 100 条消息,并将剩余的消息放入队列。此时你会注意到延迟增大。最终,在队列填满后,你会开始收到429 ThrottlingException,并且“限制错误数”IoT 中心指标会开始增加。若要了解如何基于指标创建警报和图表,请参阅监视 IoT 中心。
参考:
https://docs.microsoft.com/zhcn/azure/iothub/iothubdevguidequotasthrottling?WT.mcid=AZMVP5003757
特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部