Поделиться через


Общие сведения об ошибках Центра Интернета вещей Azure и их устранение

В этой статье описываются причины и решения распространенных кодов ошибок, которые могут возникнуть при использовании Центра Интернета вещей.

400027 подключение принудительно закрыто при попытке нового подключения

Ошибка 400027 ConnectionForcefullyClosedOnNewConnection может возникнуть, если устройство сначала отключается, а затем сообщает Communication_Error в качестве ConnectionStatusChangeReason, используя пакет SDK для .NET и тип транспорта MQTT. Кроме того, операция двойника устройства в облако (например, чтение или исправление сообщаемых свойств) или вызов прямого метода завершается сбоем с кодом ошибки 400027.

Эта ошибка возникает, когда другой клиент создает новое подключение к Центру Интернета вещей с помощью того же удостоверения, поэтому Центр Интернета вещей закрывает предыдущее подключение. Центр Интернета вещей не допускает подключения нескольких клиентов с использованием одного и того же удостоверения.

Чтобы устранить эту ошибку, убедитесь, что каждый клиент подключается к Центру Интернета вещей с помощью собственного удостоверения.

401003 Несанкционированный доступ к Центру Интернета вещей

В журналах может наблюдаться последовательность, когда устройства отключаются с 401003 IoTHubUnauthorized, затем следует 404104 DeviceConnectionClosedRemotely, а затем устройства успешно подключаются вскоре после этого.

Кроме того, запросы к Центру Интернета вещей завершаются сбоем с одним из следующих сообщений об ошибках:

  • Отсутствует заголовок авторизации
  • IotHub '*' не содержит указанное устройство "*"
  • Правило авторизации "*" не разрешает доступ для "*"
  • Ошибка аутентификации для этого устройства, обновите токен или сертификат и подключитесь снова.
  • Отпечаток не соответствует конфигурации: Отпечаток: SHA1Hash=*, SHA2Hash=*; Конфигурация: PrimaryThumbprint=*, SecondaryThumbprint=*
  • Субъект [email protected] не авторизован для GET on /exampleOperation из-за отсутствия назначенных разрешений

Эта ошибка возникает потому, что для протокола MQTT некоторые средства разработки зависят от Центра Интернета вещей, который отправляет сигнал об отключении, когда истекает срок действия маркера SAS, чтобы было понятно, когда его нужно обновить. Так:

  1. Срок действия маркера SAS истекает
  2. IoT-хаб уведомляет об истечении срока и отключает устройство с кодом ошибки 401003 IoTHubUnauthorized
  3. Устройство завершает отключение с помощью 404104 DeviceConnectionClosedRemotely
  4. Пакет SDK для Интернета вещей создает новый маркер SAS
  5. Устройство повторно подключается к Центру Интернета вещей

Или Центр Интернета вещей не мог пройти проверку подлинности заголовка аутентификации, правила или ключа. Этот результат может быть вызван любой из причин, приведенных в симптомах.

Чтобы устранить эту ошибку, при использовании пакета SDK Интернета вещей для подключения с помощью строки подключения устройства не требуется никаких действий. Пакет SDK Интернета вещей повторно создает новый маркер для повторного подключения к истечении срока действия маркера SAS.

Срок действия маркера по умолчанию составляет 60 минут по пакетам SDK; Однако для некоторых пакетов SDK срок действия маркера и порог обновления маркера можно настроить. Кроме того, ошибки, возникающие при отключении и повторном подключении устройства в процессе обновления токенов, отличаются для каждого пакета SDK. Чтобы узнать больше и получить информацию о том, как определить, какой пакет SDK используется на вашем устройстве в журналах, см. раздел Поведение отключения устройств MQTT с Azure IoT SDK в разделе Мониторинг, диагностика и устранение неполадок подключений устройств Azure IoT Hub.

Для разработчиков устройств, если объем ошибок является проблемой, переключитесь на пакет SDK C, который продлевает маркер SAS до истечения срока действия. Для AMQP маркер SAS может обновляться без отключения.

Как правило, представленное сообщение об ошибке должно объяснить, как исправить ошибку. Если по какой-то причине у вас нет доступа к подробным сведениям об сообщении об ошибке, убедитесь, что:

  • Срок действия используемого маркера безопасности SAS или другого маркера безопасности не истек.
  • Для аутентификации с использованием сертификата X.509 сертификат устройства или сертификат ЦС, ассоциированный с устройством, не должен быть истекшим. Сведения о регистрации сертификатов ЦС X.509 в Центре Интернета вещей см. в руководстве по созданию и отправке сертификатов для тестирования.
  • Для проверки подлинности отпечатка сертификата X.509 отпечаток сертификата устройства регистрируется в Центре Интернета вещей.
  • Учетные данные авторизации хорошо сформированы для используемого протокола. Дополнительные сведения см. в разделе "Управление доступом к Центру Интернета вещей" с помощью идентификатора Microsoft Entra.
  • Правило авторизации, используемое, имеет разрешение для запрошенной операции.
  • Для последних сообщений об ошибках, начиная с "principal...", эта ошибка может быть устранена, назначив правильный уровень разрешения Azure RBAC пользователю. Например, владелец Центра Интернета вещей может назначить роль "Владелец данных Центра Интернета вещей", которая предоставляет все разрешения. Попробуйте использовать эту роль для устранения проблемы с отсутствием разрешений.

Примечание.

Некоторые устройства могут столкнуться с проблемой смещения времени, если время устройства отличается от времени сервера, превышающего пять минут. Эта ошибка может возникать, когда устройство подключается к Центру Интернета вещей без проблем в течение нескольких недель или даже месяцев, но затем начинает постоянно отклонить подключение. Ошибка также может быть связана с подмножеством устройств, подключенных к хабу Интернета вещей, так как смещение времени может произойти с разной скоростью в зависимости от того, когда устройство впервые подключено или включено.

Часто синхронизация времени с помощью NTP или перезагрузки устройства (которая может автоматически выполнять синхронизацию времени во время загрузки) исправляет проблему и позволяет устройству снова подключиться. Чтобы избежать этой ошибки, настройте устройство для периодической синхронизации времени с помощью NTP. Вы можете запланировать синхронизацию на ежедневно, еженедельно или ежемесячно, в зависимости от величины отклонения устройства. Если на устройстве не удается настроить периодическую синхронизацию NTP, запланируйте периодическую перезагрузку.

403002 превышена квота Центра Интернета вещей

Запросы к Центру Интернета вещей могут завершиться ошибкой 403002 IoTHubQuotaExceeded. На портале Azure список устройств Центра Интернета вещей не загружается.

Эта ошибка обычно возникает, когда превышена квота ежедневного сообщения для Центра Интернета вещей. Чтобы устранить эту ошибку, выполните приведенные ниже действия.

Задание массового импорта также может возвращать эту ошибку, если число устройств, зарегистрированных в центре Интернета вещей, приближается или превышает ограничение квоты для Центра Интернета вещей. Дополнительные сведения см. в разделе «Устранение неполадок с заданиями импорта» в документе «Импорт и экспорт удостоверений устройств в Центре Интернета Вещей в больших объемах».

превышена максимальная глубина очереди устройства 403004

При попытке отправить сообщение об облаке на устройство может появиться сообщение об ошибке 403004 или DeviceMaximumQueueDepthExceeded.

Основная причина этой ошибки заключается в том, что число сообщений, заведенных для устройства, превышает ограничение очереди.

Наиболее вероятной причиной возникновения этого ограничения является то, что вы используете HTTPS для получения сообщения, что приводит к постоянному опросу с помощью ReceiveAsync и, следовательно, к ограничению запроса в IoT-хабе.

Поддерживаемый шаблон для сообщений от облака к устройствам с использованием HTTPS предназначен для устройств, которые периодически подключаются и редко проверяют сообщения (реже чем каждые 25 минут). Чтобы снизить вероятность достижения лимита очереди, переключитесь на AMQP или MQTT для сообщений из облака на устройство.

Кроме того, улучшайте логику на стороне устройства, чтобы завершить, отклонить или отказаться от очередных сообщений быстро, сократить время жизни или рассмотреть возможность отправки меньшего количества сообщений. Дополнительные сведения см. в разделе «Срок действия сообщения (время жизни)» документа «Общие сведения об обмене сообщениями от облака к устройствам из IoT-хаба».

Наконец, рассмотрите возможность использования API очистки очереди для периодической очистки ожидающих сообщений до достижения ограничения.

403006 превышено максимальное ограничение на активную загрузку файлов через устройство

Возможно, запрос на отправку файла завершается сбоем с кодом ошибки 403006 DeviceMaximumActiveFileUploadLimitExceed , а сообщение "Число активных запросов на отправку файлов не может превышать 10".

Эта ошибка возникает, так как у каждого клиента устройства есть ограничение на одновременную загрузку файлов. Вы можете легко превысить ограничение, если устройство не уведомляет Центр Интернета вещей о завершении отправки файлов. Ненадежная сеть на стороне устройства обычно вызывает эту проблему.

Чтобы устранить эту ошибку, убедитесь, что устройство может быстро уведомить о завершении отправки файлов Центра Интернета вещей. Затем попробуйте уменьшить срок жизни маркера SAS для конфигурации отправки файлов.

404001 устройство не найдено

В ходе взаимодействия облака с устройством (C2D), например, при отправке сообщения C2D, обновлении двойника или выполнении прямого метода, можно заметить, что операция завершается с ошибкой 404001 DeviceNotFound.

Сбой операции, так как Центр Интернета вещей не может найти устройство. Устройство не зарегистрировано или отключено.

Чтобы устранить эту ошибку, зарегистрируйте используемый идентификатор устройства, а затем повторите попытку.

404103 устройство не подключено к сети

Возможно, вы увидите, что прямой метод к устройству завершается ошибкой 404103 DeviceNotOnline , даже если устройство подключено к сети.

Если вы знаете, что устройство находится в сети и по-прежнему получает ошибку, скорее всего, произошла ошибка, так как обратный вызов прямого метода не зарегистрирован на устройстве.

Для получения более подробной информации о правильной настройке вашего устройства для обратных вызовов прямых методов см. раздел "Обработка прямого метода на устройстве" в подразделе "Обработка прямого метода на устройстве".

404104 Подключение устройства закрыто удаленно

Вы можете увидеть, что устройства отключаются через регулярный интервал (например, каждые 65 минут) и отображаются 404104 DeviceConnectionClosedRemotely в журналах ресурсов Центра Интернета вещей. Иногда также отображается 401003 IoTHubUnauthorized и успешное событие подключения к устройству менее чем через минуту.

Или устройства отключаются случайным образом, и вы видите 404104 DeviceConnectionClosedRemotely в журналах ресурсов Центра Интернета вещей.

Или, многие устройства отключаются одновременно, вы видите падение в метрике подключенных устройств (connectedDeviceCount), и есть больше 404104 DeviceConnectionClosedRemotely и 500xxx внутренние ошибки в журналах Azure Monitor по сравнению с обычным.

Эта ошибка может возникать из-за истечения срока действия маркера SAS, используемого для подключения к Центру Интернета вещей , что приводит к отключению устройства в Центре Интернета вещей. Соединение восстанавливается, когда устройство обновляет маркер. Например, срок действия маркера SAS истекает каждый час по умолчанию для пакета SDK для C, что может привести к регулярному отключению. См. дополнительные сведения в разделе 401003 IoTHubUnauthorized.

К некоторым другим возможностям относятся:

  • Устройство потеряло базовое сетевое подключение дольше, чем MQTT в режиме поддержания активности, что привело к удаленному времени ожидания простоя. Параметр MQTT keep-alive может отличаться для каждого устройства.
  • Устройство отправило сброс на уровне TCP/IP, но не отправило сброс на уровне приложения MQTT DISCONNECT. По сути, устройство резко закрыло основное соединение с сокетом. Иногда эта проблема вызвана ошибками в более ранних версиях пакета SDK Для Интернета вещей Azure.
  • Сбой приложения на стороне устройства.

Кроме того, Центр Интернета вещей может столкнуться с временной проблемой. Дополнительные сведения см. в разделе 500xxx Internal errors.

Чтобы устранить эту ошибку, выполните приведенные ниже действия.

Для надежного управления подключениями рекомендуется использовать пакеты SDK для устройств Azure IoT. Дополнительные сведения см. в статье "Управление подключением устройств" для создания устойчивых приложений

устройство 409001 уже существует

При попытке зарегистрировать устройство в Центре Интернета вещей может появиться сообщение об ошибке 409001 DeviceAlreadyExists.

Эта ошибка возникает, так как в Центре Интернета вещей уже есть устройство с тем же идентификатором устройства.

Чтобы устранить эту ошибку, используйте другой идентификатор устройства и повторите попытку.

В журналах может появиться ошибка 409002 LinkCreationConflict при отключении устройства или сбое сообщения от облака к устройству.

Как правило, эта ошибка возникает, когда Центр Интернета вещей обнаруживает, что клиент имеет несколько подключений. Фактически, когда новый запрос на подключение поступает для устройства с существующим подключением, Центр Интернета вещей закрывает существующее соединение с этой ошибкой.

В большинстве случаев отдельная проблема (например, 404104 DeviceConnectionClosedRemotely) приводит к отключению устройства. Устройство пытается немедленно восстановить подключение, но Центр Интернета вещей по-прежнему считает устройство подключенным. Центр Интернета вещей закрывает предыдущее подключение и регистрирует эту ошибку.

Или неисправная логика на стороне устройства приводит к тому, что устройство устанавливает подключение, когда оно уже открыто.

Чтобы устранить эту ошибку, найдите другие ошибки в журналах, которые можно устранить, так как эта ошибка обычно отображается как побочный эффект другой временной проблемы. В противном случае не забудьте отправить новый запрос на подключение, только если соединение прерывается.

412002 потеря блокировки сообщения устройства

При попытке отправить сообщение об облаке на устройство может появиться сообщение об ошибке 412002 DeviceMessageLockLost.

Эта ошибка происходит, потому что, когда устройство получает облачное сообщение от устройства из очереди (например, с помощью ReceiveAsync()), Центр Интернета вещей блокирует это сообщение на время блокировки, которое составляет одну минуту. Если устройство пытается завершить сообщение после истечения времени блокировки, Центр Интернета вещей выбрасывает это исключение.

Если Центр Интернета вещей не получает уведомление в течение одной минуты времени ожидания блокировки, оно возвращает сообщение в состояние enqueued . Устройство может попытаться снова получить сообщение. Чтобы предотвратить возникновение ошибки в будущем, реализуйте логику на стороне устройства, чтобы завершить сообщение в течение одной минуты после получения сообщения. Это одноминутное время ожидания не может быть изменено.

исключение регулирования 429001

Вы можете заметить, что ваши запросы к Центру Интернета вещей могут завершаться ошибкой 429001 ThrottlingException.

Эта ошибка возникает при превышении ограничений регулирования Центра Интернета вещей для запрошенной операции.

Чтобы устранить эту ошибку, проверьте, превышаете ли вы порог ограничения частоты, сравнивая метрику попыток отправки телеметрических сообщений с ранее указанными пределами. Можно также проверить количество ошибок регулирования . Сведения об этих метриках см. в разделе "Метрики телеметрии устройства". Сведения об использовании метрик для мониторинга Центра Интернета вещей см. в статье "Мониторинг Центра Интернета вещей Azure".

IoT-хаб возвращает код ошибки 429 ThrottlingException только после того, как лимит нарушается в течение слишком длительного времени. Эта задержка выполняется для того, чтобы ваши сообщения не терялись, если на ваш центр Интернета вещей происходит скачок трафика. В то же время IoT Hub обрабатывает сообщения с ограниченной скоростью операций, которая может замедлиться при большом объеме трафика в очереди. Для получения дополнительной информации см. раздел «Управление трафиком» в квотах и ограничениях по скорости узлов сети IoT.

Мы рекомендуем выполнить масштабирование Центра Интернета вещей, если вы превысили квоту или ограничения регулирования.

Внутренние ошибки 500xxx

Вы можете увидеть, что запрос к Центру Интернета вещей завершается ошибкой, которая начинается с 500 и(или) какой-то ошибки сервера. Ниже приведены некоторые возможности.

  • 500001 ServerError: Центр Интернета вещей столкнулся с проблемой на стороне сервера.

  • 500008 GenericTimeout: Центр Интернета вещей не мог завершить запрос подключения до истечения времени ожидания.

  • ServiceUnavailable (без кода ошибки): Центр Интернета вещей столкнулся с внутренней ошибкой.

  • InternalServerError (без кода ошибки): Центр Интернета вещей столкнулся с внутренней ошибкой.

Существует множество причин для ответа на ошибку 500xxx. Во всех случаях проблема, скорее всего, является временной. Хотя команда IoT Hub упорно работает над поддержанием SLA, небольшие подмножества узлов IoT Hub могут иногда испытывать временные сбои. Когда устройство пытается подключиться к узлу с проблемами, вы получите эту ошибку.

Чтобы устранить ошибки 500xxx, выполните повторную попытку с устройства. Чтобы автоматически управлять повторными попытками, убедитесь, что вы используете последнюю версию пакетов SDK Центра Интернета вещей Azure. Дополнительные сведения о рекомендациях по обработке временных сбоев и повторных попыток см. в разделе "Обработка временных сбоев".

Если проблема сохраняется, проверьте работоспособность ресурсов и состояние Azure , чтобы узнать, есть ли у Центра Интернета вещей известная проблема. Вы также можете использовать функцию аварийного переключения вручную.

Если нет известных проблем и проблема продолжается, обратитесь в службу поддержки для дальнейшего расследования.

Раздел 503003 не найден

Возможно, запросы к Центру Интернета вещей завершаются ошибкой 503003 PartitionNotFound.

Эта ошибка является внутренней для Центра Интернета вещей и, скорее всего, является временной. Дополнительные сведения см. в разделе 500xxx Internal errors.

Чтобы устранить эту ошибку, см. сведения о внутренних ошибках 500xxx.

504101 время ожидания шлюза

При попытке вызвать прямой метод из Центра Интернета вещей на устройство может появиться сообщение об ошибке 504101 GatewayTimeout.

Эта ошибка возникает, так как Центр Интернета вещей столкнулся с ошибкой и не смог подтвердить, завершился ли прямой метод до истечения времени ожидания. Кроме того, при использовании более ранней версии пакета SDK для Интернета вещей Azure (<1.19.0) связь AMQP между устройством и Центром Интернета вещей может быть удалена автоматически из-за ошибки.

Чтобы устранить эту ошибку, выполните повторную попытку или обновление до последней версии пакета SDK для Azure IOT C#.