RATE-001PASS
Normal Query Rate
Within Limits (10 queries/sec)
for i in {1..10}; do
psql -c "SELECT * FROM users WHERE id = $i" &
done
# All queries are processedNormal query rates within configured limits are processed without delay.
Protection against denial-of-service attacks and resource exhaustion through query throttling.
# policy.yaml
rate_limits:
# Global default limit
default:
queries_per_second: 100
queries_per_minute: 1000
burst: 20 # Allow short bursts
# Per-user limits
per_user:
app_user:
queries_per_second: 50
queries_per_minute: 500
batch_user:
queries_per_second: 200 # Higher for batch processing
queries_per_minute: 5000
# Per-query limits
per_query:
"expensive_report":
queries_per_minute: 10 # Limit expensive queriesfor i in {1..10}; do
psql -c "SELECT * FROM users WHERE id = $i" &
done
# All queries are processedNormal query rates within configured limits are processed without delay.
ERROR: Rate limit exceeded
DETAIL: User 'app_user' has exceeded 50 queries/second.
HINT: Wait before sending more queries or contact administrator.
Headers:
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1706965432When the rate limit is exceeded, queries are temporarily blocked. The response includes headers with limit information for client-side handling.
Short bursts up to the configured burst size are tolerated. The ALG uses a token bucket algorithm that allows brief traffic spikes while preventing sustained overload.
ERROR: Query-specific rate limit exceeded
DETAIL: Query 'expensive_report' limited to 10/minute.
HINT: This query is resource-intensive. Space out requests or use batch APIs.Expensive queries (reports, aggregations) can have lower limits than general queries to protect database resources.