Rate Limits Overview
QNSP enforces rate limits at the edge gateway to protect platform stability.
Rate Limits Overview
QNSP enforces rate limits at the edge gateway to protect platform stability.
Default Rate Limit
From apps/edge-gateway/src/config/env.ts:
| Setting | Environment Variable | Default |
|---|---|---|
| Global rate limit | EDGE_RATE_LIMIT_RPS |
5,000 RPS |
How Rate Limiting Works
From apps/edge-gateway/src/routes/proxy.ts:
- Limits are per-tenant, per-route
- Algorithm: Token bucket
- Key format:
tenant:<tenantId>:route:<routeId>
Response Headers
When rate limiting is applied, responses include rate limit headers:
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1703424900
| Header | Description |
|---|---|
X-RateLimit-Limit |
Configured RPS for this route |
X-RateLimit-Remaining |
Tokens remaining in bucket |
X-RateLimit-Reset |
Unix timestamp when bucket refills |
Rate Limited Response
HTTP 429 Too Many Requests:
{
"statusCode": 429,
"error": "TOO_MANY_REQUESTS",
"message": "Rate limit exceeded",
"details": {
"routeId": "<route-id>",
"limit": 50,
"retryAfter": 2
}
}
The Retry-After header indicates seconds to wait before retrying.
Metrics
Rate limit events are tracked via telemetry:
// From edge-gateway/src/routes/proxy.ts
telemetry.metrics.blockedRequestsTotal.add(1, {
tenant_id: effectiveTenantId,
reason: "rate_limit_exceeded",
route_id: matchingRoute.id,
});
Increasing Limits
Contact support for limit increases. See Limit Upgrades.