Resource Manager の要求のスロットルThrottling Resource Manager requests

この記事では、Azure Resource Manager を使って要求を調整する方法について説明します。This article describes how Azure Resource Manager throttles requests. 制限に達する前に残っている要求の数を追跡する方法と、制限に達したときに対応する方法を示します。It shows you how to track the number of requests that remain before reaching the limit, and how to respond when you've reached the limit.

調整は 2 つのレベルで行われます。Throttling happens at two levels. Azure Resource Manager を使って、サブスクリプションとテナントの要求を調整します。Azure Resource Manager throttles requests for the subscription and tenant. 要求がサブスクリプションとテナントの調整制限内に収まる場合、Resource Manager によって要求はリソース プロバイダーにルーティングされます。If the request is under the throttling limits for the subscription and tenant, Resource Manager routes the request to the resource provider. リソース プロバイダーでは、その操作に合わせた調整制限が適用されます。The resource provider applies throttling limits that are tailored to its operations. 次の図は、要求がユーザーから Azure Resource Manager とリソース プロバイダーに送信されるときに調整がどのように適用されるかを示しています。The following image shows how throttling is applied as a request goes from the user to Azure Resource Manager and the resource provider.

要求の調整

サブスクリプションとテナントの制限Subscription and tenant limits

すべてのサブスクリプションレベルとテナントレベルの操作には、調整制限が適用されます。Every subscription-level and tenant-level operation is subject to throttling limits. サブスクリプション要求 (サブスクリプション内のリソース グループの取得など) では、サブスクリプション ID を渡す必要があります。Subscription requests are ones that involve passing your subscription ID, such as retrieving the resource groups in your subscription. テナント要求 (有効な Azure の場所の取得など) には、サブスクリプション ID は含まれません。Tenant requests don't include your subscription ID, such as retrieving valid Azure locations.

次の表は、1 時間あたりの既定の調整制限を示しています。The default throttling limits per hour are shown in the following table.

スコープScope 操作Operations 制限Limit
サブスクリプションSubscription 読み取りreads 1200012000
サブスクリプションSubscription 削除deletes 1500015000
サブスクリプションSubscription 書き込みwrites 12001200
TenantTenant 読み取りreads 1200012000
TenantTenant 書き込みwrites 12001200

これらの制限は、要求を行うセキュリティ プリンシパル (ユーザーまたはアプリケーション) と、サブスクリプション ID またはテナント ID の範囲に設定されます。These limits are scoped to the security principal (user or application) making the requests and the subscription ID or tenant ID. 複数のセキュリティ プリンシパルから要求が発信されると、サブスクリプションまたはテナント全体の制限は、1 時間あたり 12,000 件および 1,200 件を超えます。If your requests come from more than one security principal, your limit across the subscription or tenant is greater than 12,000 and 1,200 per hour.

これらの制限は、各 Azure Resource Manager インスタンスに適用されます。These limits apply to each Azure Resource Manager instance. すべての Azure リージョンに複数のインスタンスがあり、Azure Resource Manager はすべての Azure リージョンにデプロイされます。There are multiple instances in every Azure region, and Azure Resource Manager is deployed to all Azure regions. したがって、実際の制限はこれらの制限よりも高くなります。So, in practice, the limits are higher than these limits. 通常、ユーザーからの要求は、Azure Resource Manager の異なるインスタンスによって処理されます。The requests from a user are usually handled by different instances of Azure Resource Manager.

リソース プロバイダーの制限Resource provider limits

リソース プロバイダーでは、独自の調整制限が適用されます。Resource providers apply their own throttling limits. Resource Manager では、プリンシパル ID と Resource Manager のインスタンスによって調整を行うため、リソース プロバイダーには前のセクションの既定の制限よりも多くの要求が送信される可能性があります。Because Resource Manager throttles by principal ID and by instance of Resource Manager, the resource provider might receive more requests than the default limits in the previous section.

このセクションでは、広く使用されているいくつかのリソース プロバイダーの調整制限について説明します。This section discusses the throttling limits of some widely used resource providers.

ストレージの調整Storage throttling

次の制限は、Azure Resource Manager と Azure Storage を使用して管理操作を実行しているときにのみ適用されます。The following limits apply only when you perform management operations by using Azure Resource Manager with Azure Storage.

リソースResource 制限Limit
Storage アカウント管理操作数 (読み取り)Storage account management operations (read) 5 分あたり 800800 per 5 minutes
Storage アカウント管理操作数 (書き込み)Storage account management operations (write) 1 秒あたり 10 または 1 時間あたり 1,20010 per second / 1200 per hour
Storage アカウント管理操作数 (リスト)Storage account management operations (list) 5 分あたり 100100 per 5 minutes

Network throttlingNetwork throttling

Microsoft.Network リソース プロバイダーでは、次の調整制限が適用されます。The Microsoft.Network resource provider applies the following throttle limits:

操作Operation 制限Limit
書き込み/削除 (PUT)write / delete (PUT) 5 分あたり 10001000 per 5 minutes
読み取り (GET)read (GET) 5 分あたり 1000010000 per 5 minutes

コンピューティング調整Compute throttling

コンピューティング操作の調整制限の詳細については、「API の調整エラーのトラブルシューティング」のコンピューティングに関する説明を参照してください。For information about throttling limits for compute operations, see Troubleshooting API throttling errors - Compute.

仮想マシン スケール セット内の仮想マシン インスタンスを確認するには、仮想マシン スケール セットの操作を使用します。For checking virtual machine instances within a virtual machine scale set, use the Virtual Machine Scale Sets operations. たとえば、仮想マシン スケール セット VM - 一覧をパラメーターと共に使用して、仮想マシン インスタンスの電源状態を確認します。For example, use the Virtual Machine Scale Set VMs - List with parameters to check the power state of virtual machine instances. この API を使うと、要求の数を減らすことができます。This API reduces the number of requests.

Azure Resource Graph の調整Azure Resource Graph throttling

Azure Resource Graph では、その操作に対する要求数が制限されます。Azure Resource Graph limits the number of requests to its operations. この記事内の、残りの要求数を確認する方法と、上限に達したときの対処方法の手順は、Resource Graph にも該当します。The steps in this article to determine the remaining requests and how to respond when the limit is reached also apply to Resource Graph. ただし、Resource Graph は独自の制限とリセット レートを設定します。However, Resource Graph sets its own limit and reset rate. 詳細については、Resource Graph スロットル ヘッダーに関する記事をご覧ください。For more information, see Resource Graph throttling headers.

エラー コードError code

上限に達すると、HTTP 状態コード 429 Too many requests が返されます。When you reach the limit, you receive the HTTP status code 429 Too many requests. 応答には Retry-After 値が含まれます。これは、次の要求を送信する前にアプリケーションの待機 (またはスリープ) が必要な秒数を示します。The response includes a Retry-After value, which specifies the number of seconds your application should wait (or sleep) before sending the next request. この再試行値が経過する前に要求を送信した場合、要求は処理されず、新しい再試行値が返されます。If you send a request before the retry value has elapsed, your request isn't processed and a new retry value is returned.

指定された時間待機した後、Azure への接続を閉じてから開き直すこともできます。After waiting for specified time, you can also close and reopen your connection to Azure. 接続をリセットすることで、Azure Resource Manager の別のインスタンスに接続できます。By resetting the connection, you may connect to a different instance of Azure Resource Manager.

Azure SDK を使用している場合は、SDK に自動再試行構成が含まれている可能性があります。If you're using an Azure SDK, the SDK may have an auto retry configuration. 詳細については、「特定のサービスの再試行ガイダンス」を参照してください。For more information, see Retry guidance for Azure services.

リソース プロバイダーによっては、一時的な問題を報告するために 429 を返します。Some resource providers return 429 to report a temporary problem. この問題は、要求が直接の原因ではないオーバーロード条件の可能性があります。The problem could be an overload condition that isn't directly caused by your request. または、ターゲット リソースまたは依存リソースの状態に関する一時的なエラーを表す可能性があります。Or, it could represent a temporary error about the state of the target resource or dependent resource. たとえば、ターゲット リソースが別の操作によってロックされている場合、ネットワーク リソース プロバイダーからは RetryableErrorDueToAnotherOperation エラー コードと共に 429 が返されます。For example, the network resource provider returns 429 with the RetryableErrorDueToAnotherOperation error code when the target resource is locked by another operation. 調整と一時的な状態のどちらによるエラーかを判断するには、応答のエラーの詳細を確認します。To determine if the error comes from throttling or a temporary condition, view the error details in the response.

残りの要求数Remaining requests

残りの要求数を確認するには、応答ヘッダーを調べます。You can determine the number of remaining requests by examining response headers. 読み取り要求では、残りの読み取り要求数の値がヘッダーに返されます。Read requests return a value in the header for the number of remaining read requests. 書き込み要求には、残りの書き込み要求数の値が含まれます。Write requests include a value for the number of remaining write requests. これらの値を確認できる応答ヘッダーを次の表に示します。The following table describes the response headers you can examine for those values:

応答ヘッダーResponse header 説明Description
x-ms-ratelimit-remaining-subscription-readsx-ms-ratelimit-remaining-subscription-reads サブスクリプション スコープの残りの読み取り要求数。Subscription scoped reads remaining. この値は読み取り操作で返されます。This value is returned on read operations.
x-ms-ratelimit-remaining-subscription-writesx-ms-ratelimit-remaining-subscription-writes サブスクリプション スコープの残りの書き込み要求数。Subscription scoped writes remaining. この値は書き込み操作で返されます。This value is returned on write operations.
x-ms-ratelimit-remaining-tenant-readsx-ms-ratelimit-remaining-tenant-reads テナント スコープの残りの読み取り要求数。Tenant scoped reads remaining
x-ms-ratelimit-remaining-tenant-writesx-ms-ratelimit-remaining-tenant-writes テナント スコープの残りの書き込み要求数。Tenant scoped writes remaining
x-ms-ratelimit-remaining-subscription-resource-requestsx-ms-ratelimit-remaining-subscription-resource-requests サブスクリプション スコープの残りのリソースの種類の要求数。Subscription scoped resource type requests remaining.

このヘッダー値は、サービスが既定の上限をオーバーライドした場合にのみ返されます。This header value is only returned if a service has overridden the default limit. Resource Manager は、サブスクリプションの読み取り要求数または書き込み要求数の代わりにこの値を追加します。Resource Manager adds this value instead of the subscription reads or writes.
x-ms-ratelimit-remaining-subscription-resource-entities-readx-ms-ratelimit-remaining-subscription-resource-entities-read サブスクリプション スコープの残りのリソースの種類収集要求数。Subscription scoped resource type collection requests remaining.

このヘッダー値は、サービスが既定の上限をオーバーライドした場合にのみ返されます。This header value is only returned if a service has overridden the default limit. この値は、残りの収集要求数 (リソースのリストの取得) を示します。This value provides the number of remaining collection requests (list resources).
x-ms-ratelimit-remaining-tenant-resource-requestsx-ms-ratelimit-remaining-tenant-resource-requests テナント スコープの残りのリソースの種類の要求数。Tenant scoped resource type requests remaining.

このヘッダーはテナント レベルの要求専用であり、サービスが既定の上限をオーバーライドした場合にのみ追加されます。This header is only added for requests at tenant level, and only if a service has overridden the default limit. Resource Manager は、テナントの読み取り要求数または書き込み要求数の代わりにこの値を追加します。Resource Manager adds this value instead of the tenant reads or writes.
x-ms-ratelimit-remaining-tenant-resource-entities-readx-ms-ratelimit-remaining-tenant-resource-entities-read テナント スコープの残りのリソースの種類収集要求数。Tenant scoped resource type collection requests remaining.

このヘッダーはテナント レベルの要求専用であり、サービスが既定の上限をオーバーライドした場合にのみ追加されます。This header is only added for requests at tenant level, and only if a service has overridden the default limit.

リソース プロバイダーからは、残りの要求に関する情報と共に応答ヘッダーが返されることもあります。The resource provider can also return response headers with information about remaining requests. コンピューティング リソース プロバイダーから返される応答ヘッダーの詳細については、「呼び出しレートの情報提供応答ヘッダー」を参照してください。For information about response headers returned by the Compute resource provider, see Call rate informational response headers.

ヘッダー値の取得Retrieving the header values

コードまたはスクリプトでこれらのヘッダー値を取得する方法は、任意のヘッダー値を取得する方法と変わりはありません。Retrieving these header values in your code or script is no different than retrieving any header value.

たとえば、C# では、次のコードを使用して response という名前の HttpWebResponse オブジェクトからヘッダー値を取得します。For example, in C#, you retrieve the header value from an HttpWebResponse object named response with the following code:

response.Headers.GetValues("x-ms-ratelimit-remaining-subscription-reads").GetValue(0)

PowerShell では、Invoke-WebRequest 操作からヘッダー値を取得します。In PowerShell, you retrieve the header value from an Invoke-WebRequest operation.

$r = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/{guid}/resourcegroups?api-version=2016-09-01 -Method GET -Headers $authHeaders
$r.Headers["x-ms-ratelimit-remaining-subscription-reads"]

詳細な PowerShell の例については、サブスクリプションの Resource Manager の制限を確認する方法に関するページを参照してください。For a complete PowerShell example, see Check Resource Manager Limits for a Subscription.

デバッグのために残りの要求数を確認する場合は、PowerShell コマンドレットで -Debug パラメーターを指定します。If you want to see the remaining requests for debugging, you can provide the -Debug parameter on your PowerShell cmdlet.

Get-AzResourceGroup -Debug

次の応答値を含む多くの値が返されます。Which returns many values, including the following response value:

DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
OK

Headers:
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-reads: 11999

書き込み制限数を取得するには、書き込み操作を使用します。To get write limits, use a write operation:

New-AzResourceGroup -Name myresourcegroup -Location westus -Debug

次の値を含む多くの値が返されます。Which returns many values, including the following values:

DEBUG: ============================ HTTP RESPONSE ============================

Status Code:
Created

Headers:
Pragma                        : no-cache
x-ms-ratelimit-remaining-subscription-writes: 1199

Azure CLI では、より詳細なオプションを使用してヘッダー値を取得します。In Azure CLI, you retrieve the header value by using the more verbose option.

az group list --verbose --debug

次の値を含む多くの値が返されます。Which returns many values, including the following values:

msrest.http_logger : Response status: 200
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'Content-Encoding': 'gzip'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'Vary': 'Accept-Encoding'
msrest.http_logger :     'x-ms-ratelimit-remaining-subscription-reads': '11998'

書き込み制限数を取得するには、書き込み操作を使用します。To get write limits, use a write operation:

az group create -n myresourcegroup --location westus --verbose --debug

次の値を含む多くの値が返されます。Which returns many values, including the following values:

msrest.http_logger : Response status: 201
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Length': '163'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'x-ms-ratelimit-remaining-subscription-writes': '1199'

次のステップNext steps