Konfiguration
# policy.yaml
rate_limits:
# Globales Standard-Limit
default:
queries_per_second: 100
queries_per_minute: 1000
burst: 20 # Erlaubt kurze Bursts
# Benutzer-spezifische Limits
per_user:
app_user:
queries_per_second: 50
queries_per_minute: 500
batch_user:
queries_per_second: 200 # Höher für Batch-Verarbeitung
queries_per_minute: 5000
# Abfrage-spezifische Limits
per_query:
"expensive_report":
queries_per_minute: 10 # Teure Abfragen begrenzen
RATE-001PASS
Normale Abfragerate
Innerhalb des Limits (10 Abfragen/Sek.)
for i in {1..10}; do
psql -c "SELECT * FROM users WHERE id = $i" &
done
# Alle Abfragen werden verarbeitet
Normale Abfrageraten innerhalb der konfigurierten Limits werden ohne Verzögerung verarbeitet.
RATE-002BLOCKED
Rate-Limit überschritten
Erwartete Antwort (nach 50 Abfragen/Sek.)
ERROR: Rate-Limit überschritten
DETAIL: Benutzer 'app_user' hat 50 Abfragen/Sekunde überschritten.
HINT: Warten Sie, bevor Sie weitere Abfragen senden, oder kontaktieren Sie den Administrator.
Header:
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1706965432
Bei Überschreitung des Rate-Limits werden Abfragen temporär blockiert. Die Antwort enthält Header mit Limit-Informationen.
RATE-003PASS
Burst-Handling
Kurze Bursts bis zur konfigurierten Burst-Größe werden toleriert. Das ALG verwendet einen Token-Bucket-Algorithmus, der kurzzeitige Lastspitzen erlaubt, aber anhaltende Überlast verhindert.