Azure IoT Hub常見問(wèn)題

來(lái)源: 云計(jì)算實(shí)戰(zhàn)
作者:Sean Yu
時(shí)間:2021-06-03
16907
使用Event訂閱Azure IoT Hub設(shè)備上下線,如果不發(fā)送消息,每隔一段時(shí)間會(huì)收到一次上下線通知:所有的SDK的令牌有效期為默認(rèn)60分鐘,令牌續(xù)訂有效期約為 85%,即 60*0.85= 50分鐘左右, 在默認(rèn)的SAS令牌到期后,如果沒有任何流量來(lái)刷新token,則會(huì)遇到IoT Hub斷開設(shè)備,設(shè)備再重連的情況。

使用Event訂閱Azure IoT Hub設(shè)備上下線,如果不發(fā)送消息,每隔一段時(shí)間會(huì)收到一次上下線通知:

所有的SDK的令牌有效期為默認(rèn)60分鐘,令牌續(xù)訂有效期約為 85%,即 60*0.85= 50分鐘左右, 在默認(rèn)的SAS令牌到期后,如果沒有任何流量來(lái)刷新token,則會(huì)遇到IoT Hub斷開設(shè)備,設(shè)備再重連的情況。

如果要調(diào)試該狀態(tài),可以在IoT hub中配置 診斷設(shè)置 到Log Analytics工作區(qū):

 

輸出到Log Analytics工作區(qū)中:

在日志中輸入如下指令,可以查詢到 404104 和401003的設(shè)備 deviceDisconnect 和deviceConnect的事件,事件每50分鐘左右出現(xiàn)一次。

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend parsed_json = parse_json(properties_s)
| extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId) , Protocol =  tostring(parsed_json.protocol)
| distinct TimeGenerated, OperationName, Level, ResultType, ResultDescription, DeviceId, Protocol, SDKVersion

關(guān)于此現(xiàn)象官網(wǎng)的解釋:

https://docs.microsoft.com/zh-cn/azure/iot-hub/iot-hub-troubleshoot-connectivity?WT.mc_id=AZ-MVP-5003757&WT.mc_id=AZ-MVP-5003757#mqtt-device-disconnect-behavior-with-azure-iot-sdks

關(guān)于設(shè)備SDK 和云端如何保持連接的解釋:

為了確保客戶端/IoT 中心連接保持活動(dòng)狀態(tài),服務(wù)和客戶端會(huì)定期向?qū)Ψ桨l(fā)送一個(gè) keep-alive ping。使用 IoT SDK 的客戶端按下表中定義的時(shí)間間隔發(fā)送 keep-alive:

語(yǔ)言默認(rèn)的 keep-alive 時(shí)間間隔可配置性
Node.js180 秒
Java230 秒
C240 秒
C#300 秒
Python60 秒

按照 MQTT 規(guī)范,IoT 中心的 keep-alive ping 時(shí)間間隔是客戶端 keep-alive 值的 1.5 倍。但是,IoT 中心將服務(wù)器端最大超時(shí)限制為 29.45 分鐘(1767 秒),因?yàn)樗?Azure 服務(wù)都綁定到了 Azure 負(fù)載均衡器 TCP 空閑超時(shí)(29.45 分鐘)。

例如,使用 Java SDK 的設(shè)備會(huì)發(fā)送 keep-alive ping,然后失去網(wǎng)絡(luò)連接。230 秒后,設(shè)備會(huì)由于處于脫機(jī)狀態(tài)而錯(cuò)過(guò) keep-alive ping。但是,IoT 中心不會(huì)立即關(guān)閉連接 - 它會(huì)再等待 (230 * 1.5) - 230 = 115 秒,然后再斷開設(shè)備的連接,并顯示錯(cuò)誤 404104 DeviceConnectionClosedRemotely。

可設(shè)置的客戶端最大 keep-alive 值為 1767 / 1.5 = 1177 秒。任何流量都將重置 keep-alive。例如,成功的 SAS 令牌刷新會(huì)重置 keep-alive。

參照官網(wǎng):

https://docs.microsoft.com/zh-cn/azure/iot-hub/iot-hub-mqtt-support?WT.mc_id=AZ-MVP-5003757&WT.mc_id=AZ-MVP-5003757#using-the-device-sdks

關(guān)于設(shè)備連接/保持連接是否計(jì)費(fèi)的問(wèn)題:

使用 AMQP 或 MQTT 協(xié)議時(shí),為建立連接而交換的消息和協(xié)商中交換的消息不收費(fèi)。

參見:

https://docs.microsoft.com/zh-cn/azure/iot-hub/iot-hub-devguide-pricing?WT.mc_id=AZ-MVP-5003757

關(guān)于IoT Hub 能連接的最大設(shè)備數(shù)量

設(shè)備可注冊(cè)到單個(gè) IoT 中心的設(shè)備和模塊的總數(shù)上限為 1,000,000。只能聯(lián)系 Microsoft 支持部門來(lái)提高此限制。

但請(qǐng)注意,100萬(wàn)設(shè)備連接到云中,是需要一定時(shí)間的,這個(gè)受限于連接速率:

“設(shè)備連接” 限制控制與 IoT 中心建立新設(shè)備連接的速率?!霸O(shè)備連接” 限制不控制同時(shí)連接的最大設(shè)備數(shù)。設(shè)備連接 速率限制取決于為 IoT 中心預(yù)配的單位數(shù)。

例如,如果購(gòu)買的是單一 S1 單位,則限制為每秒 100 個(gè)連接。因此,若要連接 100,000 臺(tái)設(shè)備,至少需要花費(fèi) 1,000 秒(大約 16 分鐘)。但是,同時(shí)連接的設(shè)備數(shù)可與用戶在標(biāo)識(shí)注冊(cè)表中注冊(cè)的設(shè)備數(shù)相同。

具體的連接速率參考:

限制免費(fèi)、B1 和 S1B2 和 S2B3 和 S3
新設(shè)備連接(此限制適用于建立 新連接 的速率,而不是連接總數(shù))

高于 100/秒或 12/秒/單位
例如,

底線是100個(gè)連接/秒,兩個(gè) S1 單位是 2*12 = 24 個(gè)新連接/秒,該值< 100,則按100進(jìn)行限制。

如果有 9 個(gè) S1 單位,則你的單位就有 108 個(gè)新連接/秒 (9*12)。

120 個(gè)新連接/秒/單位6,000 個(gè)新連接/秒/單位

 

此外,設(shè)備到云的消息發(fā)送也是有速率限制的:

在設(shè)計(jì)物聯(lián)網(wǎng)系統(tǒng)時(shí),要充分考慮這些限制條件,才能決定是將 S1 升級(jí)到S2 或者增加S1 的單元數(shù)。

限制免費(fèi)、B1 和 S1B2 和 S2B3 和 S3
設(shè)備到云的發(fā)送100 個(gè)發(fā)送操作/秒或 12 個(gè)發(fā)送操作/秒/單位,具體取決于哪一個(gè)更高
例如,兩個(gè) S1 單位是 2*12 = 24/秒,但是在所有單位中至少有 100 個(gè)發(fā)送操作/秒。如果有 9 個(gè) S1 單位,則你的單位就有 108 個(gè)發(fā)送操作/秒 (9*12)。
120 個(gè)發(fā)送操作/秒/單位6,000 個(gè)發(fā)送操作/秒/單位
云到設(shè)備的發(fā)送11.67 個(gè)發(fā)送操作/秒/單位(100 條消息/分鐘/單位)1.67 個(gè)發(fā)送操作/秒/單位(100 個(gè)發(fā)送操作/分鐘/單位)83.33 個(gè)發(fā)送操作/秒/單位(5,000 個(gè)發(fā)送操作/分鐘/單位)
云到設(shè)備的接收1
(僅當(dāng)設(shè)備使用 HTTPS 時(shí))
16.67 個(gè)接收操作/秒/單位(1,000 個(gè)接收操作/分鐘/單位)16.67 個(gè)接收操作/秒/單位(1,000 個(gè)接收操作/分鐘/單位)833.33 個(gè)接收操作/秒/單位(50,000 個(gè)接收操作/分鐘/單位)

 

流量整形

為了應(yīng)對(duì)突發(fā)流量,IoT 中心可在有限的一段時(shí)間內(nèi)接受超出限制的請(qǐng)求。其中的前幾個(gè)請(qǐng)求會(huì)立即得到處理。但是,如果請(qǐng)求數(shù)持續(xù)違反限制,IoT 中心會(huì)開始將請(qǐng)求放入隊(duì)列,并以限制速率對(duì)請(qǐng)求進(jìn)行處理。此效應(yīng)稱為“流量整形”。此外,此隊(duì)列的大小受到限制。如果違反限制的情況持續(xù)出現(xiàn),隊(duì)列最終將會(huì)填滿,而 IoT 中心會(huì)開始拒絕請(qǐng)求并引發(fā) 429 ThrottlingException

例如,如果你使用模擬設(shè)備每秒將 200 條設(shè)備到云的消息發(fā)送到 S1 IoT 中心(它限制為每秒發(fā)送 100 條 D2C 消息)。在前一兩分鐘,消息會(huì)立即得到處理。但是,由于設(shè)備發(fā)送的消息數(shù)持續(xù)超過(guò)限制,IoT 中心隨后將每秒處理 100 條消息,并將剩余的消息放入隊(duì)列。此時(shí)你會(huì)注意到延遲增大。最終,在隊(duì)列填滿后,你會(huì)開始收到 429 ThrottlingException,并且“限制錯(cuò)誤數(shù)”IoT 中心指標(biāo)會(huì)開始增加。若要了解如何基于指標(biāo)創(chuàng)建警報(bào)和圖表,請(qǐng)參閱監(jiān)視 IoT 中心。

參考:

https://docs.microsoft.com/zh-cn/azure/iot-hub/iot-hub-devguide-quotas-throttling?WT.mc_id=AZ-MVP-5003757

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于云計(jì)算實(shí)戰(zhàn),本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
隨著人工智能技術(shù)持續(xù)重塑企業(yè)運(yùn)營(yíng)方式,企業(yè)需要能夠處理海量數(shù)據(jù)的系統(tǒng),以支持實(shí)時(shí)洞察,同時(shí)幫助他們應(yīng)對(duì)跨IT和OT環(huán)境(包括云端、邊緣和本地)中運(yùn)營(yíng)、應(yīng)用、數(shù)據(jù)和基礎(chǔ)設(shè)施的協(xié)作難題。
Azure
微軟云
云服務(wù)
2024-12-172024-12-17
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
.NET 9現(xiàn)已正式發(fā)布,它為.NET平臺(tái)的發(fā)展掀開了嶄新的一頁(yè),突破了性能、云原生開發(fā)和AI技術(shù)集成的邊界。
Azure
微軟云
云服務(wù)
2024-12-162024-12-16
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
智能Microsoft Copilot副駕駛for Azure網(wǎng)絡(luò)服務(wù)現(xiàn)已推出公共預(yù)覽版。
Azure
微軟云
云服務(wù)
2024-12-102024-12-10
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
一年前,我們正式推出了一款端到端數(shù)據(jù)平臺(tái),旨在幫助組織推動(dòng)人工智能轉(zhuǎn)型,并重新定義數(shù)據(jù)的連接、管理和分析方式。
Azure
微軟云
云服務(wù)
2024-12-092024-12-09
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家