IoT Hub のクォータと調整

この記事では、IoT ハブのクォータについて説明し、調整がどのように機能するかを理解するのに役立つ情報を提供します。

各 Azure サブスクリプションに最大 50 個の IoT Hub と最大 1 個の Free ハブを割り当てることができます。

各 IoT ハブは、特定のレベルのユニットでプロビジョニングされます。 レベルとユニット数により、ハブで 1 日に送信できるメッセージの 1 日あたりの最大クォータが決定されます。 1 日あたりのクォータを計算するために使用されるメッセージ サイズは、無料レベルのハブでは 0.5 KB、他のすべてのレベルでは 4 KB です。 詳細については、「Azure IoT Hub の価格」または「ソリューションに適した IoT Hub のレベルを選択する」を参照してください。

ハブのクォータ制限は、Azure portal の IoT Hub 料金ページにある、[ユニットごとのメッセージの合計数 (1 日あたり)] 列に表示されます。

また、レベルでは、IoT Hub がすべての操作に適用するスロットル制限も決まります。

操作のスロットル

操作のスロットルは、ごく限られた範囲に適用される、不正使用を回避するためのレート制限です。 また、これはトラフィック シェイプの影響も受けます。

調整制限に達したり超過したりしないように、呼び出しを調整することをお勧めします。 上限に達した場合、IoT Hub はエラーコード 429 で応答し、クライアントはバックオフして再試行する必要があります。 これらの制限はハブあたり (場合によってはハブ/ユニットあたり) です。 詳細については、「再試行パターン」を参照してください。

課金される操作と課金される状況に関する価格詳細については、課金情報に関するページを参照してください。

Basic レベルと Standard レベルの操作

次の表に、すべての IoT Hub レベルで使用可能な操作に適用されるスロットルを示します。 値は個々のハブのものです。

スロットル Free、B1、S1 B2、S2 B3、S3
ID レジストリの操作 (作成、取得、一覧表示、更新、削除) 1.67/sec/unit (100/分/単位) 1.67/sec/unit (100/分/単位) 83.33/秒/ユニット (5,000/分/ユニット)
新しいデバイス接続 (この制限は、接続の総数ではなく、新規接続 のレートに適用されます) 100/秒または 12/秒/ユニット以上
たとえば、2 ユニットの S1 の場合、2*12 = 24 新規接続/秒ですが、ユニット全体では少なくとも 100 新規接続/秒です。 9 ユニットの S1 の場合、ユニット全体で 108 新規接続/秒 (9*12) となります。
120 新規接続/秒/ユニット 6,000 新規接続/秒/ユニット
デバイスからクラウドへの送信 100 送信操作/秒または 12 送信操作/秒/ユニット以上
たとえば、2 ユニットの S1 では 2*12 = 24/秒ですが、ユニット全体では少なくとも 100 送信操作/秒となります。 9 ユニットの S1 の場合、ユニット全体で 108 送信操作/秒 (9*12) となります。
120 送信操作/秒/ユニット 6,000 送信操作/秒/ユニット
ファイルのアップロード 1.67 ファイル アップロード開始/秒/ユニット (100/分/ユニット) 1.67 ファイル アップロード開始/秒/ユニット (100/分/ユニット) 83.33 ファイル アップロード開始/秒/ユニット (5,000/分/ユニット)
クエリ 20/分/ユニット 20/分/ユニット 1,000/分/ユニット

Standard レベルの操作

次の表に、Standard レベルでのみ使用可能な操作に適用されるスロットルを示します。 値は個々のハブのものです。

スロットル Free および S1 S2 S3
クラウドからデバイスへの送信 1.67 送信操作/秒/ユニット (100 メッセージ/分/ユニット) 1.67 送信操作/秒/ユニット (100 送信操作/分/ユニット) 83.33 送信操作/秒/ユニット (5,000 送信操作/分/ユニット)
クラウドからデバイスへの受信
(デバイスが HTTPS を使用する場合のみ)
16.67 受信操作/秒/ユニット (1,000 受信操作/分/ユニット) 16.67 受信操作/秒/ユニット (1,000 受信操作/分/ユニット) 833.33 受信操作/秒/ユニット (50,000 受信操作/分/ユニット)
ダイレクト メソッド 160 KB/秒/ユニット1 480 KB/秒/ユニット1 24 MB/秒/ユニット1
ツイン (デバイスとモジュール) の読み取り 100/秒 100/秒または 10/秒/ユニット以上 500/秒/ユニット
ツインの更新 (デバイスとモジュール) 50/秒 50/秒または 5/秒/ユニット以上 250/秒/ユニット
ジョブ操作
(作成、更新、一覧表示、削除)
1.67/sec/unit (100/分/単位) 1.67/sec/unit (100/分/単位) 83.33/秒/ユニット (5,000/分/ユニット)
ジョブ デバイス操作
(ツインの更新、ダイレクト メソッドの呼び出し)
10/秒 10/秒または 1/秒/ユニット以上 50/秒/ユニット
構成とエッジのデプロイ
(作成、更新、一覧表示、削除)
0.33/秒/単位 (20/分/単位) 0.33/秒/単位 (20/分/単位) 0.33/秒/単位 (20/分/単位)
デバイス ストリーム開始速度 5 つの新しいストリーム/秒 5 つの新しいストリーム/秒 5 つの新しいストリーム/秒
同時接続デバイス ストリームの最大数 50 50 50
デバイス ストリーム データ転送の最大数 (1 日あたりの合計ボリューム) 300 MB 300 MB 300 MB

1 調整メーター サイズは 4 KB です。 調整は、要求ペイロードのサイズのみに基づきます。

調整の詳細

  • メーター サイズは、調整制限が使用される増分で決まります。 直接呼び出しのペイロードが 0 KB から 4 KB の場合は、4 KB としてカウントされます。 160 KB/秒/ユニットの上限に達するまで、ユニットごとに 1 秒あたり最大 40 回の呼び出しを行うことができます。

    同様に、ペイロードが 4 KB ~ 8 KB の場合は、それぞれが 8 KB の呼び出しアカウントを使用し、上限に達するまでユニットごとに 1 秒あたり最大 20 回の呼び出しを行うことができます。

    最後に、ペイロードサイズが 156 KB から 160 KB の間の場合、160 KB/秒/ユニットの制限に達する前に、ハブでユニットごとに毎秒 1 回のコールのみを行うことができます。

  • レベル S3 の "ジョブ デバイス操作 (ツインの更新、ダイレクト メソッドの呼び出し) " の場合は、ジョブを使用してメソッドを呼び出す場合にのみ、50/秒/ユニットが適用されます。 ダイレクト メソッドを直接呼び出す場合は、元の調整制限である 24 MB/秒/ユニット (S3 の場合) が適用されます。

  • cloud-to-device および device-to-cloud のスロットルによって、4 KB のチャンクに関係なくメッセージを送信できる最大レートが決まります。 device-to-cloud メッセージの最大サイズは 256 KB です。cloud-to-device メッセージの最大サイズは 64 KB です。 これらは、メッセージの種類ごとの最大メッセージ サイズです。

トラフィック シェイプ

トラフィックのバーストに対応できるように、IoT Hub では限られた期間だけスロットルを上回る要求を受け入れます。 これらの要求のうち最初のいくつかは即座に処理されます。 ただし、要求の数が引き続きスロットルに違反している場合は、IoT Hub によって要求がキューに入れられ、制限された速度で要求が処理されます。 この効果は "トラフィック シェイプ" と呼ばれます。 さらに、このキューのサイズも制限されています。 スロットル違反が続くと、最後にはキューがいっぱいになり、IoT Hub は 429 ThrottlingException で要求を拒否し始めます。

たとえば、シミュレートされたデバイスを使用して、S1 IoT Hub (100/秒の device-to-cloud 送信という制限あり) に 1 秒あたり 200 個の device-to-cloud メッセージを送信するとします。 最初の 1、2 分の間、メッセージは即座に処理されます。 ただし、デバイスが引き続きスロットルの制限を超えるメッセージを送信するため、IoT Hub は 1 秒あたり 100 個のみのメッセージの処理を開始し、残りをキューに配置します。 ユーザーは待機時間が長くなっていることに気付き始めます。 最終的にキューがいっぱいになると 429 ThrottlingException が発生し始め、IoT Hub のメトリックの "スロットル エラー数" が増え始めます。 メトリックに基づいてアラートとグラフを作成する方法については、IoT Hub の監視に関するページを参照してください。

ID レジストリ操作のスロットル

デバイス ID レジストリの操作は、デバイスの管理とプロビジョニングのシナリオにおける実行時の使用を意図したものです。 多数のデバイス ID の読み取りまたは更新は、ジョブのインポートとエクスポートによってサポートされています。

(一括インポートおよびエクスポートのジョブ "ではなく") 一括レジストリ更新操作を使用して ID 操作を開始する場合は、同じスロットル制限が適用されます。 たとえば、一括操作を送信して 50 台のデバイスを作成する必要あり、1 ユニットを含む S1 IoT Hub がある場合、1 分あたりに受け入れられるのはこれらの一括要求の 2 つのみです。 この制限は、1 つのユニットを含む S1 IoT Hub の ID 操作スロットルが 100/分/ユニットであるためです。 また、この場合は制限に達しているため、同じ 1 分間の 3 つ目以降の要求は拒否されます。

デバイス接続のスロットル

"デバイスの接続" スロットルは、IoT Hub を使用して新しいデバイス接続を確立できる速度を制御します。 デバイスの接続 スロットルでは、同時に接続されるデバイスの最大数は制御されません。 "デバイスの接続" レートのスロットルは、IoT Hub にプロビジョニングされたユニット数に依存します。

たとえば、1 つの S1 ユニットを購入した場合、1 秒あたり 100 接続のスロットルを利用できます。 したがって、100,000 個のデバイスに接続するには、少なくとも 1,000 秒 (約 16 分) かかります。 ただし、ID レジストリに登録されたデバイスの数だけ、同時に接続されたデバイスを持つことができます。

その他の制限

IoT Hub により、その他の運用上の制限が適用されます。

Operation 制限
デバイス 1つの IoT ハブに登録できるデバイスとモジュールの合計数は、1,000,000 に制限されています。
ファイルのアップロード デバイスごとに 10 個の同時ファイル アップロード。
ジョブ1 コンカレント ジョブの最大数は 1 (Free および S1)、5 (S2)、および 10 (S3) です。 ただし、コンカレント デバイス インポート/エクスポート ジョブの最大数は、すべてのレベルで 1 です。
ジョブ履歴は、最大で 30 日間保持されます。
エンドポイントの追加 Basic および Standard SKU ハブには、エンドポイントを 10 個追加できます。 無料の SKU ハブには、エンドポイントを 1 個追加できます。
メッセージ ルーティング クエリ Basic および Standard SKU ハブには、100 個のルーティング クエリが含まれる場合があります。 無料の SKU ハブには、5 個のルーティング クエリを設定できます。
メッセージ エンリッチメント Basic および Standard SKU ハブには、最大 10 個のメッセージ エンリッチメントを設定できます。 Free SKU ハブには、最大 2 個のメッセージ エンリッチメントを設定できます。
デバイスからクラウドへのメッセージ 最大メッセージ サイズは 256 KB
cloud-to-device のメッセージング1 最大メッセージ サイズは 64 KB。 デバイスあたりの配信の保留中のメッセージの最大数は 50。
ダイレクト メソッド1 ダイレクト メソッドのペイロードの最大サイズは、要求に 128 KB、応答に 128 KB です。
デバイスおよびモジュールの自動構成1 Basic または Standard SKU ハブあたり 100 構成。 無料の SKU ハブあたり 10 構成。
IoT Edge の自動デプロイ1 デプロイあたり 50 モジュール。 Basic または Standard SKU ハブあたり 100 デプロイ (多層デプロイを含む)。 無料の SKU ハブあたり 10 デプロイ。
ツイン1 必要なプロパティ セクションと報告されたプロパティ セクションの最大サイズはそれぞれ 32 KB です。 タグ セクションの最大サイズは 8 KB です。 各セクションの各プロパティの最大サイズは 4 KB です。
共有アクセス ポリシー 共有アクセス ポリシーの最大数は 16 です。 この制限内では、"サービス接続" アクセスを許可する共有アクセス ポリシーの最大数は 10 です。
送信ネットワーク アクセスを制限する FQDN の許容最大数は 20 です。
x509 CA 証明書 IoT Hub に登録可能な x509 CA 証明書の最大数は 25 です。

1 この機能は、IoT Hub の Basic レベルでは使用できません。 詳しくは、適切な IoT Hub の選び方に関するページをご覧ください。

クォータまたはスロットルの制限値を増やす

いつでも、IoT ハブにプロビジョニングされたユニットの数を増やすことで、クォータやスロットルの制限値を増やすことができます。

Latency

IoT Hub は、すべての操作の待機時間を短くするように努めています。 ただし、ネットワークの状態やその他の予測不能な要因のために、特定の待機時間を保証することはできません。 ソリューションを設計するときに、次のようなことを行う必要があります。

  • どの IoT Hub 操作についても最大待機時間を想定しない。
  • IoT Hub は、デバイスに最も近い Azure リージョンにプロビジョニングする。
  • デバイスまたはデバイスに最も近いゲートウェイで Azure IoT Edge を使用して待機時間に依存する操作を実行することを検討する。

複数の IoT Hub ユニットは、前述したように調整に影響を与えますが、待機時間に関する追加のメリットや保証が提供されることはありません。

操作の待機時間が予想外に増加した場合は、Microsoft サポートにお問い合わせください。

次のステップ

IoT Hub スロットルの動作の詳細については、ブログ投稿「IoT Hub throttling and you (IoT Hub スロットルの操作)」を参照してください。