IoT Hub のクォータと調整

この記事では、IoT Hub のリソースに適用される制限について説明します。

各 Azure サブスクリプションには、最大 50 個の IoT ハブと、最大 1 個の Free レベルのハブを作成できます。

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

ハブのクォータ制限は、Azure portal で確認できます。 IoT ハブの [概要] ページには、[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 メッセージ/秒の制限があります) に 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 ハブ内のユニット数を増やします。

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

その他の制限

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

Operation 制限
デバイス ID とモジュール ID 1つの IoT ハブに登録できるデバイスとモジュールの合計数は、1,000,000 に制限されています。
ファイルのアップロード デバイスごとに 10 個の同時ファイル アップロード。
ジョブ1 コンカレント ジョブの最大数は、1 (Free と S1)、5 (S2)、10 (S3) です。 ただし、コンカレント デバイス インポート/エクスポート ジョブの最大数は、すべてのレベルで 1 です。
ジョブ履歴は、最大で 30 日間保持されます。
エンドポイントの追加 Basic と Standard SKU ハブでは、エンドポイントを 10 個追加できます。 Free SKU ハブには、エンドポイントを 1 個追加できます。
メッセージ ルーティング クエリ Basic と Standard SKU ハブでは、100 個のルーティング クエリを使用できます。 Free 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 この機能は、Basic レベルの IoT Hub では使用できません。 詳しくは、適切な IoT Hub の選び方に関するページをご覧ください。

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

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

Latency

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

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

前に説明したように、IoT Hub ユニットを追加しても、スロットリングには影響しますが、待ち時間に関するメリットや保証が加わることはありません。

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