Skip to content
Calcrivo

OpenShift Route Capacity Calculator

Size the OpenShift ingress router: routes and connections per router pod, TLS handshake rate and connection-limit utilisation.

Inputs

routes
pods
req/s
seconds

Keep-alive holds a connection open long after the request finishes.

connections
%
%

Resumed sessions skip the expensive full handshake.

Connections per Router Pod

4,000connections

Total Requests per Second

2,000req/s

Routes per Router Pod

400routes

Connection Limit Used

20.0%

Full TLS Handshakes per Second

320.0handshakes/s

Router Sizing Verdict

Comfortably within router capacity

Step by step

  1. Values used

    Routes exposed = 400 routes; Router pods (replicas) = 2 pods; Requests per second per route = 5 req/s; Average connection lifetime = 4 seconds; ROUTER_MAX_CONNECTIONS per pod = 20,000 connections; Routes terminating TLS at the router = 80 %; TLS sessions resumed = 60 %

  2. OpenShift Route Capacity

    concurrent connections = routes × requests per second × connection lifetime; per pod that is divided by the replica count and compared with ROUTER_MAX_CONNECTIONS.

  3. Connections per Router Pod

    = 4,000 connections

  4. Total Requests per Second

    = 2,000 req/s

  5. Routes per Router Pod

    = 400 routes

  6. Connection Limit Used

    = 20.0

  7. Full TLS Handshakes per Second

    = 320.0 handshakes/s

  8. Router Sizing Verdict

    = Comfortably within router capacity

How it works

Router load is about concurrency, not throughput: Little's law turns a request rate and a connection lifetime into the number of sockets HAProxy holds open, and that is what the maxconn limit governs. TLS is a second, independent constraint because only non-resumed handshakes cost an asymmetric crypto operation. Every route in the cluster shares the same router pods, so one team's traffic growth exhausts everyone's ingress — and above roughly a thousand routes the HAProxy configuration reload itself becomes the limiting factor.

Formula

OpenShift Route Capacity

concurrent connections = routes × requests per second × connection lifetime; per pod that is divided by the replica count and compared with ROUTER_MAX_CONNECTIONS.

connection lifetime
How long keep-alive holds a socket open, not the request duration
ROUTER_MAX_CONNECTIONS
HAProxy maxconn per router pod
full handshake
TLS negotiation that is not resumed, costing an RSA or ECDSA operation

Frequently Asked Questions

How is OpenShift Route Capacity calculated?

concurrent connections = routes × requests per second × connection lifetime; per pod that is divided by the replica count and compared with ROUTER_MAX_CONNECTIONS. Router load is about concurrency, not throughput: Little's law turns a request rate and a connection lifetime into the number of sockets HAProxy holds open, and that is what the maxconn limit governs. TLS is a second, independent constraint because only non-resumed handshakes cost an asymmetric crypto operation.

Why does OpenShift Route Capacity matter?

Every route in the cluster shares the same router pods, so one team's traffic growth exhausts everyone's ingress — and above roughly a thousand routes the HAProxy configuration reload itself becomes the limiting factor.

What values do I need to enter?

This calculator takes 7 inputs: Routes exposed, Router pods (replicas), Requests per second per route, Average connection lifetime, ROUTER_MAX_CONNECTIONS per pod, Routes terminating TLS at the router, TLS sessions resumed. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.

Why does route count matter separately from traffic?

Each route becomes HAProxy backend configuration, and a change to any route triggers a reload of the whole configuration. At high route counts those reloads get slow and overlap, which is why the router supports dynamic configuration for backend changes rather than a full reload.

You might also need