Ingress Capacity Calculator
Calculate the maximum requests per second an Ingress controller can serve from its connection pool, requests-per-connection and average latency.
Inputs
Max concurrent connections the ingress controller pool supports.
Average requests served per connection before it's recycled (keep-alive reuse).
Max Ingress Throughput
40,000req/s
Requests/sec per Connection
20.0req/s
Step by step
Requests per second per connection = 1 ÷ latency
1 ÷ 0.05s
= 20.0 req/s
Max RPS = connections × req/s per connection
2000 × 20.0
= 40000 req/s
How it works
An Ingress controller's throughput ceiling is bounded by how many concurrent connections it can hold open and how quickly each connection cycles through requests, which is the inverse of average request latency. This calculator models max RPS as concurrent connections divided by average latency per request — the same connection can serve many sequential requests per second if latency is low, so lowering backend latency raises ingress throughput just as much as adding connection capacity.
Formula
maxRPS = connections × (1 / avgLatency)
- C
- Concurrent connections supported
- L
- Average request latency in seconds
- R_{max}
- Maximum requests per second
Frequently Asked Questions
What limits concurrent connections on an Ingress controller?
Worker process count and worker_connections settings (for NGINX-based controllers), file descriptor limits on the pod, and the controller's own resource requests/limits — scaling the Ingress controller's replicas and per-pod connection limits raises this ceiling.
Why does backend latency affect ingress throughput so much?
Each connection can only serve one request at a time; higher backend latency means each connection completes fewer requests per second, directly capping total throughput even if raw connection count is high.
Should I scale the Ingress controller or the backend first?
Profile first — if backend latency is the bottleneck, scaling the Ingress controller alone won't help; if the Ingress controller pods are CPU/connection-saturated while backends have spare capacity, scale the controller.