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.
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
- Další informace o limitech a kvótách najdete v tématu Limity, kvóty a omezení předplatného a služeb Azure.
- Informace o zpracování asynchronních požadavků REST najdete v tématu Sledování asynchronních operací v Azure.