Sdílet prostřednictvím


Vysvětlení toho, jak Azure Resource Manager omezuje požadavky

Tento článek popisuje, jak Azure Resource Manager omezuje požadavky. Ukazuje, jak sledovat počet požadavků, které zůstávají před dosažením limitu, a jak reagovat, když dosáhnete limitu.

Omezování probíhá na dvou úrovních. Azure Resource Manager omezuje žádosti, které se týkají předplatného a tenanta. Pokud se žádost vejde do limitu pro omezování předplatného i tenanta, přesměruje Resource Manager žádost na poskytovatele prostředků. Poskytovatel prostředků používá taková omezení, která jsou přizpůsobená jeho provozu.

Následující obrázek ukazuje, jak se omezení použije při požadavku od uživatele do Azure Resource Manageru a poskytovatele prostředků. Obrázek ukazuje, že požadavky jsou zpočátku omezené na ID objektu zabezpečení a na instanci Azure Resource Manageru v oblasti uživatele, který požadavek odesílá. Požadavky jsou omezené za hodinu. Když se požadavek předá poskytovateli prostředků, požadavky se omezí na oblast prostředku, nikoli na instanci Azure Resource Manageru v oblasti uživatele. Požadavky poskytovatele prostředků jsou také omezené na ID uživatele objektu zabezpečení a hodinu.

Diagram znázorňující, jak se omezení použije při požadavku od uživatele do Azure Resource Manageru a poskytovatele prostředků

Limity předplatného a tenanta

Každá operace na úrovni předplatného a tenanta podléhá omezením omezování. Žádosti o předplatné jsou ty, které zahrnují předání ID předplatného, například načtení skupin prostředků ve vašem předplatném. Odeslání žádosti https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups?api-version=2022-01-01 je například operace na úrovni předplatného. Požadavky tenanta nezahrnují ID vašeho předplatného, například načítání platných umístění Azure. Například odeslání požadavku na https://management.azure.com/tenants?api-version=2022-01-01 operaci na úrovni tenanta.

Výchozí hodinové omezovací limity jsou zobrazeny v následující tabulce.

Obor Operace Omezení
Předplatné čtení 12000
Předplatné odstranění 15000
Předplatné zápisy 1200
Tenant čtení 12000
Tenant zápisy 1200

Tyto limity se vztahují na objekt zabezpečení (uživatele nebo aplikaci), který zadává požadavky, a na ID předplatného nebo ID tenanta. Pokud vaše požadavky pocházejí z více objektů zabezpečení, bude váš limit v rámci daného předplatného nebo tenanta větší než 12 000 a 1 200 za hodinu.

Tato omezení platí pro každou instanci Azure Resource Manageru. V každé oblasti Azure existuje několik instancí a Azure Resource Manager se nasadí do všech oblastí Azure. V praxi jsou limity vyšší než tyto limity. Žádosti od uživatele obvykle zpracovávají různé instance Azure Resource Manageru.

Zbývající požadavky se vrátí v hodnotách hlavičky odpovědi.

Migrace na regionální omezování a algoritmus kontejneru tokenů

Od roku 2024 Microsoft migruje předplatná Azure na novou architekturu omezování. S touto změnou se setkáte s novými omezeními omezování. Nová omezení omezení se použijí pro každou oblast místo na instanci Azure Resource Manageru. Nová architektura používá algoritmus kontejneru tokenů ke správě omezování rozhraní API.

Kontejner tokenů představuje maximální počet požadavků, které můžete odeslat za každou sekundu. Když dosáhnete maximálního počtu požadavků, rychlost opětovného vyplňování určuje, jak rychle budou tokeny dostupné v kontejneru.

Tyto aktualizované limity usnadňují aktualizaci a správu kvóty.

Nové limity jsou:

Obor Operace Velikost kbelíku Rychlost opakovaného vyplňování za sekundu
Předplatné čtení 250 25
Předplatné odstranění 200 10
Předplatné zápisy 200 10
Tenant čtení 250 25
Tenant odstranění 200 10
Tenant zápisy 200 10

Limity předplatného se vztahují na předplatné, na instanční objekt a na typ operace. Existují také globální limity předplatného, které odpovídají 15násobku limitů jednotlivých instančních objektů pro jednotlivé typy operací. Globální limity platí pro všechny instanční objekty. Požadavky se omezí, pokud dojde k překročení globálních limitů, instančního objektu nebo konkrétního tenanta.

Limity můžou být menší pro zákazníky s bezplatnou verzí nebo zkušební verzí.

Předpokládejme například, že máte velikost kbelíku 250 tokenů pro žádosti o čtení a rychlost opětovného vyplňování 25 tokenů za sekundu. Pokud za sekundu odešlete 250 žádostí o čtení, kontejner je prázdný a vaše požadavky jsou omezené. Za každou sekundu bude k dispozici 25 tokenů, dokud kbelík nedosáhne maximální kapacity 250 tokenů. Tokeny můžete používat, jakmile budou k dispozici.

Čtení metrik pomocí */providers/microsoft.insights/metrics rozhraní API významně přispívá k celkovému provozu Azure Resource Manageru a je běžnou příčinou událostí omezování předplatného. Pokud toto rozhraní API používáte silně, doporučujeme přepnout na getBatch rozhraní API. V jednom požadavku REST můžete dotazovat více prostředků, což zlepšuje výkon a snižuje omezování. Další informace o převodu operací naleznete v tématu Postup migrace z rozhraní API metrik na getBatch API.

Návody vědět, jestli moje předplatné používá nové prostředí omezování?

Po migraci předplatného do nového prostředí omezování se v hlavičce odpovědi zobrazí zbývající požadavky za minutu místo za hodinu. Retry-After Vaše hodnota navíc místo pěti minut zobrazuje jednu nebo méně minutu. Další informace naleznete v tématu Kód chyby.

Proč se omezování mění na každou oblast místo na instanci?

Vzhledem k tomu, že různé oblasti mají jiný počet instancí Resource Manageru, omezování na instanci způsobuje nekonzistentní výkon omezování. Omezování na oblast zajišťuje konzistentní a předvídatelné omezování.

Jaký vliv má nové prostředí omezování na moje limity?

Můžete odesílat další žádosti. Počet žádostí o zápis se zvyšuje o 30krát. Žádosti o odstranění se zvyšují o 2,4krát. Žádosti o čtení se zvyšují o 7,5krát.

Můžu zabránit migraci předplatného do nového prostředí omezování?

Ne, všechna předplatná se nakonec migrují.

Omezení poskytovatele prostředků

Poskytovatelé prostředků uplatňují vlastní limity pro omezování. V rámci každého předplatného poskytovatel prostředků omezuje každou oblast prostředku v požadavku. Vzhledem k tomu, že Resource Manager omezuje instanci Resource Manageru a v každé oblasti existuje několik instancí Resource Manageru, může poskytovatel prostředků obdržet více požadavků, než je výchozí omezení v předchozí části.

Tato část popisuje omezení omezení některých běžně používaných poskytovatelů prostředků.

Omezování úložiště

Následující limity platí, jen když ke správě operací používáte Azure Resource Manager s Azure Storage. Omezení se vztahují na oblast prostředku v požadavku.

Prostředek Omezení
Operace správy účtu úložiště (čtení) 800 za 5 minut
Operace správy účtu úložiště (zápis) 10 za sekundu / 1 200 za hodinu
Operace správy účtu úložiště (výpis) 100 za 5 minut

Omezování sítě

Poskytovatel prostředků Microsoft.Network používá následující limity:

Operace Omezení
zápis/odstranění (PUT) 1000 za 5 minut
čtení (GET) 1 0000 za 5 minut

Kromě těchto obecných limitů se podívejte na limity využití pro Azure DNS.

Omezování výpočetních prostředků

Microsoft Compute implementuje omezování, které poskytuje optimální prostředí pro uživatele virtuálních počítačů a škálovacích sad virtuálních počítačů. Limity omezování výpočetních prostředků poskytují komplexní informace o zásadách a omezeních omezování virtuálních počítačů, škálovacích sad virtuálních počítačů a virtuálních počítačích škálovací sady.

Omezování služby Azure Resource Graph

Azure Resource Graph omezuje počet požadavků na jeho operace. Kroky v tomto článku k určení zbývajících požadavků a reakce na dosažení limitu platí také pro Resource Graph. Resource Graph ale nastavuje vlastní limit a rychlost resetování. Další informace najdete v tématu Záhlaví omezování služby Resource Graph.

Další poskytovatelé prostředků

Informace o omezování v jiných poskytovatelích prostředků najdete tady:

Kód chyby

Když dosáhnete limitu, obdržíte stavový kód HTTP 429 Příliš mnoho požadavků. Odpověď obsahuje hodnotu Opakování po , která určuje počet sekund, po které má aplikace čekat (nebo spát) před odesláním dalšího požadavku. Pokud odešlete požadavek před uplynutím hodnoty opakování, požadavek se nezpracuje a vrátí se nová hodnota opakování.

Pokud používáte sadu Azure SDK, může mít sada SDK konfiguraci automatického opakování. Další informace najdete v doprovodných materiálech k opakování služeb Azure.

Někteří poskytovatelé prostředků vrátí chybu 429, aby nahlásili dočasný problém. Problém může být stav přetížení, který není přímo způsobený vaší žádostí. Nebo může představovat dočasnou chybu týkající se stavu cílového prostředku nebo závislého prostředku. Poskytovatel síťových prostředků například vrátí chybu 429 s kódem chyby RetryableErrorDueToAnotherOperation , pokud je cílový prostředek uzamčen jinou operací. Pokud chcete zjistit, jestli chyba pochází z omezování nebo dočasné podmínky, podívejte se na podrobnosti o chybě v odpovědi.

Zbývající žádosti

Počet zbývajících požadavků můžete určit prozkoumáním hlaviček odpovědi. Čtení požadavků vrací hodnotu v hlavičce pro počet zbývajících žádostí o čtení. Požadavky na zápis obsahují hodnotu pro počet zbývajících žádostí o zápis. Následující tabulka popisuje hlavičky odpovědi, které můžete zkontrolovat pro tyto hodnoty:

Hlavička odpovědi Popis
x-ms-ratelimit-remaining-subscription-deletes Zbývající odstranění předplatného s vymezeným oborem Tato hodnota se vrátí při operacích odstranění.
x-ms-ratelimit-remaining-subscription-reads Zbývající čtení s oborem předplatného Tato hodnota se vrátí při operacích čtení.
x-ms-ratelimit-remaining-subscription-writes Zbývající zápisy s oborem předplatného. Tato hodnota se vrátí při operacích zápisu.
x-ms-ratelimit-remaining-tenant-reads Zbývající čtení s vymezeným oborem tenanta
x-ms-ratelimit-remaining-tenant-writes Zbývající zápisy v oboru tenanta
x-ms-ratelimit-remaining-subscription-resource-requests Zbývající požadavky na typ prostředku s vymezeným předplatným

Tato hodnota hlavičky se vrátí pouze v případě, že služba přepíše výchozí limit. Resource Manager tuto hodnotu přidá místo čtení nebo zápisů předplatného.
x-ms-ratelimit-remaining-subscription-resource-entities-read Zbývající požadavky na kolekci typů prostředků s vymezeným oborem předplatného

Tato hodnota hlavičky se vrátí pouze v případě, že služba přepíše výchozí limit. Tato hodnota poskytuje počet zbývajících žádostí o kolekci (seznam prostředků).
x-ms-ratelimit-remaining-tenant-resource-requests Zbývající požadavky na typ prostředku s vymezeným oborem tenanta

Tato hlavička se přidá jenom pro požadavky na úrovni tenanta a pouze v případě, že služba přepíše výchozí limit. Resource Manager tuto hodnotu přidá místo čtení nebo zápisů tenanta.
x-ms-ratelimit-remaining-tenant-resource-entities-read Zbývající požadavky na kolekci prostředků s vymezeným oborem tenanta

Tato hlavička se přidá jenom pro požadavky na úrovni tenanta a pouze v případě, že služba přepíše výchozí limit.

Poskytovatel prostředků může také vrátit hlavičky odpovědi s informacemi o zbývajících požadavcích. Informace o hlavicích odpovědí vrácených poskytovatelem výpočetních prostředků najdete v tématu Hlavičky odpovědi četnosti volání.

Načtení hodnot záhlaví

Načtení těchto hodnot hlaviček v kódu nebo skriptu se nijak neliší od načtení jakékoli hodnoty hlavičky.

Například v jazyce C# načtete hodnotu hlavičky z objektu HttpWebResponse s následujícím kódem:

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

V PowerShellu načtete hodnotu hlavičky z operace 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"]

Úplný příklad PowerShellu najdete v tématu Kontrola limitů Resource Manageru pro předplatné.

Pokud chcete zobrazit zbývající požadavky na ladění, můžete v rutině PowerShellu zadat parametr -Debug.

Get-AzResourceGroup -Debug

Vrátí mnoho hodnot, včetně následující hodnoty odpovědi:

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

Status Code:
OK

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

Pokud chcete získat limity zápisu, použijte operaci zápisu:

New-AzResourceGroup -Name myresourcegroup -Location westus -Debug

Vrátí mnoho hodnot, včetně následujících hodnot:

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

Status Code:
Created

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

V Azure CLI načtete hodnotu hlavičky pomocí více podrobné možnosti.

az group list --verbose --debug

Vrátí mnoho hodnot, včetně následujících hodnot:

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'

Pokud chcete získat limity zápisu, použijte operaci zápisu:

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

Vrátí mnoho hodnot, včetně následujících hodnot:

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'

Další kroky