backpressure
backpressure bounds a channel’s in-flight work with a semaphore. When every permit is taken, more requests are refused with 503 Service Unavailable immediately — load shedding, not queueing.
Synopsis
{ "backpressure": { "max_concurrent_per_node": 200 } }
Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
max_concurrent_per_node | integer | yes | — | Maximum concurrent requests for this channel on this node. |
The permit is per channel, not per ingress: synchronous requests, queued /async work, Kafka records, and channel_calls all draw from the same semaphore. Each channel’s semaphore is independent, so a spike on one channel does not shed another’s traffic.
Cross-ingress semantics. A Kafka record that cannot get a permit is left uncommitted for redelivery rather than shed. The transport can wait; an HTTP caller cannot be told to.
The semaphore is per process, as the name states: N replicas admit up to N × max_concurrent_per_node in flight in total.
Related
- Timeouts, retries and circuit breakers: load shedding among the other controls.
- Configure a channel: adding a guard in practice.
- Deploy a cluster: why the permit is per node.
- Channel configuration: every key, with its page.
Last verified 14 September 2026