HTTP 429 Too Many Requests: warten und dann richtig wiederholen

HTTP 429 Too Many Requests

HTTP 429 Too Many Requests: Retry-After und Backoff | We.Inc

Was der Status 429 bedeutet, wie du Retry-After liest, und Retry-Code mit Exponential Backoff und Jitter. Plane deinen eigenen Retry-Zeitplan mit dem Rechner.

Eine 429-Antwort bedeutet, dass der Server dich drosselt: Dieser Client hat in einem Zeitfenster mehr Requests gesendet, als erlaubt sind. Hör eine Weile auf zu senden. Enthält die Antwort einen Retry-After-Header, warte so lange; wenn nicht, wiederhole mit Exponential Backoff plus zufälligem Jitter, damit nicht viele Clients im Gleichschritt erneut anfragen.

Eine 429-Antwort lesen

Lege die erste Verzögerung, die Obergrenze und die Anzahl erlaubter Wiederholungen fest und wähle dann eine Jitter-Variante. Der Rechner listet für jeden Versuch die Wartespanne und die Gesamtdauer im schlimmsten Fall auf, sodass du siehst, ob dein Client aufgibt, bevor das Zeitfenster des Servers zurückgesetzt wird.

Häufige Fragen

Ist 429 ein Client- oder ein Serverfehler?

Er gehört zur 4xx-Klasse und beschreibt daher das Verhalten des Clients: zu viele Requests. Auf dem Server ist nichts kaputt. Die Lösung ist, weniger Requests zu senden oder sie zeitlich zu verteilen.

Was enthält Retry-After?

Entweder eine Anzahl Sekunden, die gewartet werden soll, etwa 120, oder ein HTTP-Datum, nach dem du es erneut versuchen darfst. Dein Client sollte beide Formen verarbeiten.

Warum Jitter zum Exponential Backoff hinzufügen?

Ohne Jitter wiederholt jeder Client, der im selben Moment gescheitert ist, auch wieder im selben Moment, was die Lastspitze neu erzeugt. Eine zufällige Wartezeit innerhalb jedes Fensters verteilt die Wiederholungen.

Warum gibt mein nginx-Rate-Limit 503 statt 429 zurück?

Das Modul limit_req lehnt mit 503 ab, sofern du es nicht änderst. Füge limit_req_status 429; neben deiner limit_req-Zeile hinzu, damit Clients den treffenderen Code sehen.

Kann ein CDN eine 429-Antwort cachen?

Es darf nicht. RFC 6585 legt fest, dass Antworten mit dem Statuscode 429 nicht von einem Cache gespeichert werden dürfen, sodass jeder Client eine frische Antwort bekommt, sobald das Limit aufgehoben ist.

Wer 429 sendet und warum

Die drei Backoff-Varianten im Rechner

Client-Code, der 429 respektiert

fetch mit Retry-After und Full Jitter

Liest beide Formen von Retry-After, fällt auf Full Jitter zurück und hört nach einer festen Anzahl Wiederholungen auf.

429 vom eigenen Server senden

nginx: pro IP begrenzen und mit 429 antworten

limit_req lehnt standardmäßig mit 503 ab; limit_req_status stellt auf 429 um.

Wie die Antwort aussieht

Ein kurzer Body, der das Limit erklärt, und ein Retry-After in Sekunden.

Rechner für den Retry-Zeitplan

Basisverzögerung (ms)

Obergrenze pro Wartezeit (ms)

Wiederholungen

Jitter-Variante

Full Jitter

Equal Jitter

Kein Jitter

Wartezeit vor jeder Wiederholung

Wiederholung

Kürzeste Wartezeit

Längste Wartezeit

Schlimmster Fall bis zum Aufgeben: {v}

Verwende ganze Zahlen über null, wobei die Obergrenze mindestens so groß wie die Basis sein muss.

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap