Was ist Rate Limiting? Ein verständlicher Leitfaden für App-Entwickler
Rate Limiting ist eine Regel, die begrenzt, wie viele Anfragen jemand in einem bestimmten Zeitraum an ein System stellen darf – zum Beispiel 5 Anmeldeversuche pro Minute oder 100 API-Aufrufe pro Stunde. Ist das Limit erreicht, werden weitere Anfragen abgelehnt (meist mit dem Fehlercode 429 Too Many Requests), bis das Zeitfenster zurückgesetzt ist. Es schützt Apps vor Missbrauch, verhindert, dass ein einzelner Vielnutzer alles für alle verlangsamt, und stoppt außer Kontrolle geratene Kosten.
Rate Limiting begegnet dir auf zwei Seiten: Dienste, die du aufrufst, begrenzen dich, und deine eigene App sollte ihre Nutzer begrenzen.
Warum Rate Limiting beim Bauen mit KI wichtig ist
Mit KI gebaute Apps greifen oft auf kostenpflichtige Dienste zu – KI-Modelle, E-Mail, SMS, Karten –, und jeder Aufruf kostet Geld. Rate Limiting ist deshalb sowohl eine Sicherheits- als auch eine Budgetfunktion.
- Kostenkontrolle. Hat deine App ein Feld „KI fragen“ ohne Limit, kann ein Bot über Nacht Tausende Anfragen senden. Du bezahlst für jede einzelne.
- Sicherheit. Ohne Limit am Anmeldeformular kann ein Angreifer Tausende Passwörter für ein Konto ausprobieren. Ein Limit von wenigen Versuchen pro Minute macht das unpraktisch.
- Online bleiben. Ein fehlerhaftes Skript – manchmal dein eigener Code in einer Endlosschleife – kann die Datenbank überlasten und die App lahmlegen.
- Die Limits anderer Dienste respektieren. Ruft deine App einen fremden API zu oft auf, bekommst du die 429-Fehler, und Funktionen brechen für deine Nutzer.
KI-Builder bauen, was du verlangst. Erwähnst du keine Limits, fehlen sie oft.
Ein Alltagsvergleich
Denk an die kostenlose Nachfüll-Regel eines Cafés: „Ein kostenloses Nachfüllen pro Gast und Besuch.“
- Sie hindert niemanden daran, Kaffee zu genießen.
- Sie hindert eine Person daran, den ganzen Tag am Tresen zu stehen und eine Thermoskanne für das ganze Büro nachzufüllen.
- Fragt jemand nach einem vierten Nachschlag, sagt die Bedienung freundlich „Im Moment nicht“ – das ist die
429.
Ein gutes Rate Limit fällt normalen Kunden nicht auf und wird nur bei jemandem bemerkt, der etwas Ungewöhnliches tut.
So funktioniert Rate Limiting
Ein Rate Limiter braucht drei Angaben:
| Teil | Frage, die er beantwortet | Beispiele |
|---|---|---|
| Wer | Wessen Anfragen werden gezählt? | Pro Nutzerkonto, pro IP-Adresse, pro API-Schlüssel |
| Wie viele | Wie hoch ist das Limit? | 5, 60, 1.000 Anfragen |
| Pro welcher Zeit | Über welchen Zeitraum? | Pro Sekunde, Minute, Stunde, Tag |
Kommt eine Anfrage an, prüft die App den Zähler für dieses „Wer“. Unter dem Limit: Die Anfrage geht durch, und der Zähler steigt. Über dem Limit: Die Anfrage wird abgelehnt.
Es gibt einige gängige Zählverfahren:
| Methode | Funktionsweise | Abwägung |
|---|---|---|
| Festes Fenster | Der Zähler wird nach der Uhr zurückgesetzt – z. B. jede Minute zur vollen Minute | Einfach, erlaubt aber einen Schwall an der Grenze zweier Fenster |
| Gleitendes Fenster | Betrachtet die letzten 60 Sekunden ab jetzt | Gleichmäßiger, etwas aufwendiger zu berechnen |
| Token-Bucket | Jeder Nutzer hat einen Eimer, der gleichmäßig nachgefüllt wird; jede Anfrage verbraucht einen Token | Erlaubt kurze Spitzen, während der Durchschnitt stabil bleibt |
Die Zähler müssen schnell und gemeinsam nutzbar gespeichert werden. Auf einem einzelnen kleinen Server reicht der Arbeitsspeicher. Läuft eine App auf mehreren Rechnern, liegt der Zähler meist in einem gemeinsamen Speicher wie Redis oder der Datenbank – sonst zählt jede Maschine für sich, und das eigentliche Limit wird ein Mehrfaches höher.
Wie eine begrenzte Antwort aussieht
Überschreitet eine Anfrage das Limit, antwortet eine gut gebaute API mit:
- Statuscode
429 Too Many Requests. - Oft einem
Retry-After-Header, der angibt, wie viele Sekunden du warten sollst. - Manchmal Headern, die dein Limit und die verbleibenden Anfragen in diesem Fenster anzeigen (die Namen unterscheiden sich je nach Anbieter).
Deine App sollte auf eine 429 reagieren, indem sie wartet und später erneut versucht – idealerweise mit exponentiellem Backoff: Man wartet nach jedem fehlgeschlagenen Versuch etwas länger (1 Sekunde, dann 2, dann 4), statt den Dienst mit Anfragen zu bombardieren.
Ein Beispiel: ein KI-Schreibassistent
Angenommen, du hast eine App gebaut, in der Nutzer Text einfügen und eine KI-Umformulierung erhalten.
Ohne Limits: Jemand schreibt ein Skript, das über Nacht 20.000 Anfragen sendet. Deine Rechnung beim KI-Anbieter explodiert, und dein Konto stößt auf das eigene Limit des Anbieters, sodass echte Nutzer den ganzen Vormittag Fehler sehen.
Mit sinnvollen Limits:
- Pro angemeldetem Nutzer: 30 Umformulierungen pro Stunde im kostenlosen Tarif, 300 im bezahlten. Über dem Limit sieht der Nutzer: „Du hast das Stundenlimit erreicht. Versuch es in 12 Minuten erneut oder upgrade.“
- Pro IP-Adresse am Anmeldeformular: 5 Registrierungen pro Stunde, damit Bots nicht Tausende kostenlose Konten anlegen, um das Limit pro Nutzer zu umgehen.
- Ein Ausgabenlimit im Dashboard deines KI-Anbieters als letzte Verteidigungslinie, falls alles andere versagt.
- Der Umgang mit Limits des Anbieters: Gibt der KI-Anbieter eine 429 zurück, wartet dein Server und versucht es ein- oder zweimal erneut. Danach erscheint eine freundliche Meldung wie „Gerade ausgelastet, bitte versuche es noch einmal“.
Die Limits werden auf dem Server geprüft. Ein Limit, das nur im Browser existiert – etwa ein deaktivierter Button nach 30 Klicks –, lässt sich von jedem umgehen, der deine API direkt aufruft.
Wichtige Begriffe
| Begriff | Bedeutung |
|---|---|
| Rate Limit | Die maximal erlaubte Anzahl von Anfragen in einem Zeitfenster. |
| Kontingent (Quota) | Ein größeres Budget, oft pro Tag oder Monat, manchmal an einen bezahlten Tarif gebunden. |
| 429 | Der HTTP-Statuscode für „zu viele Anfragen“. |
| Retry-After | Ein Antwort-Header, der angibt, wie lange man vor dem nächsten Versuch warten soll. |
| Throttling | Verlangsamen oder Ablehnen von Anfragen über einem Limit. Wird oft synonym verwendet. |
| Exponentieller Backoff | Zwischen Wiederholungen immer längere Wartezeiten. |
| Burst | Eine kurze Spitze vieler Anfragen auf einmal. |
| Brute-Force-Angriff | Das Ausprobieren riesiger Mengen an Passwörtern oder Codes, bis einer passt. |
Häufige Irrtümer
- „Rate Limiting ist nur für große Apps.“ Auch kleine Apps sind Ziele, weil Bots das ganze Internet nach offenen Formularen und KI-Endpunkten absuchen. Die Kosten von Missbrauch hängen nicht von deiner Größe ab.
- „Den Button zu verstecken reicht.“ Limits im Browser sind eine Höflichkeit, kein Schutz. Echte Limits müssen auf dem Server durchgesetzt werden.
- „Limits pro IP-Adresse sind immer fair.“ Viele Menschen teilen sich eine IP-Adresse – ein Büro, eine Schule, ein Mobilfunknetz. Limits pro Nutzer sind fairer, sobald Menschen angemeldet sind.
- „Eine 429 heißt, der Dienst ist kaputt.“ Sie heißt, dass du ihn zu oft aufrufst. Prüfe deinen Code auf Schleifen und speichere Ergebnisse zwischen, die sich selten ändern – siehe was Caching ist.
- „Rate Limiting ersetzt ein Ausgabenlimit.“ Nutze beides. Limits in deiner App können Fehler haben; das Ausgabenlimit des Anbieters ist dein Sicherheitsnetz.
Was du deinen KI-Builder fragen kannst
- „Füge serverseitiges Rate Limiting für Anmeldung, Registrierung, Passwort-Zurücksetzen und den KI-Endpunkt hinzu. Schlage sinnvolle Limits vor.“
- „Begrenze jeden angemeldeten Nutzer auf [N] KI-Anfragen pro Stunde und zeige eine klare Meldung mit der Wartezeit, wenn das Limit erreicht ist.“
- „Wenn ein externer API eine 429 zurückgibt, wiederhole den Aufruf mit exponentiellem Backoff bis zu dreimal und zeige dann eine freundliche Fehlermeldung.“
- „Wo werden die Zähler für die Limits gespeichert? Funktionieren sie noch, wenn die App auf mehreren Rechnern läuft?“
- „Protokolliere jedes Mal, wenn ein Nutzer oder eine IP-Adresse ein Limit erreicht, damit ich Missbrauch erkenne.“
- „Welche externen Dienste ruft diese App auf, und welche Limits haben sie?“
Rate Limiting in Mythex
Die Doku von Mythex ist bei KI-Funktionen direkt: Rate Limits, Sicherheits- und Kostenkontrollen in den Apps, die du baust, liegen in deiner Verantwortung – siehe Eine KI-App bauen. Bitte den Agenten, Limits in derselben Nachricht hinzuzufügen, in der du die Funktion verlangst. Im Pro-Tarif kann ein veröffentlichter Dienst bei hoher Last auf bis zu drei Maschinen laufen (siehe Hosting-Limits). Verlange deshalb Zähler, die in der Datenbank liegen und nicht im Arbeitsspeicher eines einzelnen Servers.
Weiterführend: was eine API ist, wie du LLM-APIs nutzt und die Sicherheitscheckliste für mit KI gebaute Apps.
Fragen
Was ist Rate Limiting einfach erklärt?
Rate Limiting ist eine Regel, die begrenzt, wie viele Anfragen ein Nutzer, ein Gerät oder eine App in einem bestimmten Zeitraum stellen darf – zum Beispiel 5 Anmeldeversuche pro Minute oder 100 API-Aufrufe pro Stunde. Anfragen über dem Limit werden abgelehnt, bis das Zeitfenster zurückgesetzt ist.
Was bedeutet der Fehler 429 Too Many Requests?
Der HTTP-Statuscode 429 bedeutet, dass du in zu kurzer Zeit zu viele Anfragen gesendet hast und ein Limit erreicht wurde. Die Antwort enthält oft einen Retry-After-Header, der angibt, wie lange du warten sollst. Die Lösung: langsamer werden, nach einer Pause erneut versuchen oder seltener beim Dienst anfragen.
Warum braucht meine KI-gestützte App Rate Limiting?
Jede KI-Anfrage kostet dich Geld in Form von Tokens. Ohne Limit kann ein Nutzer oder ein Bot Tausende Anfragen senden, eine hohe Rechnung verursachen oder dein Kontingent beim Anbieter aufbrauchen und die Funktion für alle lahmlegen. Limits pro Nutzer halten die Kosten planbar.
Ist Rate Limiting dasselbe wie Throttling?
Die beiden sind eng verwandt und werden oft gleichbedeutend verwendet. Rate Limiting bedeutet meist, Anfragen über dem Limit abzulehnen, während Throttling auch heißen kann, sie zu verlangsamen oder in eine Warteschlange zu stellen, statt sie sofort abzulehnen.
Stoppt Rate Limiting DDoS-Angriffe?
Es hilft gegen kleine Fluten und Missbrauch durch einzelne Nutzer oder IP-Adressen, aber ein großer verteilter Angriff kommt von vielen Adressen gleichzeitig. Der Schutz davor erfolgt meist auf Netzwerk- oder CDN-Ebene, bevor der Datenverkehr deine App erreicht.