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.com
platformy ; 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.
- Host: host, na którym wykryto stan HTTP 429 odpowiedzi. Ograniczenia Resource Manager platformy Azure pochodzą z
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.
Liczbę żądań ograniczanych można znaleźć i kiedy żądania są ograniczane w diagnostyce ograniczania przepustowości — Azure Resource Manager.
Liczbę wszystkich żądań usługi ARM można znaleźć w tym samym okresie.
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.
Możesz również znaleźć całkowitą liczbę żądań ograniczanych dla narzędzia do skalowania automatycznego klastra i innych agentów użytkowników.
Można również filtrować ograniczenia według operacji. W tym przypadku operacja usuwania maszyny wirtualnej VMSS jest ograniczona.
Możesz znaleźć liczbę żądań ograniczanych i wszystkie żądania pogrupowane według operacji.
Następnie możesz postępować zgodnie z sugestiami w zalecanej akcji , aby zmniejszyć ograniczanie przepustowości.
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.
Możesz również filtrować według operacji, aby dowiedzieć się, że operacja ograniczona to "Network/loadBalancers/read".
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.