Sdílet prostřednictvím


Vysvětlení a řešení chyb služby Azure IoT Hub

Tento článek popisuje příčiny a řešení běžných kódů chyb, se kterými se můžete setkat při používání služby IoT Hub.

400027 Nové připojení bylo násilně uzavřeno.

Pokud se vaše zařízení odpojí a nahlásí Communication_Error jako ConnectionStatusChangeReason při použití .NET SDK a typu přenosu MQTT, může se zobrazit chyba 400027 ConnectionForcefullyClosedOnNewConnection. Operace digitálního dvojčete zařízení do cloudu (například čtení nebo aktualizace nahlášených vlastností) nebo vyvolání přímé metody může selhat s kódem chyby 400027.

K této chybě dochází, když jiný klient vytvoří nové připojení ke službě IoT Hub pomocí stejné identity, takže Služba IoT Hub zavře předchozí připojení. Centrum IoT neumožňuje připojení více než jednoho klienta pomocí stejné identity.

Pokud chcete tuto chybu vyřešit, ujistěte se, že se každý klient připojuje ke službě IoT Hub pomocí vlastní identity.

401003 IoT Hub neautorizováno

V protokolech se může zobrazit vzor odpojování zařízení s 401003 IoTHubUnauthorized, po kterém následuje 404104 DeviceConnectionClosedRemotely, a poté se úspěšně připojí za krátkou chvíli.

Nebo požadavky na IoT Hub selžou s některou z následujících chybových zpráv:

  • Chybí autorizační hlavička
  • IotHub *neobsahuje zadané zařízení *.
  • Autorizační pravidlo '*' neumožňuje přístup pro '*'.
  • Ověření pro toto zařízení se nezdařilo, obnovte token nebo certifikát a znovu se připojte.
  • Kryptografický otisk neodpovídá konfiguraci: Kryptografický otisk: SHA1Hash=*, SHA2Hash=*; Konfigurace: PrimaryThumbprint=*, SecondaryThumbprint=*
  • Uživatel user@example.com není autorizován pro GET na /exampleOperation kvůli chybějícím oprávněním.

K této chybě dochází, protože v případě MQTT se některé sady SDK spoléhají na IoT Hub k vydání odpojení, když vyprší platnost tokenu SAS, k určení, kdy se má aktualizovat. Takže:

  1. Platnost tokenu SAS vyprší.
  2. IoT Hub si všimne vypršení platnosti a odpojí zařízení s 401003 IoTHubUnauthorized
  3. Zařízení dokončí odpojení s 404104 PřipojeníZařízeníUkončenoVzdáleně
  4. Sada IoT SDK vygeneruje nový token SAS.
  5. Zařízení se úspěšně připojí ke službě IoT Hub.

Nebo služba IoT Hub nemohla ověřit hlavičku, pravidlo nebo klíč ověřování. Tento výsledek může být způsoben některým z důvodů uvedených v symptomech.

K vyřešení této chyby není potřeba žádná akce, pokud k připojení pomocí připojovacího řetězce zařízení použijete sadu IoT SDK. Sada IoT SDK znovu vygeneruje nový token, aby se znovu připojil k vypršení platnosti tokenu SAS.

Životnost výchozího tokenu je 60 minut napříč sadami SDK; U některých sad SDK je ale životnost tokenu a prahová hodnota obnovení tokenu konfigurovatelná. Kromě toho se chyby vygenerované v případě, že se zařízení odpojí a znovu připojí při obnovení tokenu, liší pro každou sadu SDK. Pro více informací a jak zjistit, kterou SDK vaše zařízení používá v protokolech, viz část Chování odpojení zařízení MQTT s Azure IoT SDK ve Monitorování, diagnostika a řešení potíží s připojením zařízení služby Azure IoT Hub.

Pro vývojáře zařízení, pokud je objem chyb znepokojující, doporučujeme přejít na C SDK, které obnoví token SAS před vypršením jeho platnosti. V případě AMQP se token SAS může aktualizovat bez odpojení.

Obecně platí, že zobrazená chybová zpráva by měla vysvětlit, jak chybu opravit. Pokud z nějakého důvodu nemáte přístup k podrobnostem chybové zprávy, ujistěte se, že:

  • Platnost sdíleného přístupového podpisu nebo jiného používaného tokenu zabezpečení nevypršela.
  • U ověřování certifikátu X.509 nevypršela platnost certifikátu zařízení nebo certifikátu certifikační autority přidruženého k zařízení. Informace o registraci certifikátů CA X.509 ve službě IoT Hub najdete v tématu Kurz: Vytvoření a nahrání certifikátů pro testování.
  • V případě ověřování kryptografického otisku certifikátu X.509 je kryptografický otisk certifikátu zařízení zaregistrovaný ve službě IoT Hub.
  • Autorizační přihlašovací údaje jsou správně vytvořené pro protokol, který používáte. Další informace najdete v tématu Řízení přístupu ke službě IoT Hub pomocí ID Microsoft Entra.
  • Použité autorizační pravidlo má oprávnění k požadované operaci.
  • U posledních chybových zpráv, které začínají s "hlavní objekt...", lze tuto chybu vyřešit přiřazením správné úrovně oprávnění Azure RBAC uživateli. Vlastník ve službě IoT Hub může například přiřadit roli Vlastník dat služby IoT Hub, která uděluje všechna oprávnění. Zkuste použít tuto roli k vyřešení problému s chybějícím oprávněním.

Poznámka:

U některých zařízení může docházet k problému s časovým posunem, když má čas zařízení rozdíl od času serveru, který je delší než pět minut. K této chybě může dojít v případě, že se zařízení připojuje k centru IoT bez problémů po týdny nebo dokonce měsíce, ale začne se nepřetržitě odmítnout jeho připojení. Chyba může být také specifická pro podmnožinu zařízení připojených k centru IoT, protože k posunu času může dojít v závislosti na tom, kdy je zařízení poprvé připojené nebo zapnuté.

Často se problém vyřeší provedením synchronizace času pomocí protokolu NTP nebo restartováním zařízení (což může automaticky provést synchronizaci času během spouštěcí sekvence) a umožní zařízení se znovu připojit. Pokud se chcete této chybě vyhnout, nakonfigurujte zařízení tak, aby provádělo pravidelnou synchronizaci času pomocí protokolu NTP. Synchronizaci můžete naplánovat na denní, týdenní nebo měsíční v závislosti na množství odchylek v prostředí zařízení. Pokud na svém zařízení nemůžete nakonfigurovat pravidelnou synchronizaci protokolu NTP, naplánujte pravidelné restartování.

překročení kvóty služby IoT Hub 403002

Může se zobrazit selhání požadavků na IoT Hub s chybou 403002 IoTHubQuotaExceeded. A na webu Azure Portal se seznam zařízení IoT Hub nenačte.

K této chybě obvykle dochází při překročení denní kvóty zpráv pro centrum IoT. Vyřešení této chyby:

Úloha hromadného importu může také vrátit tuto chybu, pokud se počet zařízení zaregistrovaných k vašemu IoT hubu blíží nebo překračuje limit kvóty pro IoT hub. Další informace najdete v části Řešení potíží s úlohami importu v části Import a export identit zařízení IoT Hubu hromadně.

403004 Maximální hloubka fronty zařízení byla překročena.

Při pokusu o odeslání zprávy z cloudu na zařízení se může zobrazit, že požadavek selže s chybou 403004 nebo DeviceMaximumQueueDepthExceeded.

Základní příčinou této chyby je, že počet zpráv zařazených do fronty pro zařízení překračuje limit fronty.

Nejpravděpodobnějším důvodem, proč dochází k tomuto limitu, je to, že používáte HTTPS pro přijetí zprávy, což vede k průběžnému dotazování, což způsobuje, že IoT Hub omezuje požadavek.

Podporovaný vzor zpráv typu cloud-zařízení s protokolem HTTPS je zařízení s přerušovaným připojením, která kontrolují zprávy méně často než každých 25 minut. Pokud chcete snížit pravděpodobnost dosažení limitu fronty, přepněte na AMQP nebo MQTT pro zprávy z cloudu do zařízení.

Případně můžete vylepšit logiku na straně zařízení tak, aby se zprávy ve frontě dokončily, odmítaly nebo opustily rychle, zkrátily dobu trvání nebo zvažte odeslání menšího počtu zpráv. Další informace najdete v části Vypršení platnosti zpráv (doba životnosti) v tématu Vysvětlení zasílání zpráv z cloudu do zařízení z IoT Hubu.

Nakonec zvažte použití rozhraní API pro vyprázdnění fronty k pravidelnému vyčištění nevyřízených zpráv před dosažením limitu.

403006 Překročen maximální limit nahrávání aktivních souborů na zařízení

Může se zobrazit, že požadavek na nahrání souboru selže s kódem chyby 403006 DeviceMaximumActiveFileUploadLimitExceeded a zpráva "Počet aktivních požadavků na nahrání souboru nesmí překročit 10".

K této chybě dochází, protože každý klient zařízení je omezený pro souběžné nahrávání souborů. Limit můžete snadno překročit, pokud vaše zařízení neoznámí Službu IoT Hub při dokončení nahrávání souborů. Tento problém obvykle způsobuje nespolehlivý síť na straně zařízení.

Pokud chcete tuto chybu vyřešit, ujistěte se, že zařízení může okamžitě oznámit dokončení nahrávání souborů ioT Hubu. Pak zkuste snížit hodnotu TTL tokenu SAS pro konfiguraci nahrávání souborů.

404001 zařízení se nenašlo

Během komunikace mezi cloudem a zařízením (C2D), například C2D zpráva, aktualizace dvojčete nebo přímá metoda, se může stát, že operace selže s chybou 404001 DeviceNotFound.

Operace selhala, protože IoT Hub nemůže najít zařízení. Zařízení není zaregistrované nebo je zakázané.

Pokud chcete tuto chybu vyřešit, zaregistrujte ID zařízení, které jste použili, a zkuste to znovu.

404103 zařízení není online

Může se zobrazit, že přímé volání na zařízení selže s chybou 404103 DeviceNotOnline, i když je zařízení online.

Pokud víte, že zařízení je online a přesto se zobrazí chyba, pravděpodobně k chybě došlo, protože zpětné volání přímé metody není v zařízení zaregistrované.

Další informace o správné konfiguraci zařízení pro zpětné volání přímé metody najdete v části Popisovač přímé metody na zařízení v Handle a direct method on a device.

404104 Připojení zařízení bylo vzdáleně uzavřeno

Můžete vidět, že se zařízení v pravidelných intervalech odpojí (například každých 65 minut) a v protokolech prostředků služby IoT Hub uvidíte 404104 DeviceConnectionClosedRemotely . Někdy se také zobrazí 401003 IoTHubUnauthorized a úspěšná událost připojení zařízení méně než minutu poté.

Nebo se zařízení náhodně odpojí a v protokolech prostředků služby IoT Hub se zobrazí 404104 DeviceConnectionClosedRemotely.

Nebo se najednou odpojí mnoho zařízení, v metrice Připojená zařízení (connectedDeviceCount) se zobrazí pokles a v protokolech služby Azure Monitor je více 404104 DeviceConnectionClosedRemotely a 500xxx interní chyby než obvykle.

K této chybě může dojít, protože vypršela platnost tokenu SAS použitého pro připojení ke službě IoT Hub , což způsobí odpojení zařízení službou IoT Hub. Připojení se znovu naváže při aktualizaci tokenu zařízením. Token SAS například ve výchozím nastavení vyprší každou hodinu pro sadu C SDK, což může vést k pravidelnému odpojení. Další informace najdete v tématu 401003 IoTHubUnauthorized.

Mezi další možnosti patří:

  • Zařízení ztratilo základní úroveň síťového připojení delší než má nastaveno MQTT keep-alive, což vedlo k vypršení časového limitu vzdáleného nečinného stavu. Nastavení udržování aktivního spojení MQTT se může lišit podle jednotlivých zařízení.
  • Zařízení odeslalo resetování na úrovni protokolu TCP/IP, ale neodeslalo resetování na úrovni aplikace MQTT DISCONNECT. Zařízení náhle ukončilo základní soketové připojení. Někdy můžou tento problém způsobovat chyby ve starších verzích sady Azure IoT SDK.
  • Aplikace na straně zařízení se zhroutila.

Nebo může docházet k přechodnému problému ve službě IoT Hub. Další informace naleznete v tématu 500xxx Vnitřní chyby.

Vyřešení této chyby:

Poznámka:

Ke spolehlivé správě připojení doporučujeme používat sady SDK zařízení Azure IoT. Další informace najdete v tématu Správa opětovného připojení zařízení k vytváření odolných aplikací.

409001 zařízení již existuje

Při pokusu o registraci zařízení ve službě IoT Hub se může zobrazit, že požadavek selže s chybou 409001 DeviceAlreadyExists.

K této chybě dochází, protože ve službě IoT Hub už existuje zařízení se stejným ID zařízení.

Pokud chcete tuto chybu vyřešit, použijte jiné ID zařízení a zkuste to znovu.

V protokolech se může zobrazit chyba 409002 LinkCreationConflict spolu s odpojením zařízení nebo selháním zpráv zaslaných z cloudu do zařízení.

K této chybě obvykle dochází, když IoT Hub zjistí, že klient má více než jedno připojení. Ve skutečnosti, když přijde nová žádost o připojení pro zařízení s existujícím připojením, IoT Hub ukončí stávající připojení s touto chybou.

V nejběžnějším případě samostatný problém (například 404104 DeviceConnectionClosedRemotely) způsobí odpojení zařízení. Zařízení se pokusí znovu vytvořit připojení okamžitě, ale IoT Hub stále považuje zařízení připojené. IoT Hub zavře předchozí připojení a zaznamená tuto chybu.

Chybná logika na straně zařízení způsobí, že zařízení naváže připojení, i když je jedno už otevřené.

Pokud chcete tuto chybu vyřešit, vyhledejte další chyby v protokolech, které můžete vyřešit, protože tato chyba se obvykle zobrazuje jako vedlejší účinek jiného přechodného problému. Jinak nezapomeňte vydat novou žádost o připojení jenom v případě, že připojení klesne.

Zámek zpráv zařízení 412002 byl ztracen

Při pokusu o odeslání zprávy z cloudu na zařízení se může stát, že požadavek selže kvůli chybě 412002 DeviceMessageLockLost.

K této chybě dochází, protože když zařízení obdrží zprávu ze cloudu do zařízení z fronty (například pomocí ReceiveAsync()), IoT Hub uzamkne zprávu po dobu jedné minuty vzhledem k časovému limitu uzamčení. Pokud se zařízení pokusí dokončit zprávu po vypršení časového limitu uzamčení, Služba IoT Hub vyvolá tuto výjimku.

Pokud Služba IoT Hub nedostane oznámení během jednominutového časového limitu uzamčení, vrátí zprávu zpět do stavu Zařazeno. Zařízení se může pokusit zprávu znovu přijmout. Pokud chcete této chybě zabránit v budoucnu, implementujte logiku na straně zařízení, aby se zpráva dokončila během jedné minuty od přijetí zprávy. Tento časový limit na jednu minutu nejde změnit.

Výjimka omezování 429xxx

Může se zobrazit, že vaše požadavky na IoT Hub selžou s chybou začínající 429 , například:

  • 429000 - Příliš mnoho požadavků
  • 429001 – ThrottlingException: Pro požadovanou operaci byly překročeny limity omezování.
  • 429002 – ThrottleBacklogLimitExceeded: Počet požadavků, které jsou v backlogu kvůli omezování, překročil limit backlogu.
  • 429003 – ThrottlingBacklogTimeout: Požadavky, které byly zařazeny do fronty kvůli omezování, vypršel časový limit pro čekání ve frontě.
  • 429004 – Omezení MaxActiveJobCountExceeded
  • 429005 – Limit pro omezení zařízení překročen

Pouze prostřednictvím služby Azure Monitor můžete monitorovat 429001 v rámci metriky Počet chyb omezování. V současné době ostatní chyby omezování nemají přidruženou metriku, ale zaznamenávají se v protokolech.

Pokud chcete tyto chyby vyřešit, zkontrolujte, jestli nedosahujete limitu omezení tím, že porovnáváte metriku odesílání zpráv telemetrie s dříve zadanými limity. Můžete také zkontrolovat ukazatel Počet chyb zpomalování. Informace o těchto metrikách najdete v tématu Metriky telemetrie zařízení. Informace o tom, jak pomocí metrik můžete monitorovat centrum IoT, najdete v tématu Monitorování služby Azure IoT Hub.

IoT Hub vrací 429001 – OmezeníException pouze po porušení limitu po příliš dlouhou dobu. Toto zpoždění je navrženo tak, aby se vaše zprávy nezahodily, pokud váš IoT hub dostane nárazový provoz. IoT Hub mezitím zpracovává zprávy rychlostí odpovídající operačnímu omezení, která může být pomalá, pokud je ve frontě příliš velký provoz. Další informace najdete v části Řízení datového provozukvóty služby IoT Hub a omezování výkonu.

Pokud narážíte na limity kvót nebo omezení, zvažte rozšíření kapacity vašeho IoT hubu.

500xxx – vnitřní chyby

Může se zobrazit, že váš požadavek na IoT Hub selže s chybou, která začíná 500 nebo nějakým druhem chyby serveru. Mezi možnosti patří:

  • 500001 ServerError: IoT Hub narazil na problém na straně serveru.

  • 500008 GenericTimeout: IoT Hub nemohl před vypršením časového limitu dokončit žádost o připojení.

  • ServiceUnavailable (bez kódu chyby):: Služba IoT Hub zjistila vnitřní chybu.

  • InternalServerError (bez kódu chyby):: Služba IoT Hub zjistila vnitřní chybu.

Odpověď na chybu 500xxx může mít mnoho příčin. Ve všech případech je problém pravděpodobně přechodný. I když tým IoT Hubu tvrdě udržuje smlouvu SLA, u malých podmnožina uzlů IoT Hubu může občas docházet k přechodným chybám. Když se zařízení pokusí připojit k uzlu, u kterého dochází k problémům, zobrazí se tato chyba.

Pokud chcete zmírnit chyby 500xxx, proveďte opětovný pokus ze zařízení. Pokud chcete automaticky spravovat opakování, ujistěte se, že používáte nejnovější verzi Azure IoT Hub SDK. Další informace o osvědčených postupech pro zpracování přechodných chyb a opakování najdete v tématu Zpracování přechodných chyb.

Pokud problém přetrvává, zkontrolujte Zdraví prostředků a Stav Azure a zjistěte, jestli je ve službě IoT Hub známý problém. Můžete také použít funkci ručního převzetí služeb při selhání.

Pokud neexistují žádné známé problémy a problém přetrvává, obraťte se na podporu pro další šetření.

Oddíl 503003 nebyl nalezen.

Může se zobrazit, že požadavky na IoT Hub selžou s chybou 503003 PartitionNotFound.

Tato chyba je interní pro IoT Hub a je pravděpodobně přechodná. Další informace naleznete v tématu 500xxx Vnitřní chyby.

Pokud chcete tuto chybu vyřešit, podívejte se na vnitřní chyby 500xxx.

504101 vypršení časového limitu na bráně

Při pokusu o vyvolání přímé metody ze služby IoT Hub do zařízení se může zobrazit, že požadavek selže s chybou 504101 GatewayTimeout.

K této chybě dochází, protože služba IoT Hub zjistila chybu a nemohla potvrdit, jestli se přímá metoda dokončila před uplynutím časového limitu. Nebo pokud používáte starší verzi sady Azure IoT C# SDK (<1.19.0), můžete propojení AMQP mezi zařízením a IoT Hubem bezobslužně vynechat kvůli chybě.

Pokud chcete tuto chybu vyřešit, spusťte opakování nebo upgrade na nejnovější verzi sady Azure IOT C# SDK.