Informazioni su come Azure Resource Manager limita le richieste

Questo articolo descrive come Azure Resource Manager limita le richieste. Illustra come tenere traccia del numero di richieste che rimangono prima di raggiungere il limite e come rispondere quando si raggiunge il limite.

La limitazione avviene su due livelli. Azure Resource Manager limita le richieste per la sottoscrizione e il tenant. Se la richiesta è sotto i limiti per la sottoscrizione e il tenant, Resource Manager instrada la richiesta al provider di risorse. Il provider di risorse applica limiti personalizzati alle relative operazioni.

L'immagine seguente mostra come viene applicata la limitazione quando una richiesta passa dall'utente ad Azure Resource Manager e al provider di risorse. L'immagine mostra che le richieste vengono inizialmente limitate per ID entità e per ogni istanza di Azure Resource Manager nell'area dell'utente che invia la richiesta. Le richieste vengono limitate all'ora. Quando la richiesta viene inoltrata al provider di risorse, le richieste vengono limitate per area della risorsa anziché per ogni istanza di Azure Resource Manager nell'area dell'utente. Le richieste del provider di risorse vengono limitate anche per ID utente principale e per ora.

Diagramma che mostra come la limitazione viene applicata come richiesta passa dall'utente ad Azure Resource Manager e al provider di risorse.

Limiti di sottoscrizione e tenant

Ogni operazione a livello di sottoscrizione e a livello di tenant è soggetta a limiti di limitazione. Le richieste di sottoscrizione sono quelle che comportano il passaggio dell'ID sottoscrizione, ad esempio il recupero dei gruppi di risorse nella sottoscrizione. Ad esempio, l'invio di una richiesta a è un'operazione a https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups?api-version=2022-01-01 livello di sottoscrizione. Le richieste relative al tenant non includono l'ID sottoscrizione, ad esempio il recupero delle posizioni di Azure valide. Ad esempio, l'invio di una richiesta a è un'operazione a https://management.azure.com/tenants?api-version=2022-01-01 livello di tenant.

I limiti predefiniti all'ora vengono visualizzati nella tabella seguente.

Ambito Gestione operativa Limite
Subscription reads 12000
Abbonamento deletes 15000
Abbonamento writes 1200
Tenant reads 12000
Tenant writes 1200

L'ambito di questi limiti è l'entità di sicurezza (utente o applicazione) che effettua le richieste e l'ID sottoscrizione o l'ID tenant. Se le richieste provengono da più di un'entità di sicurezza, il limite per la sottoscrizione o il tenant è superiore a 12.000 e 1.200 richieste per ora.

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, Quindi, in pratica, i limiti sono superiori a questi limiti. Le richieste di un utente vengono in genere gestite da istanze diverse di Azure Resource Manager.

Le richieste rimanenti vengono restituite nei valori dell'intestazione della risposta.

Migrazione all'algoritmo di limitazione a livello di area e bucket di token

A partire dal 2024, Microsoft sta eseguendo la migrazione delle sottoscrizioni di Azure a una nuova architettura di limitazione. Con questa modifica si riscontrano nuovi limiti di limitazione. I nuovi limiti di limitazione vengono applicati per area anziché per istanza di Azure Resource Manager. La nuova architettura usa un algoritmo del bucket di token per gestire la limitazione delle richieste api.

Il bucket di token rappresenta il numero massimo di richieste che è possibile inviare per ogni secondo. Quando si raggiunge il numero massimo di richieste, la frequenza di riempimento determina la velocità con cui i token diventano disponibili nel bucket.

Questi limiti aggiornati semplificano l'aggiornamento e la gestione della quota.

I nuovi limiti sono:

Ambito Gestione operativa Dimensioni bucket Frequenza di riempimento al secondo
Abbonamento reads 250 25
Abbonamento deletes 200 10
Abbonamento writes 200 10
Tenant reads 250 25
Tenant deletes 200 10
Tenant writes 200 10

I limiti della sottoscrizione si applicano per sottoscrizione, per entità servizio e per tipo di operazione. Esistono anche limiti di sottoscrizione globali equivalenti a 15 volte i limiti delle singole entità servizio per ogni tipo di operazione. I limiti globali si applicano a tutte le entità servizio. Le richieste verranno limitate se vengono superati i limiti globali, dell'entità servizio o dei tenant specifici.

I limiti possono essere inferiori per i clienti gratuiti o di valutazione.

Si supponga, ad esempio, di avere una dimensione del bucket di 250 token per le richieste di lettura e la frequenza di riempimento di 25 token al secondo. Se si inviano 250 richieste di lettura in un secondo, il bucket è vuoto e le richieste vengono limitate. Ogni secondo, 25 token diventano disponibili fino a quando il bucket raggiunge la capacità massima di 250 token. È possibile usare i token non appena diventano disponibili.

Ricerca per categorie sapere se la sottoscrizione usa la nuova esperienza di limitazione?

Dopo la migrazione della sottoscrizione alla nuova esperienza di limitazione, l'intestazione della risposta mostra le richieste rimanenti al minuto anziché all'ora. Inoltre, il Retry-After valore mostra un minuto o meno, invece di cinque minuti. Per altre informazioni, vedere Codice di errore.

Perché la limitazione delle richieste viene modificata in per area anziché per ogni istanza?

Poiché diverse aree hanno un numero diverso di istanze di Resource Manager, la limitazione per ogni istanza causa prestazioni di limitazione incoerenti. La limitazione per area rende la limitazione coerente e prevedibile.

In che modo la nuova esperienza di limitazione influisce sui limiti?

È possibile inviare altre richieste. Le richieste di scrittura aumentano di 30 volte. Le richieste di eliminazione aumentano di 2,4 volte. Le richieste di lettura aumentano di 7,5 volte.

È possibile impedire la migrazione della sottoscrizione alla nuova esperienza di limitazione?

No, verrà eseguita la migrazione di tutte le sottoscrizioni.

Limiti del provider di risorse

I provider di risorse applicano i propri limiti di limitazione. All'interno di ogni sottoscrizione, il provider di risorse limita ogni area della risorsa nella richiesta. Poiché Resource Manager limita in base all'istanza di Resource Manager e in ogni area sono presenti diverse istanze di Resource Manager, il provider di risorse potrebbe ricevere più richieste rispetto ai limiti predefiniti nella sezione precedente.

Questa sezione illustra i limiti di limitazione di alcuni provider di risorse ampiamente usati.

Limitazione del servizio di archiviazione

I limiti seguenti si applicano solo quando si eseguono operazioni di gestione usando Azure Resource Manager con Archiviazione di Azure. I limiti si applicano per area della risorsa nella richiesta.

Conto risorse Limite
Operazioni di gestione account di archiviazione (lettura) 800 per 5 minuti
Operazioni di gestione account di archiviazione (scrittura) 10 al secondo / 1200 all'ora
Operazioni di gestione account di archiviazione (elenco) 100 per 5 minuti

Limitazione della larghezza di banda della rete

Il provider di risorse Microsoft.Network applica i limiti seguenti:

Operazione Limite
scrittura/eliminazione (PUT) 1000 per 5 minuti
lettura (GET) 10000 per 5 minuti

Oltre a questi limiti generali, i limiti seguenti si applicano alle operazioni DNS:

Operazione zona DNS Limite (per zona)
Creare o aggiornare 40 al minuto
Elimina 40 al minuto
Recupero 1000 al minuto
List 60 al minuto
List By Resource Group 60 al minuto
Aggiornamento 40 al minuto
Operazione del set di record DNS Limite (per zona)
Creare o aggiornare 200 al minuto
Elimina 200 al minuto
Recupero 2000 al minuto
Elenco per zona DNS 60 al minuto
Elenco per tipo 60 al minuto
Aggiornamento 200 al minuto

Limitazione del calcolo

Per informazioni sui limiti di limitazione per le operazioni di calcolo, vedere Risoluzione degli errori di limitazione delle richieste dell'API - Calcolo.

Per controllare le istanze di macchine virtuali all'interno di un set di scalabilità di macchine virtuali, usare le operazioni di set di scalabilità di macchine virtuali. Ad esempio, usare le macchine virtuali del set di scalabilità di macchine virtuali - Elenco con parametri per controllare lo stato di alimentazione delle istanze di macchina virtuale. Questa API riduce il numero di richieste.

Limitazione delle richieste di Azure Resource Graph

Azure Resource Graph limita il numero di richieste alle relative operazioni. I passaggi descritti in questo articolo per determinare le richieste rimanenti e come rispondere quando viene raggiunto il limite si applicano anche a Resource Graph. Tuttavia, Resource Graph imposta il proprio limite e la frequenza di reimpostazione. Per altre informazioni, vedere Intestazioni di limitazione di Resource Graph.

Altri provider di risorse

Per informazioni sulla limitazione in altri provider di risorse, vedere:

Codice errore

Quando si raggiunge il limite, viene visualizzato il codice di stato HTTP 429 Too many requests (429 Troppe richieste). La risposta include un valore Retry-After , che specifica il numero di secondi in cui l'applicazione deve attendere (o dormire) prima di inviare la richiesta successiva. Se si invia una richiesta prima della scadenza del valore di ripetizione dei tentativi, la richiesta non viene elaborata e viene restituito un nuovo valore di ripetizione dei tentativi.

Se si usa azure SDK, l'SDK potrebbe avere una configurazione di ripetizione automatica dei tentativi. Per altre informazioni, vedere Linee guida per i tentativi per i servizi di Azure.

Alcuni provider di risorse restituiscono 429 per segnalare un problema temporaneo. Il problema potrebbe essere una condizione di overload che non è direttamente causata dalla richiesta. In alternativa, potrebbe rappresentare un errore temporaneo sullo stato della risorsa di destinazione o della risorsa dipendente. Ad esempio, il provider di risorse di rete restituisce 429 con il codice di errore RetryableErrorDueToAnotherOperation quando la risorsa di destinazione è bloccata da un'altra operazione. Per determinare se l'errore proviene dalla limitazione o da una condizione temporanea, visualizzare i dettagli dell'errore nella risposta.

Richieste rimanenti

È possibile determinare il numero di richieste rimanenti esaminando le intestazioni di risposta. Le richieste di lettura restituiscono un valore nell'intestazione per il numero di richieste di lettura rimanenti. Le richieste di scrittura includono un valore per il numero di richieste di scrittura rimanenti. Nella tabella seguente vengono descritte le intestazioni di risposta che è possibile esaminare per tali valori:

Intestazione risposta Descrizione
x-ms-ratelimit-remaining-subscription-deletes Le eliminazioni con ambito sottoscrizione rimanenti. Questo valore viene restituito nelle operazioni di eliminazione.
x-ms-ratelimit-remaining-subscription-reads Richieste di lettura rimanenti nell'ambito della sottoscrizione. Questo valore viene restituito nelle operazioni di lettura.
x-ms-ratelimit-remaining-subscription-writes Richieste di scrittura rimanenti nell'ambito della sottoscrizione. Questo valore viene restituito nelle operazioni di scrittura.
x-ms-ratelimit-remaining-tenant-reads Richieste di lettura rimanenti nell'ambito del tenant
x-ms-ratelimit-remaining-tenant-writes Richieste di scrittura rimanenti nell'ambito del tenant
x-ms-ratelimit-remaining-subscription-resource-requests Richieste di tipo di risorsa rimanenti nell'ambito della sottoscrizione.

Questo valore di intestazione viene restituito solo se un servizio esegue l'override del limite predefinito. Resource Manager aggiunge questo valore invece delle richieste di lettura o scrittura per la sottoscrizione.
x-ms-ratelimit-remaining-subscription-resource-entities-read Richieste di raccolta di tipo di risorsa rimanenti nell'ambito della sottoscrizione.

Questo valore di intestazione viene restituito solo se un servizio esegue l'override del limite predefinito. Questo valore fornisce il numero di richieste di raccolta rimanenti (elenco di risorse).
x-ms-ratelimit-remaining-tenant-resource-requests Richieste di tipo di risorsa rimanenti nell'ambito del tenant.

Questa intestazione viene aggiunta solo per le richieste a livello di tenant e solo se un servizio esegue l'override del limite predefinito. Resource Manager aggiunge questo valore invece delle richieste di lettura o scrittura per il tenant.
x-ms-ratelimit-remaining-tenant-resource-entities-read Richieste di raccolta di tipo di risorsa rimanenti nell'ambito del tenant.

Questa intestazione viene aggiunta solo per le richieste a livello di tenant e solo se un servizio esegue l'override del limite predefinito.

Il provider di risorse può anche restituire intestazioni di risposta con informazioni sulle richieste rimanenti. Per informazioni sulle intestazioni di risposta restituite dal provider di risorse di calcolo, vedere Intestazioni delle risposte informative sulla frequenza delle chiamate.

Recupero dei valori di intestazione

Il recupero di questi valori di intestazione nel codice o nello script non è diverso rispetto al recupero di qualsiasi valore di intestazione.

Ad esempio, in C# viene recuperato il valore di intestazione da un oggetto HttpWebResponse di nome response con il codice seguente:

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

In PowerShell viene recuperato il valore di intestazione da un'operazione Invoke-WebRequest.

$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"]

Per un esempio completo di PowerShell, vedere Check Resource Manager Limits for a Subscription (Controllare i limiti di Resource Manager per una sottoscrizione).

Per visualizzare le richieste rimanenti per il debug, è possibile specificare il parametro -Debug nel cmdlet PowerShell.

Get-AzResourceGroup -Debug

Tale parametro restituisce molti valori, incluso il valore di risposta seguente:

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

Status Code:
OK

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

Per ottenere i limiti di scrittura, usare un'operazione di scrittura:

New-AzResourceGroup -Name myresourcegroup -Location westus -Debug

Tale opzione restituisce numerosi valori, inclusi i seguenti:

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

Status Code:
Created

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

In Interfaccia della riga di comando di Azure il valore di intestazione viene recuperato tramite l'opzione più dettagliata.

az group list --verbose --debug

Tale opzione restituisce numerosi valori, inclusi i seguenti:

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'

Per ottenere i limiti di scrittura, usare un'operazione di scrittura:

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

Tale opzione restituisce numerosi valori, inclusi i seguenti:

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'

Passaggi successivi