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ę.
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.
Odczytywanie metryk przy użyciu interfejsu */providers/microsoft.insights/metrics
API znacząco przyczynia się do ogólnego ruchu usługi Azure Resource Manager i jest częstą przyczyną zdarzeń ograniczania subskrypcji. Jeśli używasz tego interfejsu API w dużym stopniu, zalecamy przełączenie się do interfejsu getBatch
API. Zapytania dotyczące wielu zasobów można wykonywać w jednym żądaniu REST, co zwiększa wydajność i zmniejsza ograniczanie przepustowości. Aby uzyskać więcej informacji na temat konwertowania operacji, zobacz Jak przeprowadzić migrację z interfejsu API metryk do interfejsu API getBatch.
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 zobacz limity użycia dla usługi Azure DNS.
Ograniczanie mocy obliczeniowej
Usługa Microsoft Compute implementuje ograniczanie przepustowości w celu zapewnienia optymalnego środowiska dla użytkowników maszyn wirtualnych i zestawu skalowania maszyn wirtualnych. Limity ograniczania zasobów obliczeniowych zawierają kompleksowe informacje na temat zasad ograniczania przepustowości i limitów dla maszyn wirtualnych, zestawów skalowania maszyn wirtualnych i maszyn wirtualnych zestawu skalowania.
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:
- Wskazówki dotyczące ograniczania przepustowości usługi Azure Key Vault
- Rozwiązywanie problemów z usługą Azure Kubernetes Service
- Tożsamości zarządzane
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
- Aby uzyskać więcej informacji na temat limitów i przydziałów, zobacz Limity dotyczące subskrypcji i usług platformy Azure, limity przydziału i ograniczenia.
- Aby dowiedzieć się więcej o obsłudze asynchronicznych żądań REST, zobacz Śledzenie asynchronicznych operacji platformy Azure.