Udostępnij za pośrednictwem


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

W tym artykule omówiono sposób rozwiązywania problemów spowodowanych błędami "429 Zbyt wiele żądań" w klastrach usługi Microsoft Azure Kubernetes Service (AKS) (lub klastrach korzystających z innej implementacji rozwiązania Kubernetes na platformie Azure).

Symptomy

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

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

Stan=429

Code="OperationNotAllowed"

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

Szczegóły=[{
"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 woluminy wywołań powodują ograniczenie subskrypcji przez platformę Azure

Klaster Kubernetes na platformie Azure (z usługą AKS lub bez usługi AKS), który wykonuje częste skalowanie w górę lub w dół lub używa narzędzia do automatycznego skalowania klastra, może spowodować 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ń usługi Azure Resource Manager i Rozwiązywanie problemów z błędami ograniczania przepustowości interfejsu API. Aby uzyskać informacje o sposobie analizowania i identyfikowania przyczyny tych błędów oraz uzyskiwania zaleceń dotyczących ich rozwiązywania, zobacz Analizowanie i identyfikowanie błędów przy użyciu usługi AKS Diagnozowanie i rozwiązywanie problemów.

Rozwiązanie 1. Uaktualnienie do nowszej wersji rozwiązania Kubernetes

Uruchom platformę Kubernetes 1.18.x lub nowszy. Te wersje zawierają wiele ulepszeń opisanych w artykule Błędy ograniczania usługi AKS/429 i Obsługa dużych klastrów 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 autoskalatora

Jeśli okaże się , że ograniczenie przepustowości automatycznego skalowania klastra zostało wykryte" zgłasza ograniczanie przepustowości spowodowane przez narzędzie do automatycznego skalowania klastra, możesz spróbować zwiększyć interwał skanowania automatycznego skalowania, aby zmniejszyć liczbę wywołań do zestawów skalowania maszyn wirtualnych (VMSS) z narzędzia do automatycznego skalowania klastra.

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

W przypadku filtrowania według agentów użytkowników w diagnostyce "Wyświetl częstotliwość żądań i szczegóły 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ą wycofywania wykładniczego 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 współużytkowane na poziomie regionu subskrypcji. Na przykład wszystkie klastry i klienci w obrębie pod jednym i regionu Wschodnie stany USA mają limit dla zestawów skalowania maszyn wirtualnych GET API. 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 narzędzie do automatycznego skalowania klastra). Pomaga to również w przypadku wielu klientów (takich jak Rancher, Terraform itd.). Ponieważ wszystkie klastry różnią się w ich elastyczności i liczbie klientów sondujących interfejsy API platformy Azure, nie ma ogólnych wytycznych dotyczących liczby klastrów, które można uruchomić na poziomie regionu subskrypcji. Aby uzyskać konkretne wskazówki, możesz utworzyć bilet pomocy technicznej.

Analizowanie i identyfikowanie błędów przy użyciu usługi AKS Diagnozowanie i rozwiązywanie problemów

W przypadku klastra usługi AKS można użyć usługi AKS Diagnozowanie i rozwiązywanie problemów w celu przeanalizowania i zidentyfikowania przyczyny tych błędów oraz uzyskania rekomendacji w celu ich rozwiązania. Przejdź do klastra w witrynie Azure Portal, a następnie wybierz pozycję Diagnozowanie i rozwiązywanie problemów w lewym obszarze nawigacyjnym, aby otworzyć usługę AKS Diagnozowanie i rozwiązywanie problemów. Wyszukaj i otwórz ograniczanie żądań zasobów platformy Azure, gdzie można uzyskać raport z serią diagnostyki. Ta diagnostyka może pokazać, czy klaster napotkał jakiekolwiek ograniczanie szybkości żądań (odpowiedzi 429) usługi Azure Resource Manager (ARM) lub dostawcy zasobów (RP) oraz skąd pochodzi ograniczanie przepustowości. Na przykład:

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

  • Wykryto ograniczanie automatycznego skalowania klastra: ta diagnostyka pokazuje, czy ograniczenie zostało wykryte i pochodzi z narzędzia do automatycznego skalowania klastra.

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

    • Zwiększ interwał skanowania autoskalatora, aby zmniejszyć liczbę wywołań z narzędzia do automatycznego skalowania klastra do zestawów skalowania maszyn wirtualnych. Ta metoda może mieć negatywny wpływ na opóźnienie w czasie potrzebnym do skalowania w górę, ponieważ narzędzie do automatycznego skalowania klastra czeka dłużej przed wywołaniem dostawcy zasobów obliczeniowych platformy Azure dla nowej maszyny wirtualnej.
    • Upewnij się, że klaster znajduje się w minimalnej wersji platformy Kubernetes w wersji 1.18. Platforma Kubernetes w wersji 1.18 lub nowszej obsługuje wycofywanie żądań lepiej, gdy odbierane są odpowiedzi ograniczania przepustowości 429. Zdecydowanie zalecamy pozostanie w obsługiwanych wersjach platformy Kubernetes w celu otrzymywania poprawek zabezpieczeń.
  • Ograniczanie przepustowości — Azure Resource Manager: ta diagnostyka pokazuje liczbę ograniczonych żądań w określonym zakresie czasu w klastrze usługi AKS.

  • Szybkość żądań — Azure Resource Manager: ta diagnostyka przedstawia łączną liczbę żądań w określonym zakresie czasu w klastrze usługi AKS.

  • Wyświetlanie szczegółów 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 odpowiedzi HTTP o stanie 429. Ograniczenia usługi Azure Resource Manager pochodzą z management.azure.comusługi ; wszystkie inne elementy są 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 odpowiedzi http o stanie 429.
    • Adres IP klienta: adres IP klienta, który wysył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

W tym przykładzie o analizowaniu ograniczania przepustowości spowodowanego przez automatyczne skalowanie klastra.

Jeśli okaże się, że ograniczanie automatycznego skalowania klastra zostało wykryte w usłudze AKS Diagnozowanie i rozwiązywanie>znanych problemów, dostępność i wydajność>ograniczanie żądań zasobów platformy Azure, wskazuje, że żądania wydane przez narzędzie do automatycznego skalowania klastra zostały ograniczone.

Diagram przedstawiający wykryto ograniczanie żądań automatycznego skalowania klastra.

Liczbę żądań ograniczonych można znaleźć, gdy żądania są ograniczane, można znaleźć 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.

Możesz sprawdzić diagnostykę Wyświetl szybkość żądań i szczegóły ograniczania, aby znaleźć szczegóły ograniczania przepustowości. Wybierz pozycję 429s według agenta użytkownika z listy rozwijanej Wybierz filtr i widać, że żądania skalowania automatycznego są ograniczane z zakresu od 15:00 do 16:00.

Diagram ograniczania przepływności przez agentów użytkowników.

Możesz również znaleźć łączną liczbę ograniczonych żądań dla skalowania automatycznego klastra i innych agentów użytkowników.

Diagram łącznych ograniczeń przez agenta użytkownika.

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

Diagram ograniczania przepływności według operacji.

Liczbę żądań ograniczonych i wszystkie żądania pogrupowane według operacji można znaleźć.

Diagram całkowitych ograniczeń przepływności według operacji.

Następnie możesz postępować zgodnie z sugestiami w zalecanej akcji , aby zmniejszyć ograniczenia.

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

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

W tym przykładzie o ograniczeniach spowodowanych przez dostawcę usług w chmurze. Często zdarza się to, gdy zasoby operacyjne w większych klastrach, na przykład aprowizowanie usługi Azure Load Balancer w klastrze, który ma ponad 500 węzłów.

Jeśli znajdziesz ograniczanie przepustowości w klastrze, możesz zobaczyć szczegóły ograniczania w diagnostyce Wyświetlanie szybkości żądań i ograniczania przepustowości . Wybierz pozycję 429s by User Agent (Agent użytkownika) z listy rozwijanej Wybierz filtr i widać, że żądania dostawców usług w chmurze zostały ograniczone z zakresu od 03:00 do 06:00.

Diagram przedstawiający wykryto ograniczanie przepustowości.

Diagram ograniczania przepływności przez agenta użytkownika.

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

Diagram ograniczania przepływności według operacji.

Aby zmniejszyć tę ograniczanie, możesz użyć funkcji usługi AKS w wersji zapoznawczej opartego na protokole IP modułu równoważenia obciążenia opartego na adresach IP węzła.

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 na temat platformy Azure.