Limitazione delle richieste di Resource ManagerThrottling Resource Manager requests

Per ogni sottoscrizione e tenant, Resource Manager definisce un limite di 15.000 richieste di lettura e 1.200 richieste di scrittura al giorno.For each subscription and tenant, Resource Manager limits read requests to 15,000 per hour and write requests to 1,200 per hour. Questi limiti si applicano a ogni istanza di Azure Resource Manager; sono presenti più istanze in ogni area di Azure e Azure Resource Manager viene distribuito a tutte le aree di Azure.These limits apply to each Azure Resource Manager instance; there are multiple instances in every Azure region, and Azure Resource Manager is deployed to all Azure regions. Pertanto, in pratica, i limiti sono effettivamente molto superiori a quelli elencati in precedenza, poiché le richieste utente sono in genere gestite da molte istanze diverse.So, in practice, limits are effectively much higher than those listed above, as user requests are generally serviced by many different instances.

Se l'applicazione o script raggiunge questi limiti, è necessario restringere le richieste.If your application or script reaches these limits, you need to throttle your requests. In questo argomento viene illustrato come determinare il numero di richieste rimanenti prima di raggiungere il limite e come rispondere in caso di raggiungimento.This topic shows you how to determine the remaining requests you have before reaching the limit, and how to respond when you have reached the limit.

Quando si raggiunge il limite, viene visualizzato il codice di stato HTTP 429 Too many requests (429 Troppe richieste).When you reach the limit, you receive the HTTP status code 429 Too many requests.

Il numero di richieste ha come ambito la sottoscrizione o il tenant.The number of requests is scoped to either your subscription or your tenant. Se si dispone di più applicazioni simultanee che effettuano richieste nella sottoscrizione, le richieste da tali applicazioni vengono aggiunte insieme in modo da determinare il numero di richieste rimanenti.If you have multiple, concurrent applications making requests in your subscription, the requests from those applications are added together to determine the number of remaining requests.

Per le richieste nell'ambito della sottoscrizione occorre la trasmissione dell'ID sottoscrizione, ad esempio il recupero del gruppo di risorse nella sottoscrizione.Subscription scoped requests are ones the involve passing your subscription id, such as retrieving the resource groups in your subscription. Le richieste nell'ambito del tenant non includono l'ID sottoscrizione, ad esempio il recupero delle posizioni di Azure valide.Tenant scoped requests do not include your subscription id, such as retrieving valid Azure locations.

Richieste rimanentiRemaining requests

È possibile determinare il numero di richieste rimanenti esaminando le intestazioni di risposta.You can determine the number of remaining requests by examining response headers. Ogni richiesta include i valori per il numero di richieste di scrittura e lettura rimanenti.Each request includes values for the number of remaining read and write requests. Nella tabella seguente vengono descritte le intestazioni di risposta che è possibile esaminare per tali valori:The following table describes the response headers you can examine for those values:

Intestazione rispostaResponse header DescrizioneDescription
x-ms-ratelimit-remaining-subscription-readsx-ms-ratelimit-remaining-subscription-reads Richieste di lettura rimanenti nell'ambito della sottoscrizioneSubscription scoped reads remaining
x-ms-ratelimit-remaining-subscription-writesx-ms-ratelimit-remaining-subscription-writes Richieste di scrittura rimanenti nell'ambito della sottoscrizioneSubscription scoped writes remaining
x-ms-ratelimit-remaining-tenant-readsx-ms-ratelimit-remaining-tenant-reads Richieste di lettura rimanenti nell'ambito del tenantTenant scoped reads remaining
x-ms-ratelimit-remaining-tenant-writesx-ms-ratelimit-remaining-tenant-writes Richieste di scrittura rimanenti nell'ambito del tenantTenant scoped writes remaining
x-ms-ratelimit-remaining-subscription-resource-requestsx-ms-ratelimit-remaining-subscription-resource-requests Richieste di tipo di risorsa rimanenti nell'ambito della sottoscrizione.Subscription scoped resource type requests remaining.

Questo valore di intestazione viene restituito solo se un servizio ha superato il limite predefinito.This header value is only returned if a service has overridden the default limit. Resource Manager aggiunge questo valore invece delle richieste di lettura o scrittura per la sottoscrizione.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 Richieste di raccolta di tipo di risorsa rimanenti nell'ambito della sottoscrizione.Subscription scoped resource type collection requests remaining.

Questo valore di intestazione viene restituito solo se un servizio ha superato il limite predefinito.This header value is only returned if a service has overridden the default limit. Questo valore fornisce il numero di richieste di raccolta rimanenti (elenco di risorse).This value provides the number of remaining collection requests (list resources).
x-ms-ratelimit-remaining-tenant-resource-requestsx-ms-ratelimit-remaining-tenant-resource-requests Richieste di tipo di risorsa rimanenti nell'ambito del tenant.Tenant scoped resource type requests remaining.

Questa intestazione viene aggiunta solo per le richieste a livello di tenant e solo se un sevizio ha superato il limite predefinito.This header is only added for requests at tenant level, and only if a service has overridden the default limit. Resource Manager aggiunge questo valore invece delle richieste di lettura o scrittura per il tenant.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 Richieste di raccolta di tipo di risorsa rimanenti nell'ambito del tenant.Tenant scoped resource type collection requests remaining.

Questa intestazione viene aggiunta solo per le richieste a livello di tenant e solo se un sevizio ha superato il limite predefinito.This header is only added for requests at tenant level, and only if a service has overridden the default limit.

Recupero dei valori di intestazioneRetrieving the header values

Il recupero di questi valori di intestazione nel codice o nello script non è diverso rispetto al recupero di qualsiasi valore di intestazione.Retrieving these header values in your code or script is no different than retrieving any header value.

Ad esempio, in C# viene recuperato il valore di intestazione da un oggetto HttpWebResponse di nome response con il codice seguente: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)

In PowerShell viene recuperato il valore di intestazione da un'operazione 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"]

In alternativa, se desidera visualizzare le richieste rimanenti per il debug, è possibile fornire il parametro -Debug nel cmdlet PowerShell.Or, if want to see the remaining requests for debugging, you can provide the -Debug parameter on your PowerShell cmdlet.

Get-AzureRmResourceGroup -Debug

Tale parametro restituisce molti valori, incluso il valore di risposta seguente: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: 14999
...

In Interfaccia della riga di comando di Azure il valore di intestazione viene recuperato tramite l'opzione più dettagliata.In Azure CLI, you retrieve the header value by using the more verbose option.

azure group list -vv --json

Tale opzione restituisce numerosi valori, inclusi l'oggetto seguente:Which returns many values, including the following object:

...
silly: returnObject
{
  "statusCode": 200,
  "header": {
    "cache-control": "no-cache",
    "pragma": "no-cache",
    "content-type": "application/json; charset=utf-8",
    "expires": "-1",
    "x-ms-ratelimit-remaining-subscription-reads": "14998",
    ...

Attesa prima dell'invio della richiesta successivaWaiting before sending next request

Quando si raggiunge il limite di richieste, Resource Manager restituisce il codice di stato HTTP 429 e un valore Retry-After nell'intestazione.When you reach the request limit, Resource Manager returns the 429 HTTP status code and a Retry-After value in the header. Il valore Retry-After specifica il numero di secondi durante i quali l'applicazione deve attendere (o restare in sospensione) prima di inviare la richiesta successiva.The Retry-After value specifies the number of seconds your application should wait (or sleep) before sending the next request. Se si invia una richiesta prima che sia trascorso il valore per la ripetizione del tentativo, la richiesta non viene elaborata e viene restituito un nuovo valore per la ripetizione del tentativo.If you send a request before the retry value has elapsed, your request is not processed and a new retry value is returned.

Passaggi successiviNext steps