Exponentiellen Backoff-Zeitplan für Wiederholungen berechnen
Dieser Rechner wandelt vier Einstellungen für Wiederholungen in eine genaue Liste von Verzögerungen um.
Im Browser ausführen – kostenlos
Geben Sie die Wartezeit vor dem ersten erneuten Versuch, den Wachstumsmultiplikator, die maximal zulässige Verzögerung und die Anzahl der Versuche an. Das Ergebnis zeigt die Wartezeit vor jeder Wiederholung in derselben Zeiteinheit. Damit können Sie Konfigurationen prüfen, Clientverhalten dokumentieren, Richtlinien vergleichen und übermäßig lange Wiederherstellungsfenster vor dem Produktiveinsatz erkennen.
Definieren Sie die Richtlinie mit einer einheitlichen Einheit
Beginnen Sie mit der Basisverzögerung, also der Wartezeit vor dem ersten erneuten Versuch. Wählen Sie eine zum konfigurierten System passende Einheit, etwa Millisekunden oder Sekunden, und verwenden Sie diese ebenfalls für die maximale Verzögerung. Der Rechner schreibt keine Einheit vor, weil exponentieller Backoff in jeder Einheit derselben Arithmetik folgt. Der Multiplikator bestimmt, wie schnell die noch nicht begrenzte Verzögerung wächst. Der Wert zwei verdoppelt jede folgende Wartezeit, während eins ein gleichbleibendes Intervall erzeugt. Die Anzahl der Versuche bezeichnet Wiederholungen und schließt den ursprünglichen Vorgang nicht ein: Bei fünf erhalten Sie fünf Einträge mit den Nummern eins bis fünf. Diese klare Unterscheidung verhindert einen häufigen Zählfehler in Betriebsanleitungen und Konfigurationsprüfungen. Die Basisverzögerung muss positiv sein, der Multiplikator mindestens eins, die Obergrenze positiv und die Anzahl eine ganze Zahl zwischen eins und eintausend. Dadurch bleibt der Zeitplan sinnvoll und die Ausgabe begrenzt. Arbeitet Ihre Anwendung mit Millisekunden, kennzeichnen Sie kopierte Ergebnisse entsprechend, damit sie später nicht als Sekunden gelesen werden.
Verstehen Sie Wachstum und maximale Begrenzung
Für Wiederholung n ergibt sich die unbegrenzte Verzögerung aus der Basisverzögerung mal Multiplikator hoch n minus eins. Zurückgegeben wird der kleinere Wert aus diesem Ergebnis und der maximalen Verzögerung. Eine Basis von 250, der Multiplikator zwei und ein Maximum von 2,000 ergeben beispielsweise 250, 500, 1,000, 2,000 und danach für alle weiteren Versuche erneut 2,000. Die Grenze gilt auch dann, wenn sie unter der Basis liegt; bei einer Basis von zehn und einem Maximum von drei lautet das Ergebnis daher von Anfang an drei. Dieses Verhalten setzt eine strikte Obergrenze um und macht ungewöhnliche Einstellungen sichtbar, statt sie stillschweigend umzuschreiben. Die Berechnung schreitet iterativ fort, verwendet keine unbegrenzte Potenz und stoppt das Wachstum nach Erreichen der Grenze. So bleiben selbst sehr große Multiplikatoren deterministisch, ohne einen unendlichen Wert in das JSON-Ergebnis einzutragen. Der Zeitplan enthält keinen Zufallsversatz. Absichtlich zeigt er die zugrunde liegende deterministische Richtlinie, die ein solcher Versatz verändern würde. Fügen Sie Zufallsstreuung getrennt nach den genauen Regeln Ihrer Clientbibliothek hinzu.
Verwenden Sie den Plan ohne eine Wiederholungswelle auszulösen
Prüfen Sie mit der Ausgabe den zeitlichen Rahmen, bevor Sie eine Richtlinie ausrollen. Eine kurze Basisverzögerung mag harmlos wirken, doch ein hoher Multiplikator bringt spätere Versuche schnell an die Obergrenze und kann die gesamte Wiederherstellung erheblich verlängern. Vergleichen Sie die einzelnen Wartezeiten mit Anfrage-Timeouts, Sichtbarkeitsfristen von Warteschlangen, dem Zurücksetzen von Ratenbegrenzungen und der für Ihre Benutzer maximal zumutbaren Dauer. Der Rechner liefert Wartezeiten vor Wiederholungen; die Laufzeit der ursprünglichen Anfrage und die Arbeit während jedes fehlgeschlagenen Versuchs sind nicht enthalten. Addieren Sie diese Zeiten separat, um den vollständigen ungünstigsten Fall abzuschätzen. In verteilten Systemen können deterministische Pläne nach einem gemeinsamen Ausfall viele Clients gleichzeitig erneut starten lassen. Produktive Clients ergänzen deshalb oft eine begrenzte Zufallsstreuung und behalten den berechneten Plan als Obergrenze oder Mittelwert bei. Diese Funktion sendet keine Anfragen, wartet nicht, kontaktiert keinen Dienst und bewertet keine Fehler. Sie berechnet ausschließlich den Zeitplan, ohne Netzwerkzugriff oder gespeicherten Zustand. Im Browser ist die Ausführung kostenlos; API-Automatisierung kostet $0.002 je Anfrage.
Anwendungsfälle
Prüfen Sie Wiederholungseinstellungen eines SDK
Wandeln Sie vorgeschlagene Parameter in konkrete Wartezeiten um, bevor Sie eine Clientkonfiguration freigeben.
Dokumentieren Sie Wiederherstellungszeiten
Ergänzen Sie eine Betriebsanleitung um einen genauen Plan pro Versuch, ohne Potenzen von Hand zu berechnen.
Testen Sie Konfigurationsgeneratoren
Vergleichen Sie erzeugte Richtlinien in automatischen Prüfungen mit deterministischen, begrenzten Plänen.
Häufige Fragen
Welche Zeiteinheit verwendet der Rechner?
Jede einheitlich verwendete Einheit ist möglich. Liegt base_delay in Millisekunden vor, gilt das auch für alle Verzögerungen und max_delay.
Umfasst die Versuchszahl die ursprüngliche Anfrage?
Nein. Sie zählt nur Wiederholungen nach der ersten Anfrage; der Zeitplan enthält genau so viele Einträge.
Gilt das Maximum bereits vor dem ersten erneuten Versuch?
Ja. Jede Verzögerung wird begrenzt, auch die erste; max_delay darf daher kleiner als base_delay sein.
Enthält das Ergebnis eine Zufallsstreuung?
Nein. Es berechnet den deterministischen exponentiellen Plan. Ergänzen Sie die Streuung nach den Regeln Ihres Clients.
Was geschieht nach Erreichen der Obergrenze?
Die Verzögerung bleibt für diesen und alle späteren Einträge des angeforderten Plans bei max_delay.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev2/retry-backoff-schedule \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base_delay":250,"multiplier":2,"max_delay":8000,"attempts":6}'const res = await fetch("https://api.kit.forhosting.com/dev2/retry-backoff-schedule", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base_delay": 250,
"multiplier": 2,
"max_delay": 8000,
"attempts": 6
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/retry-backoff-schedule",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base_delay": 250,
"multiplier": 2,
"max_delay": 8000,
"attempts": 6
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/retry-backoff-schedule", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base_delay":250,"multiplier":2,"max_delay":8000,"attempts":6}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base_delay":250,"multiplier":2,"max_delay":8000,"attempts":6}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/retry-backoff-schedule", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"base_delay": 250,
"multiplier": 2,
"max_delay": 8000,
"attempts": 6
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.retry_backoff_schedule",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_attempts | 1000 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |