Ingress Rate limits
This controls how many events Convoy can ingest per second This is configured by setting theCONVOY_INGEST_RATE env var.
This value limits the number of:
- Messages read off message brokers
- Events created via API (direct, dynamic, fan-out, broadcast).
429 (Rate Limit Exceeded) error response for APIs that create events.
Egress Rate Limits
This controls how many events Convoy can send per second. There is no instance wide configuration, instead egress rates are configured per endpoint. (This might change in the future)HTTP API Rate Limits
This controls how requests per second Convoy can process. This includes:- Headless control plane APIs (used for managing project resources).
- Ingress APIs
429 (Rate Limit Exceeded) error response from all APIs.
Requests made to the Convoy instance via the UI don’t count towards rate limits.
Technical Details
Rate limits are stored in Redis and are prefixed byrate:
Validating Rate Limits
To test and ensure your rate limits are adequately configured for your scale:- Configuration Inspection: Check your
convoy.jsonconfig, environment variables (CONVOY_API_RATE_LIMIT,CONVOY_INSTANCE_INGEST_RATE), or Helm values for your cluster limits. By default both are set to 1000. - Load Testing: Use tools like
k6,hey, orvegetato send bursts (>1000 requests/sec) to the Convoy ingest API. The API will respond with anHTTP 429 Too Many Requestsstatus code once the limit is breached. - Metrics: Utilize the exposed Prometheus metrics or traces to observe 429 responses and dropped/throttled events during high throughput times.