Begrijpen hoe Aanvragen worden beperkt door Azure Resource Manager

In dit artikel wordt beschreven hoe Aanvragen door Azure Resource Manager worden beperkt. U ziet hoe u het aantal aanvragen kunt bijhouden dat blijft voordat u de limiet bereikt en hoe u kunt reageren wanneer u de limiet bereikt.

Beperking gebeurt op twee niveaus. Azure Resource Manager beperkt de aanvragen voor het abonnement en de tenant. Als de aanvraag onder beperkingslimieten voor het abonnement en de tenant valt, Resource Manager de aanvraag doorstuurt naar de resourceprovider. De resourceprovider past de beperkingslimieten toe die zijn afgestemd op de bewerkingen.

In de volgende afbeelding ziet u hoe beperking wordt toegepast als een aanvraag van de gebruiker naar Azure Resource Manager en de resourceprovider gaat. In de afbeelding ziet u dat aanvragen in eerste instantie worden beperkt per principal-id en per Azure Resource Manager-exemplaar in de regio van de gebruiker die de aanvraag verzendt. De aanvragen worden beperkt per uur. Wanneer de aanvraag wordt doorgestuurd naar de resourceprovider, worden aanvragen beperkt per regio van de resource in plaats van per Azure Resource Manager-exemplaar in de regio van de gebruiker. De aanvragen van de resourceprovider worden ook beperkt per principal-gebruikers-id en per uur.

Diagram dat laat zien hoe beperking wordt toegepast als een aanvraag van de gebruiker naar Azure Resource Manager en de resourceprovider gaat.

Abonnements- en tenantlimieten

Elke bewerking op abonnementsniveau en tenantniveau is onderhevig aan beperkingslimieten. Abonnementsaanvragen zijn aanvragen die betrekking hebben op het doorgeven van uw abonnements-id, zoals het ophalen van de resourcegroepen in uw abonnement. Het verzenden van een aanvraag naar https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups?api-version=2022-01-01 is bijvoorbeeld een bewerking op abonnementsniveau. Tenantaanvragen bevatten geen abonnements-id, zoals het ophalen van geldige Azure-locaties. Het verzenden van een aanvraag naar https://management.azure.com/tenants?api-version=2022-01-01 is bijvoorbeeld een bewerking op tenantniveau.

Deze standaardbeperkingslimieten per uur worden weergegeven in de volgende tabel.

Bereik Operations Limiet
Abonnement leesbewerkingen 12000
Abonnement verwijderbeperkingen 15000
Abonnement schrijfbewerkingen 1200
Tenant leesbewerkingen 12000
Tenant schrijfbewerkingen 1200

Deze limieten zijn van toepassing op de beveiligingsprincipal (gebruiker of toepassing) die de aanvragen doet en de abonnements-id of tenant-id. Als uw aanvragen afkomstig zijn van meerdere beveiligingsprincipals, is uw limiet voor het abonnement of de tenant groter dan 12.000 en 1200 per uur.

Deze limieten zijn van toepassing op elk Azure Resource Manager-exemplaar. Er zijn meerdere exemplaren in elke Azure-regio en Azure Resource Manager wordt geïmplementeerd in alle Azure-regio's. In de praktijk zijn de limieten dus hoger dan deze limieten. De aanvragen van een gebruiker worden meestal verwerkt door verschillende exemplaren van Azure Resource Manager.

De resterende aanvragen worden geretourneerd in de antwoordheaderwaarden.

Migreren naar regionaal beperkings- en tokenbucket-algoritme

Vanaf 2024 migreert Microsoft Azure-abonnementen naar een nieuwe beperkingsarchitectuur. Met deze wijziging ervaart u nieuwe beperkingslimieten. De nieuwe beperkingslimieten worden toegepast per regio in plaats van per exemplaar van Azure Resource Manager. De nieuwe architectuur maakt gebruik van een bucket-algoritme voor tokens om API-beperking te beheren.

De tokenbucket vertegenwoordigt het maximum aantal aanvragen dat u voor elke seconde kunt verzenden. Wanneer u het maximum aantal aanvragen bereikt, bepaalt de doorvoersnelheid hoe snel tokens beschikbaar zijn in de bucket.

Dankzij deze bijgewerkte limieten kunt u uw quotum eenvoudiger vernieuwen en beheren.

De nieuwe limieten zijn:

Bereik Operations Bucketgrootte Doorvoersnelheid per seconde
Abonnement leesbewerkingen 250 25
Abonnement verwijderbeperkingen 200 10
Abonnement schrijfbewerkingen 200 10
Tenant leesbewerkingen 250 25
Tenant verwijderbeperkingen 200 10
Tenant schrijfbewerkingen 200 10

De abonnementslimieten gelden per abonnement, per service-principal en per bewerkingstype. Er zijn ook globale abonnementslimieten die gelijk zijn aan 15 keer de afzonderlijke service-principallimieten voor elk bewerkingstype. De globale limieten gelden voor alle service-principals. Aanvragen worden beperkt als de globale, service-principal of tenantspecifieke limieten worden overschreden.

De limieten zijn mogelijk kleiner voor klanten met een gratis proefversie of proefversie.

Stel dat u een bucketgrootte van 250 tokens hebt voor leesaanvragen en het doorvoerpercentage van 25 tokens per seconde. Als u in een seconde 250 leesaanvragen verzendt, is de bucket leeg en worden uw aanvragen beperkt. Elke seconde worden 25 tokens beschikbaar totdat de bucket de maximale capaciteit van 250 tokens bereikt. U kunt tokens gebruiken zodra ze beschikbaar komen.

Hoe kan ik weten of mijn abonnement gebruikmaakt van de nieuwe beperkingservaring?

Nadat uw abonnement is gemigreerd naar de nieuwe beperkingservaring, toont de antwoordheader de resterende aanvragen per minuut in plaats van per uur. Retry-After Uw waarde geeft ook één minuut of minder weer in plaats van vijf minuten. Zie Foutcode voor meer informatie.

Waarom wordt beperking gewijzigd in per regio in plaats van per exemplaar?

Omdat verschillende regio's een ander aantal Resource Manager-exemplaren hebben, veroorzaakt beperking per exemplaar inconsistente beperkingsprestaties. Beperking per regio maakt bandbreedtebeperking consistent en voorspelbaar.

Hoe heeft de nieuwe beperkingservaring invloed op mijn limieten?

U kunt meer aanvragen verzenden. Schrijfaanvragen nemen 30 keer toe. Verwijderaanvragen worden 2,4 keer verhoogd. Leesaanvragen nemen 7,5 keer toe.

Kan ik voorkomen dat mijn abonnement wordt gemigreerd naar de nieuwe beperkingservaring?

Nee, alle abonnementen worden uiteindelijk gemigreerd.

Limieten voor resourceproviders

Resourceproviders passen hun eigen beperkingslimieten toe. Binnen elk abonnement beperkt de resourceprovider per regio van de resource in de aanvraag. Omdat Resource Manager wordt beperkt per exemplaar van Resource Manager en er verschillende exemplaren van Resource Manager in elke regio zijn, kan de resourceprovider meer aanvragen ontvangen dan de standaardlimieten in de vorige sectie.

In deze sectie worden de beperkingslimieten van enkele veelgebruikte resourceproviders besproken.

Opslagbeperking

De volgende limieten gelden alleen wanneer u beheerbewerkingen uitvoert met behulp van Azure Resource Manager met Azure Storage. De limieten gelden per regio van de resource in de aanvraag.

Bron Limiet
Opslagaccountbeheerbewerkingen (lezen) 800 per 5 minuten
Opslagaccountbeheerbewerkingen (schrijven) 10 per seconde/1200 per uur
Opslagaccountbeheerbewerkingen (lijst) 100 per 5 minuten

Netwerkbeperking

De resourceprovider Microsoft.Network past deze volgende beperkingslimieten toe:

Bewerking Limiet
schrijven / lezen (PUT) 1000 per 5 minuten
lezen (GET) 10000 per 5 minuten

Naast deze algemene limieten zijn de volgende limieten van toepassing op DNS-bewerkingen:

DNS-zonebewerking Limiet (per zone)
Maken of bijwerken 40 per minuut
Delete 40 per minuut
Ophalen 1000 per minuut
List 60 per minuut
Lijst per resourcegroep 60 per minuut
Bijwerken 40 per minuut
Bewerking dns-recordset Limiet (per zone)
Maken of bijwerken 200 per minuut
Delete 200 per minuut
Ophalen 2000 per minuut
Lijst per DNS-zone 60 per minuut
Lijst per type 60 per minuut
Bijwerken 200 per minuut

Beperking van rekenkracht

Zie Probleemoplossingsfouten voor API-beperkingsfouten - Compute voor informatie over beperkingslimieten voor rekenbewerkingen.

Gebruik de bewerkingen voor virtuele-machineschaalsets om instanties van virtuele machines in een virtuele-machineschaalset te controleren. Gebruik bijvoorbeeld de VM's van de virtuele-machineschaalset : lijst met parameters om de energiestatus van virtuele-machine-exemplaren te controleren. Deze API vermindert het aantal aanvragen.

Beperking van Azure Resource Graph

Azure Resource Graph beperkt het aantal aanvragen tot de bewerkingen. De stappen in dit artikel om de resterende aanvragen te bepalen en te reageren wanneer de limiet is bereikt, zijn ook van toepassing op Resource Graph. Resource Graph stelt echter een eigen limiet en resetfrequentie in. Zie Resource Graph-beperkingsheaders voor meer informatie.

Andere resourceproviders

Zie voor meer informatie over beperking in andere resourceproviders:

Foutcode

Wanneer u de limiet bereikt, ontvangt u de HTTP-statuscode 429 Te veel aanvragen. Het antwoord bevat de waarde Opnieuw proberen na , waarmee het aantal seconden wordt opgegeven dat uw toepassing moet wachten (of in de slaapstand) moet staan voordat de volgende aanvraag wordt verzonden. Als u een aanvraag verzendt voordat de waarde voor opnieuw proberen is verstreken, wordt uw aanvraag niet verwerkt en wordt er een nieuwe waarde voor opnieuw proberen geretourneerd.

Als u een Azure SDK gebruikt, heeft de SDK mogelijk een configuratie voor automatisch opnieuw proberen. Zie Richtlijnen voor opnieuw proberen voor Azure-services voor meer informatie.

Sommige resourceproviders retourneren 429 om een tijdelijk probleem te melden. Het probleem kan een overbelastingsvoorwaarde zijn die niet rechtstreeks wordt veroorzaakt door uw aanvraag. Of het kan een tijdelijke fout zijn over de status van de doelresource of afhankelijke resource. De netwerkresourceprovider retourneert bijvoorbeeld 429 met de foutcode RetryableErrorDueToAnotherOperation wanneer de doelresource is vergrendeld door een andere bewerking. Als u wilt bepalen of de fout afkomstig is van beperking of een tijdelijke voorwaarde, bekijkt u de foutdetails in het antwoord.

Resterende aanvragen

U kunt het aantal resterende aanvragen bepalen door antwoordheaders te onderzoeken. Leesaanvragen retourneren een waarde in de header voor het aantal resterende leesaanvragen. Schrijfaanvragen bevatten een waarde voor het aantal resterende schrijfaanvragen. In de volgende tabel worden de antwoordheaders beschreven die u voor deze waarden kunt onderzoeken:

Antwoordheader Beschrijving
x-ms-ratelimit-remaining-subscription-deletes Met abonnementsbereik worden de resterende verwijderingen verwijderd. Deze waarde wordt geretourneerd bij verwijderingsbewerkingen.
x-ms-ratelimit-remaining-subscription-reads De resterende leesbewerkingen binnen het abonnementsbereik. Deze waarde wordt geretourneerd bij leesbewerkingen.
x-ms-ratelimit-remaining-subscription-writes Resterende schrijfbewerkingen binnen het abonnementsbereik. Deze waarde wordt geretourneerd voor schrijfbewerkingen.
x-ms-ratelimit-remaining-tenant-reads Resterende leesbewerkingen met tenantbereik
x-ms-ratelimit-remaining-tenant-writes Resterende schrijfbewerkingen met tenantbereik
x-ms-ratelimit-remaining-subscription-resource-requests Resterende aanvragen voor het resourcetype van het abonnement.

Deze headerwaarde wordt alleen geretourneerd als een service de standaardlimiet overschrijft. Resource Manager voegt deze waarde toe in plaats van de lees- of schrijfbewerkingen van het abonnement.
x-ms-ratelimit-remaining-subscription-resource-entities-read Resterende aanvragen voor het verzamelen van resourcetypen binnen het abonnementsbereik.

Deze headerwaarde wordt alleen geretourneerd als een service de standaardlimiet overschrijft. Deze waarde biedt het aantal resterende verzamelingsaanvragen (lijstbronnen).
x-ms-ratelimit-remaining-tenant-resource-requests Resterende aanvragen voor tenantresourcetypen.

Deze header wordt alleen toegevoegd voor aanvragen op tenantniveau en alleen als een service de standaardlimiet overschrijft. Resource Manager voegt deze waarde toe in plaats van de tenant lees- of schrijfbewerkingen.
x-ms-ratelimit-remaining-tenant-resource-entities-read Aanvragen voor het verzamelen van resources binnen het bereik van tenants.

Deze header wordt alleen toegevoegd voor aanvragen op tenantniveau en alleen als een service de standaardlimiet overschrijft.

De resourceprovider kan ook antwoordheaders retourneren met informatie over resterende aanvragen. Zie Voor informatie over antwoordheaders die worden geretourneerd door de compute-resourceprovider, informatie over headers voor oproepsnelheid.

De headerwaarden ophalen

Het ophalen van deze headerwaarden in uw code of script verschilt niet van het ophalen van een headerwaarde.

In C# haalt u bijvoorbeeld de headerwaarde op uit een HttpWebResponse-object met de naam antwoord met de volgende code:

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

In PowerShell haalt u de headerwaarde op uit een Invoke-WebRequest-bewerking.

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

Zie Resource Manager-limieten voor een abonnement controleren voor een volledig PowerShell-voorbeeld.

Als u de resterende aanvragen voor foutopsporing wilt zien, kunt u de parameter -Debug opgeven in uw PowerShell-cmdlet .

Get-AzResourceGroup -Debug

Dit retourneert veel waarden, waaronder de volgende antwoordwaarde:

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

Status Code:
OK

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

Gebruik een schrijfbewerking om schrijflimieten op te halen:

New-AzResourceGroup -Name myresourcegroup -Location westus -Debug

Dit retourneert veel waarden, waaronder de volgende waarden:

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

Status Code:
Created

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

In Azure CLI haalt u de headerwaarde op met behulp van de uitgebreidere optie.

az group list --verbose --debug

Dit retourneert veel waarden, waaronder de volgende waarden:

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'

Gebruik een schrijfbewerking om schrijflimieten op te halen:

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

Dit retourneert veel waarden, waaronder de volgende waarden:

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'

Volgende stappen