Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Regionalne ograniczenie przepustowości i algorytm wiadra tokenów
Firma Microsoft migrowała subskrypcje platformy Azure do zaktualizowanej architektury ograniczania od 2024 roku. Limity ograniczania przepustowości są teraz stosowane w poszczególnych regionach, a nie na każde wystąpienie usługi Azure Resource Manager. Ta nowa architektura używa algorytmu kubełkowego tokenów do zarządzania ograniczaniem 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.
Zaktualizowane 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 są 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ę wyświetlić żądania z ograniczeniem przepustowości?
Aby wyświetlić ograniczane żądania i inne metryki usługi Resource Manager, odwiedź Uzyskiwanie dostępu do metryk usługi Azure Resource Manager.
Dlaczego ograniczanie przepustowości 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 zaktualizowane doświadczenie 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.
Ograniczanie zadań w tle
Zadania w tle w usłudze Azure Resource Manager (ARM) to automatyczne zadania uruchamiane w tle w celu obsługi operacji, takich jak wdrożenia zasobów, diagnostyka i konserwacja systemu. Te zadania są niezbędne do przetwarzania żądań użytkowników i zapewnienia funkcjonalności usługi. Aby zachować stabilność i niezawodność platformy, ARM stosuje regulację zadań w tle w celu zarządzania obciążeniem z tych zadań.
Możesz określić, kiedy występuje ograniczanie przepustowości zadania w tle, jeśli zostanie wyświetlony następujący komunikat o błędzie:
The request for subscription '{0}' could not be processed due to an excessive volume of traffic. Please try again later.
Klienci mogą napotykać ograniczanie przepustowości z powodu nadmiernej liczby zadań w tle, które mogą być wyzwalane przez operacje o wysokiej częstotliwości lub działania dotyczące całego systemu. Chociaż klienci nie mają bezpośredniej kontroli nad tworzeniem lub wykonywaniem tych zadań, świadomość potencjalnego ograniczania zasobów jest ważna.
Ograniczanie przepustowości dla chmur innych niż publiczne
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.
Żą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 do instancji Azure Resource Manager w regionie są również ograniczane dla każdego głównego identyfikatora użytkownika 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.
Uwaga / Notatka
Limity dostawcy zasobów mogą różnić się od limitów wystąpienia usługi Azure Resource Manager w regionie użytkownika.
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.
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 | Ograniczenie |
---|---|---|
Subskrypcja | — odczyty | 12 000 |
Subskrypcja | — usunięcia | 15 000 |
Subskrypcja | — zapisy | 1200 |
Dzierżawa | — odczyty | 12 000 |
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. Różne wystąpienia usługi Azure Resource Manager zwykle obsługują żądania użytkownika.
Pozostałe żądania są zwracane w wartościach nagłówka odpowiedzi.
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 wtedy, gdy wykonujesz operacje zarządzania przy użyciu usługi Azure Resource Manager z usługą Azure Storage i dostawcą zasobów magazynu. Limity dotyczą subskrypcji na region zasobu w żądaniu.
Zasób | Ograniczenie |
---|---|
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 | Ograniczenie |
---|---|
zapis / usuwanie (PUT) | 1000 na 5 minut |
odczyt (GET) | 10 000 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).
Usługa Azure Resource Graph oferuje również rozwiązanie, które umożliwia dodatkowy mechanizm pobierania danych zasobów po przekroczeniu limitów ustalonych przez dostawcę zasobów, dzięki płynnej integracji z istniejącymi interfejsami API GET i LIST usługi Azure Resource Manager, oferując zaawansowane, skalowalne rozwiązanie do uzyskiwania dostępu do danych zasobów. Aby uzyskać więcej informacji, zobacz ARG GET/LIST API.
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 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 spowodował żądania. Lub może to być 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 inna operacja blokuje zasób docelowy. 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 (liczba pozostałych kasowań subskrypcji przed osiągnięciem limitu) | Pozostałe usunięcia w zakresie subskrypcji. Ta wartość jest zwracana w operacjach usuwania. |
x-ms-ratelimit-pozostałe-odczyty-subskrypcji | Pozostałe operacje odczytu w zakresie subskrypcji. Ta wartość jest zwracana w przypadku operacji odczytu. |
x-ms-ratelimit-liczba-pozostałych-subskrypcji-zapisów | Pozostałe zapisy w zakresie subskrypcji. Ta wartość jest zwracana w operacjach zapisu. |
x-ms-limit-prędkości-pozostałe-odczyty-najemców | Pozostałe operacje odczytu w zakresie dzierżawy. |
If we assume that a translation in this context is beneficial or necessary, a plausible translation might be "x-ms-limit-pozostający-na-pisania-najemcy". However, it should be verified with technical experts if translating or keeping the term as is might lead to better understanding in technical documentation. | Pozostałe zapisy w zakresie dzierżawy. |
x-ms-limit-przepustowości-pozostałe-wnioski-o-zasoby-subskrypcji | Pozostałe żądania typu zasobu 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 zbierania 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-ograniczenie-szybkosc-pozostale-zapytania-o-zasoby-najemcy | Pozostałe żądania typu zasobów w zakresie dzierżawy. Ten nagłówek jest dodawany 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-limit-przepływu-pozostałe-jednostki-zasobów-najemcy-odczyt | 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 pobierz wartość nagłówka Invoke-WebRequest
z operacji.
$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 ARM dla danej subskrypcji.
Aby wyświetlić pozostałe żądania debugowania, podaj parametr -Debug w poleceniu cmdlet programu PowerShell .
Get-AzResourceGroup -Debug
Odpowiedź zawiera 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
Odpowiedź zawiera 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 użyjesz bardziej pełnej opcji, aby pobrać wartość nagłówka:
az group list --verbose --debug
Polecenie 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
Operacja 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.