429 Zbyt wiele błędów żądań

W tym artykule omówiono sposób rozwiązywania problemów z błędami spowodowanymi błędami "429 Za dużo żądań" w klastrach (aks) firmy Microsoft Azure Kubernetes Service (lub klastrach korzystających z innej implementacji platformy Kubernetes na platformie Azure).

Symptomy

Występują błędy podobne do następującego tekstu:

Usługa zwróciła błąd.

Status=429

Code="OperationNotAllowed"

Message="Serwer odrzucił żądanie, ponieważ odebrano zbyt wiele żądań dla tej subskrypcji."

Details=[{
"code":"TooManyRequests",
"message":"{
\"operationGroup\":\"HighCostGetVMScaleSet30Min\",
\"startTime\":\"2020-09-20T07:13:55.2177346+00:00\",
\"endTime\":\"2020-09-20T07:28:55.2177346+00:00\",
\"allowedRequestCount\":1800,
\"measuredRequestCount\":2208
}",
"target":"HighCostGetVMScaleSet30Min"
}]

InnerError={"internalErrorCode":"TooManyRequestsReceived"}"}

Przyczyna: nadmierne liczby wywołań powodują ograniczenie liczby subskrypcji na platformie Azure

Klaster Kubernetes na platformie Azure (z usługą AKS lub bez usługi AKS), który często skaluje się w górę lub w dół lub używa autoskalowania klastra, może powodować dużą liczbę wywołań HTTP. Ten wolumin wywołań może spowodować niepowodzenie, ponieważ przekracza przypisany limit przydziału dla subskrypcji platformy Azure.

Aby uzyskać więcej informacji na temat tych błędów, zobacz Ograniczanie żądań Resource Manager platformy Azure i Rozwiązywanie problemów z błędami ograniczania przepustowości interfejsu API. Aby uzyskać informacje na temat sposobu analizowania i identyfikowania przyczyn tych błędów oraz uzyskiwania zaleceń dotyczących ich rozwiązania, zobacz Analizowanie i identyfikowanie błędów przy użyciu usługi AKS Diagnose and Solve Problems(Analizowanie i identyfikowanie błędów przy użyciu usługi AKS Diagnose and Solve Problems).

Rozwiązanie 1. Uaktualnianie do nowszej wersji platformy Kubernetes

Uruchom platformę Kubernetes 1.18. x lub nowszy. Te wersje zawierają wiele ulepszeń opisanych w artykule Błędy ograniczania przepustowości usługi AKS/429 i obsługują duże klastry bez ograniczania przepustowości. Jeśli jednak nadal widzisz ograniczanie przepustowości (ze względu na rzeczywiste obciążenie lub liczbę klientów w subskrypcji), możesz wypróbować następujące rozwiązania.

Rozwiązanie 2. Zwiększanie interwału skanowania autoskalowania

Jeśli okaże się, że "Wykryto ograniczanie automatycznego skalowania klastra" w raportach diagnostycznych spowodowanych przez autoskalowanie klastra, możesz spróbować zwiększyć interwał skanowania automatycznego skalowania w celu zmniejszenia liczby wywołań zestawów skalowania maszyn wirtualnych (VMSS) z poziomu narzędzia do skalowania automatycznego klastra.

Rozwiązanie 3. Ponowne konfigurowanie aplikacji innych firm w celu wykonywania mniejszej liczby wywołań

Jeśli filtrujesz według agentów użytkowników w diagnostyce "Wyświetlanie szybkości żądań i szczegółów ograniczania", jeśli znajdziesz aplikacje innych firm (takie jak aplikacje monitorujące), które tworzą nadmierną liczbę żądań GET, zmień ustawienia tych aplikacji, aby zmniejszyć częstotliwość wywołań GET. Ponadto upewnij się, że klienci aplikacji używają wykładniczego wycofywania podczas wywoływania interfejsów API platformy Azure.

Rozwiązanie 4. Dzielenie klastrów na różne subskrypcje lub regiony

Jeśli istnieje wiele klastrów i pul węzłów korzystających z zestawów skalowania maszyn wirtualnych, spróbuj podzielić klastry na różne subskrypcje lub regiony (w ramach tej samej subskrypcji). Większość limitów interfejsu API platformy Azure to limity udostępnione na poziomie subskrypcji i regionu. Na przykład wszystkie klastry i klienci w regionie podrzędnym i regionie Wschodnie stany USA mają limit dla interfejsu API GET zestawów skalowania maszyn wirtualnych. W związku z tym można przenosić lub skalować nowe klastry usługi AKS w nowym regionie i odblokować ograniczanie przepustowości interfejsu API platformy Azure. Ta technika pomaga, jeśli oczekujesz, że klastry będą miały wysoką aktywność (na przykład jeśli masz aktywny autoskalator klastra). Pomaga również, jeśli masz wielu klientów (takich jak Rancher, Terraform itd.). Ponieważ wszystkie klastry różnią się elastycznością i liczbą klientów, którzy sondują interfejsy API platformy Azure, nie ma ogólnych wytycznych dotyczących liczby klastrów, które można uruchomić na poziomie subskrypcji regionu. Aby uzyskać szczegółowe wskazówki, możesz utworzyć bilet pomocy technicznej.

Analizowanie i identyfikowanie błędów przy użyciu usługi AKS Diagnose and Solve Problems

W przypadku klastra usługi AKS można użyć usługi AKS Diagnose and Solve Problems do analizowania i identyfikowania przyczyn tych błędów oraz uzyskiwania zaleceń dotyczących ich rozwiązania. Przejdź do klastra w Azure Portal i wybierz pozycję Diagnozuj i rozwiąż problemy w lewym obszarze nawigacji, aby otworzyć usługę AKS Diagnose and Solve Problems (Diagnozowanie i rozwiązywanie problemów w usłudze AKS). Search i otwórz usługę Azure Resource Request Throttling, gdzie możesz uzyskać raport z serią diagnostyki. Ta diagnostyka może pokazać, czy w klastrze wystąpiło ograniczanie szybkości żądań (429 odpowiedzi) usługi Azure Resource Manager (ARM) lub dostawcy zasobów (RP) oraz skąd pochodzi ograniczanie przepustowości. Przykład:

  • Wykryto ograniczanie szybkości żądań dla klastra: ta diagnostyka zawiera pewne ogólne zalecenia w przypadku wykrycia ograniczania przepustowości w bieżącym klastrze usługi AKS.

  • Wykryto ograniczanie automatycznego skalowania klastra: ta diagnostyka jest wyświetlana, jeśli wykryto ograniczanie przepustowości i pochodziło z narzędzia do skalowania automatycznego klastra.

    Aby zmniejszyć liczbę żądań ze skalowania automatycznego klastra, użyj następujących metod:

    • Zwiększ interwał skanowania autoskalowania, aby zmniejszyć liczbę wywołań z narzędzia do skalowania automatycznego klastra do zestawów skalowania maszyn wirtualnych. Ta metoda może mieć negatywny wpływ na opóźnienie czasu potrzebnego do skalowania w górę, ponieważ narzędzie do skalowania automatycznego klastra czeka dłużej przed wywołaniem dostawcy zasobów obliczeniowych platformy Azure (CRP) dla nowej maszyny wirtualnej.
    • Upewnij się, że klaster jest w minimalnej wersji platformy Kubernetes w wersji 1.18. Platforma Kubernetes w wersji 1.18 i nowszych lepiej obsługuje wycofywanie żądań po otrzymaniu 429 odpowiedzi ograniczania przepustowości. Zdecydowanie zalecamy pozostanie w obsługiwanych wersjach platformy Kubernetes, aby otrzymywać poprawki zabezpieczeń.
  • Ograniczanie przepustowości — azure Resource Manager: ta diagnostyka pokazuje liczbę żądań ograniczanych w określonym zakresie czasu w klastrze usługi AKS.

  • Częstotliwość żądań — azure Resource Manager: ta diagnostyka pokazuje całkowitą liczbę żądań w określonym zakresie czasu w klastrze usługi AKS.

  • Wyświetlanie szczegółów dotyczących szybkości żądań i ograniczania przepustowości: ta diagnostyka zawiera wiele diagramów określających szczegóły ograniczania przepustowości, w tym żądania ograniczone i łączną liczbę żądań. Wyniki można również filtrować przy użyciu następujących wymiarów:

    • Host: host, na którym wykryto stan HTTP 429 odpowiedzi. Ograniczenia Resource Manager platformy Azure pochodzą z management.azure.complatformy ; wszystko inne jest dostawcą zasobów niższej warstwy.
    • Agent użytkownika: żądania z określonym agentem użytkownika, które zostały ograniczone.
    • Operacja: Operacje, w których wykryto stan HTTP 429 odpowiedzi.
    • Adres IP klienta: adres IP klienta, który wysłał żądania ograniczone.

Ograniczanie żądań może być spowodowane kombinacją dowolnego klastra w tej subskrypcji, a nie tylko szybkością żądań dla tego klastra.

Przykład 1: Ograniczanie automatycznego skalowania klastra

Ten przykład dotyczy analizowania ograniczania przepustowości spowodowanego przez autoskalowanie klastra.

Jeśli okaże się, że wykryto ograniczanie automatycznego skalowania klastra w usłudze AKS Diagnose and Solve Problems Known Issues, Availability and PerformanceAzure Resource Request Throttling(Diagnozowanie i rozwiązywanie znanych problemów>, dostępność i wydajność> ograniczania żądań zasobów platformy Azure), oznacza to, że żądania wysyłane przez narzędzie do skalowania automatycznego klastra zostały ograniczone.

Diagram przedstawiający wykrywanie ograniczania żądań automatycznego skalowania klastra.

Liczbę żądań ograniczanych można znaleźć i kiedy żądania są ograniczane w diagnostyce ograniczania przepustowości — Azure Resource Manager.

Diagram pokazujący, kiedy żądania automatycznego skalowania klastra są ograniczane.

Liczbę wszystkich żądań usługi ARM można znaleźć w tym samym okresie.

Diagram wszystkich żądań usługi ARM.

Aby znaleźć szczegóły ograniczania przepustowości, możesz sprawdzić diagnostykę wyświetlenia szybkości żądania i szczegółów ograniczania przepustowości. Wybierz pozycję 429 według agenta użytkownika z listy rozwijanej Wybierz filtr i widać, że żądania skalowania automatycznego są ograniczane od 15:00 do 16:00.

Diagram ograniczania przepustowości przez agentów użytkowników.

Możesz również znaleźć całkowitą liczbę żądań ograniczanych dla narzędzia do skalowania automatycznego klastra i innych agentów użytkowników.

Diagram przedstawiający łączne ograniczenia przepustowości według agenta użytkownika.

Można również filtrować ograniczenia według operacji. W tym przypadku operacja usuwania maszyny wirtualnej VMSS jest ograniczona.

Diagram ograniczania przepustowości według operacji.

Możesz znaleźć liczbę żądań ograniczanych i wszystkie żądania pogrupowane według operacji.

Diagram łącznych przepływności według operacji.

Następnie możesz postępować zgodnie z sugestiami w zalecanej akcji , aby zmniejszyć ograniczanie przepustowości.

Diagram pokazuje, że wykryto ograniczanie przepustowości żądań automatycznego skalowania klastra.

Przykład 2: Ograniczanie przepustowości dostawcy usług w chmurze

Ten przykład dotyczy ograniczania przepustowości spowodowanego przez dostawcę usług w chmurze. Często zdarza się to, gdy zasoby operacyjne w większych klastrach, na przykład aprowizowanie Azure Load Balancer w klastrze, który ma więcej niż 500 węzłów.

Jeśli znajdziesz ograniczanie przepustowości w klastrze, szczegółowe informacje o ograniczaniu przepustowości można znaleźć w diagnostyce Wyświetlanie szybkości żądania i szczegółów ograniczania przepustowości. Wybierz pozycję 429 według agenta użytkownika z listy rozwijanej Wybierz filtr i widać, że żądania dostawców usług w chmurze zostały ograniczone od 03:00 do 06:00.

Zostanie wykryty diagram przedstawiający ograniczanie przepustowości.

Diagram ograniczania przepustowości według agenta użytkownika.

Możesz również filtrować według operacji, aby dowiedzieć się, że operacja ograniczona to "Network/loadBalancers/read".

Diagram ograniczania przepustowości według operacji.

Aby zmniejszyć tę ograniczanie, możesz użyć funkcji usługi AKS w wersji zapoznawczej opartej na protokole IP węzła Load Balancer.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii platformy Azure.