Informacje o sposobie ograniczania żądań usługi Azure Resource Manager

W tym artykule opisano sposób ograniczania żądań usługi Azure Resource Manager. Pokazuje on, jak śledzić liczbę żądań, które pozostają przed osiągnięciem limitu, oraz jak reagować po osiągnięciu limitu.

Ograniczanie przepustowości odbywa się na dwóch poziomach. Usługa Azure Resource Manager ogranicza przepustowość żądania dotyczącego subskrypcji i dzierżawy. Jeśli żądanie jest objęte limitami ograniczania przepustowości dla subskrypcji i dzierżawy, usługa Resource Manager kieruje żądanie do dostawcy zasobów. Dostawca zasobów nakłada limity ograniczania przepustowości dostosowane do swoich operacji.

Na poniższej ilustracji przedstawiono sposób stosowania ograniczania przepustowości, ponieważ żądanie przechodzi od użytkownika do usługi Azure Resource Manager i dostawcy zasobów. Obraz pokazuje, że żądania są początkowo ograniczane na identyfikator podmiotu zabezpieczeń i na wystąpienie usługi Azure Resource Manager w regionie użytkownika wysyłającego żądanie. Żądania są ograniczane na godzinę. Gdy żądanie jest przekazywane do dostawcy zasobów, żądania są ograniczane na region zasobu, a nie na wystąpienie usługi Azure Resource Manager w regionie użytkownika. Żądania dostawcy zasobów są również ograniczane na identyfikator użytkownika podmiotu zabezpieczeń i na godzinę.

Diagram przedstawiający sposób stosowania ograniczania przepustowości, gdy żądanie przechodzi od użytkownika do usługi Azure Resource Manager i dostawcy zasobów.

Limity subskrypcji i dzierżawy

Każda operacja na poziomie subskrypcji i na poziomie dzierżawy podlega limitom ograniczania przepustowości. Żądania subskrypcji to żądania, które obejmują przekazanie identyfikatora subskrypcji, takie jak pobieranie grup zasobów w ramach subskrypcji. Na przykład wysłanie żądania do https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups?api-version=2022-01-01 jest operacją na poziomie subskrypcji. Żądania dzierżawy nie zawierają identyfikatora subskrypcji, takiego jak pobieranie prawidłowych lokalizacji platformy Azure. Na przykład wysłanie żądania do https://management.azure.com/tenants?api-version=2022-01-01 usługi to operacja na poziomie dzierżawy.

Domyślne limity ograniczania przepustowości na godzinę są pokazane w poniższej tabeli.

Zakres Operacje Limit
Subskrypcja — odczyty 12000
Subskrypcja — usunięcia 15000
Subskrypcja — zapisy 1200
Dzierżawa — odczyty 12000
Dzierżawa — zapisy 1200

Limity te dotyczą podmiotu zabezpieczeń (użytkownika lub aplikacji) zgłaszającego te żądania i identyfikatora subskrypcji lub identyfikatora dzierżawy. Jeśli Twoje żądania pochodzą od więcej niż jednego podmiotu zabezpieczeń, limit w ramach subskrypcji lub dzierżawy jest większy niż 12 000 i 1200 na godzinę.

Te limity dotyczą każdego wystąpienia usługi Azure Resource Manager. Istnieje wiele wystąpień w każdym regionie świadczenia usługi Azure, a usługa Azure Resource Manager jest wdrażana we wszystkich regionach świadczenia usługi Azure. W praktyce limity są wyższe niż te limity. Żądania od użytkownika są zwykle obsługiwane przez różne wystąpienia usługi Azure Resource Manager.

Pozostałe żądania są zwracane w wartościach nagłówka odpowiedzi.

Migrowanie do regionalnego algorytmu ograniczania przepustowości i zasobnika tokenu

Począwszy od 2024 r., firma Microsoft migruje subskrypcje platformy Azure do nowej architektury ograniczania. Dzięki tej zmianie będziesz korzystać z nowych limitów ograniczania przepustowości. Nowe limity ograniczania przepustowości są stosowane w poszczególnych regionach, a nie na wystąpienie usługi Azure Resource Manager. Nowa architektura używa algorytmu zasobnika tokenu do zarządzania ograniczaniem przepływności interfejsu API.

Zasobnik tokenu reprezentuje maksymalną liczbę żądań, które można wysłać dla każdej sekundy. Gdy osiągniesz maksymalną liczbę żądań, szybkość wypełniania określa, jak szybko tokeny stają się dostępne w zasobniku.

Te zaktualizowane limity ułatwiają odświeżanie limitów przydziału i zarządzanie nimi.

Nowe limity to:

Zakres Operacje Rozmiar zasobnika Szybkość wypełniania na sekundę
Subskrypcja — odczyty 250 25
Subskrypcja — usunięcia 200 10
Subskrypcja — zapisy 200 10
Dzierżawa — odczyty 250 25
Dzierżawa — usunięcia 200 10
Dzierżawa — zapisy 200 10

Limity subskrypcji dotyczą subskrypcji, jednostki usługi i typu operacji. Istnieją również globalne limity subskrypcji, które są równoważne 15-krotnemu limitom poszczególnych jednostek usługi dla każdego typu operacji. Limity globalne mają zastosowanie we wszystkich jednostkach usługi. Żądania będą ograniczane, jeśli przekroczono limity globalne, jednostki usługi lub dzierżawy.

Limity mogą być mniejsze dla klientów korzystających z wersji bezpłatnej lub próbnej.

Załóżmy na przykład, że masz rozmiar zasobnika wynoszący 250 tokenów dla żądań odczytu i szybkość wypełniania wynoszącą 25 tokenów na sekundę. Jeśli wyślesz 250 żądań odczytu w ciągu sekundy, zasobnik jest pusty, a żądania są ograniczane. Każda sekunda, 25 tokenów stanie się dostępne, dopóki zasobnik nie osiągnie maksymalnej pojemności 250 tokenów. Tokeny można używać w miarę ich dostępności.

Jak mogę wiedzieć, czy moja subskrypcja korzysta z nowego środowiska ograniczania przepustowości?

Po przeprowadzeniu migracji subskrypcji do nowego środowiska ograniczania w nagłówku odpowiedzi wyświetlane są pozostałe żądania na minutę, a nie na godzinę. Ponadto wartość Retry-After pokazuje co najmniej jedną minutę zamiast pięciu minut. Aby uzyskać więcej informacji, zobacz Kod błędu.

Dlaczego ograniczanie przepustowości zmienia się na region, a nie na wystąpienie?

Ponieważ różne regiony mają inną liczbę wystąpień usługi Resource Manager, ograniczanie przepustowości na wystąpienie powoduje niespójną wydajność ograniczania przepustowości. Ograniczanie przepustowości na region sprawia, że ograniczanie jest spójne i przewidywalne.

Jak nowe środowisko ograniczania wpływa na moje limity?

Możesz wysłać więcej żądań. Liczba żądań zapisu zwiększa się o 30 razy. Żądania usuwania zwiększają się o 2,4 razy. Liczba żądań odczytu zwiększa się o 7,5 razy.

Czy mogę uniemożliwić migrację subskrypcji do nowego środowiska ograniczania przepustowości?

Nie, wszystkie subskrypcje zostaną ostatecznie zmigrowane.

Limity dostawcy zasobów

Dostawcy zasobów stosują własne limity ograniczania przepustowości. W ramach każdej subskrypcji dostawca zasobów ogranicza przepustowość na region zasobu w żądaniu. Ponieważ usługa Resource Manager ogranicza przepływności według wystąpienia usługi Resource Manager i istnieje kilka wystąpień usługi Resource Manager w każdym regionie, dostawca zasobów może odbierać więcej żądań niż domyślne limity w poprzedniej sekcji.

W tej sekcji omówiono limity ograniczania przepustowości niektórych powszechnie używanych dostawców zasobów.

Ograniczanie przepustowości magazynu

Poniższe limity mają zastosowanie tylko podczas wykonywania operacji zarządzania przy użyciu usługi Azure Resource Manager z usługą Microsoft Azure Storage. Limity dotyczą poszczególnych regionów zasobu w żądaniu.

Zasób Limit
Operacje zarządzania kontami magazynu (odczyt) 800 na 5 minut
Operacje zarządzania kontami magazynu (zapis) 10 na sekundę / 1200 na godzinę
Operacje zarządzania kontami magazynu (generowanie listy) 100 na 5 minut

Ograniczanie przepustowości sieci

Dostawca zasobów Microsoft.Network stosuje następujące limity ograniczania przepustowości:

Operacja Limit
zapis / usuwanie (PUT) 1000 na 5 minut
odczyt (GET) 10000 na 5 minut

Oprócz tych ogólnych limitów następujące limity dotyczą operacji DNS:

Operacja strefy DNS Limit (na strefę)
Tworzenie lub aktualizowanie 40 na minutę
Delete 40 na minutę
Get 1000 na minutę
List 60 na minutę
Lista według grupy zasobów 60 na minutę
Zaktualizuj 40 na minutę
Operacja zestawu rekordów DNS Limit (na strefę)
Tworzenie lub aktualizowanie 200 na minutę
Delete 200 na minutę
Get 2000 na minutę
Lista według strefy DNS 60 na minutę
Lista według typu 60 na minutę
Zaktualizuj 200 na minutę

Ograniczanie mocy obliczeniowej

Aby uzyskać informacje na temat limitów ograniczania przepustowości dla operacji obliczeniowych, zobacz Rozwiązywanie problemów z błędami ograniczania przepustowości interfejsu API — Obliczenia.

Aby sprawdzić wystąpienia maszyn wirtualnych w zestawie skalowania maszyn wirtualnych, użyj operacji zestawów skalowania maszyn wirtualnych. Na przykład użyj maszyn wirtualnych zestawu skalowania maszyn wirtualnych — lista z parametrami, aby sprawdzić stan zasilania wystąpień maszyn wirtualnych. Ten interfejs API zmniejsza liczbę żądań.

Ograniczanie usługi Azure Resource Graph

Usługa Azure Resource Graph ogranicza liczbę żądań do operacji. Kroki opisane w tym artykule w celu określenia pozostałych żądań i sposobu reagowania w przypadku osiągnięcia limitu dotyczą również usługi Resource Graph. Jednak usługa Resource Graph ustawia własny limit i szybkość resetowania. Aby uzyskać więcej informacji, zobacz Resource Graph throttling headers (Nagłówki ograniczania usługi Resource Graph).

Inni dostawcy zasobów

Aby uzyskać informacje na temat ograniczania przepustowości w innych dostawcach zasobów, zobacz:

Kod błędu

Po osiągnięciu limitu otrzymasz kod stanu HTTP 429 Zbyt wiele żądań. Odpowiedź zawiera wartość Retry-After , która określa liczbę sekund oczekiwania aplikacji (lub uśpienia) przed wysłaniem następnego żądania. Jeśli wyślesz żądanie przed upływem wartości ponawiania próby, żądanie nie zostanie przetworzone i zostanie zwrócona nowa wartość ponawiania.

Jeśli używasz zestawu Azure SDK, zestaw SDK może mieć konfigurację automatycznego ponawiania prób. Aby uzyskać więcej informacji, zobacz Wskazówki dotyczące ponawiania prób dla usług platformy Azure.

Niektórzy dostawcy zasobów zwracają 429, aby zgłosić tymczasowy problem. Problem może być warunkiem przeciążenia, który nie jest bezpośrednio spowodowany przez żądanie. Może też reprezentować tymczasowy błąd dotyczący stanu zasobu docelowego lub zasobu zależnego. Na przykład dostawca zasobów sieciowych zwraca wartość 429 z kodem błędu RetryableErrorDueToAnotherOperation , gdy zasób docelowy jest zablokowany przez inną operację. Aby określić, czy błąd pochodzi z ograniczania przepustowości lub warunku tymczasowego, wyświetl szczegóły błędu w odpowiedzi.

Pozostałe żądania

Liczbę pozostałych żądań można określić, sprawdzając nagłówki odpowiedzi. Żądania odczytu zwracają wartość w nagłówku dla liczby pozostałych żądań odczytu. Żądania zapisu zawierają wartość liczby pozostałych żądań zapisu. W poniższej tabeli opisano nagłówki odpowiedzi, które można sprawdzić pod kątem tych wartości:

Nagłówek odpowiedzi opis
x-ms-ratelimit-remaining-subscription-deletes Pozostałe usunięcia w zakresie subskrypcji. Ta wartość jest zwracana w operacjach usuwania.
x-ms-ratelimit-remaining-subscription-reads Pozostałe operacje odczytu w zakresie subskrypcji. Ta wartość jest zwracana w przypadku operacji odczytu.
x-ms-ratelimit-remaining-subscription-writes Pozostałe zapisy w zakresie subskrypcji. Ta wartość jest zwracana w operacjach zapisu.
x-ms-ratelimit-remaining-tenant-reads Pozostałe operacje odczytu w zakresie dzierżawy
x-ms-ratelimit-remaining-tenant-writes Pozostałe zapisy w zakresie dzierżawy
x-ms-ratelimit-remaining-subscription-resource-requests Pozostałe żądania typu zasobów w zakresie subskrypcji.

Ta wartość nagłówka jest zwracana tylko wtedy, gdy usługa zastępuje limit domyślny. Usługa Resource Manager dodaje tę wartość zamiast subskrypcji odczyty lub zapisy.
x-ms-ratelimit-remaining-subscription-resource-entities-read Pozostałe żądania kolekcji typów zasobów w zakresie subskrypcji.

Ta wartość nagłówka jest zwracana tylko wtedy, gdy usługa zastępuje limit domyślny. Ta wartość zawiera liczbę pozostałych żądań kolekcji (zasobów listy).
x-ms-ratelimit-remaining-tenant-resource-requests Pozostałe żądania typu zasobów w zakresie dzierżawy.

Ten nagłówek jest dodawany tylko dla żądań na poziomie dzierżawy i tylko wtedy, gdy usługa zastępuje limit domyślny. Usługa Resource Manager dodaje tę wartość zamiast odczytów lub zapisów dzierżawy.
x-ms-ratelimit-remaining-tenant-resource-entities-read Pozostałe żądania kolekcji typów zasobów w zakresie dzierżawy.

Ten nagłówek jest dodawany tylko dla żądań na poziomie dzierżawy i tylko wtedy, gdy usługa zastępuje limit domyślny.

Dostawca zasobów może również zwracać nagłówki odpowiedzi z informacjami o pozostałych żądaniach. Aby uzyskać informacje o nagłówkach odpowiedzi zwracanych przez dostawcę zasobów obliczeniowych, zobacz Nagłówki odpowiedzi z informacjami o szybkości wywołania.

Pobieranie wartości nagłówka

Pobieranie tych wartości nagłówka w kodzie lub skrycie nie różni się od pobierania żadnej wartości nagłówka.

Na przykład w języku C#pobierasz wartość nagłówka z obiektu HttpWebResponse o nazwie response z następującym kodem:

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

W programie PowerShell pobierasz wartość nagłówka z operacji 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"]

Pełny przykład programu PowerShell można znaleźć w temacie Sprawdzanie limitów usługi Resource Manager dla subskrypcji.

Jeśli chcesz zobaczyć pozostałe żądania debugowania, możesz podać parametr -Debug w poleceniu cmdlet programu PowerShell .

Get-AzResourceGroup -Debug

Zwraca wiele wartości, w tym następującą wartość odpowiedzi:

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

Status Code:
OK

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

Aby uzyskać limity zapisu, użyj operacji zapisu:

New-AzResourceGroup -Name myresourcegroup -Location westus -Debug

Zwraca wiele wartości, w tym następujące wartości:

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

Status Code:
Created

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

W interfejsie wiersza polecenia platformy Azure pobierasz wartość nagłówka przy użyciu bardziej pełnej opcji.

az group list --verbose --debug

Zwraca wiele wartości, w tym następujące wartości:

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'

Aby uzyskać limity zapisu, użyj operacji zapisu:

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

Zwraca wiele wartości, w tym następujące wartości:

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'

Następne kroki