Capability

Pool Connection Limits

Encode your backend's real capacity at the ADC layer — manage connection, rate, SSL and memory limits from a single profile.

TR7 Pool Connection Limits define how much traffic a service pool can safely carry across 8 independent axes. Concurrent connections, new connection rate, session rate, SSL connections, SSL handshake rate, buffer size and retry behaviour are all governed within the same limit profile. This approach does not rely on a single "maximum connections" field — because 20,000 idle connections and 2,000 new TLS handshakes per second do not carry the same cost. TR7 evaluates plain and SSL/TLS load separately, giving the backend more precise protection against CPU, memory and connection storms. A limit profile is defined once and can be attached to multiple pools. Separate profiles can be created for production, staging, campaign periods, public web, internal APIs or per-tenant requirements. Updating a profile centrally updates the capacity behaviour of every pool bound to it. The result: TR7 turns a connection limit from a bare number into an operational protection profile that explicitly encodes backend capacity, TLS cost, queue behaviour and memory budget at the ADC layer.

8
Independent limit axes in a single profile: connections, rate, session, SSL, buffer, retry
1M
Maximum concurrent connections configurable per pool (maxConn upper bound)
2K
Default SSL handshake rate per second (maxSslRate) — protects backend CPU

A single maximum-connection value is not enough to protect modern application capacity.

In most load-balancing designs the connection limit is treated as a single field: how many connections can be open at once? That model is incomplete. Ten thousand pending keep-alive connections may be cheap, while 1,000 simultaneous new SSL handshakes can rapidly exhaust backend CPU. The same number produces entirely different cost depending on the traffic type.

Connection count and connection rate are also not the same thing. "Up to 20,000 connections can be open at once" is a capacity ceiling; "up to 10,000 new connections can be opened per second" is burst and connection-storm control. Systems that do not separate these two values either unnecessarily constrain legitimate user traffic or fail to protect the backend from a sudden attack wave.

TLS traffic must be considered separately. SSL/TLS handshake operations are CPU-expensive, and when managed under the same limit as plain HTTP connections the true load becomes invisible. Especially during public web, API gateway and campaign-period traffic, independently capping the handshake rate keeps backend CPU consumption under control.

Queue behaviour is also often opaque. When a limit is exceeded, is the connection silently dropped, does it time out, does it wait in a queue, or does the client get a clean 503? Without visibility into that behaviour, root cause is not clear at incident time — users see a timeout, and the operations team identifies the real reason too late.

TR7 Pool Connection Limits protect backend services through predictable capacity management rather than silent overload, by independently controlling total connections, connection rate, session rate, SSL load, buffer budget and retry behaviour.

Our approach

TR7 manages pool capacity not with a single field but with a profile structure built across connection, rate, SSL, retry and buffer axes.

An 8-dimensional limit profile encodes capacity in detail

A single profile defines maxConn, maxRetries, rateLimitSessions, maxConnRate, maxSessRate, maxSslConn, maxSslRate and maxBufferSize. This lets the backend's connection, rate, TLS and memory limits be tuned independently from one another.

SSL connections are capped separately from plain traffic

Because TLS handshakes are CPU-expensive, TR7 manages maxSslConn and maxSslRate as distinct values. This separation helps prevent a handshake storm from exhausting the backend even when the total connection count appears low.

Named profiles are shared across multiple pools

A limit profile is defined with a unique name and can be attached to different service pools. Production, staging, canary or per-tenant capacity policies can all be managed with a single profile model.

Retry and buffer settings define back-pressure behaviour

maxRetries defines how many times a connection to the backend is retried on transient failure. maxBufferSize controls per-connection memory consumption in slow-client or slow-backend scenarios.

Capabilities

TR7 Pool Connection Limits constrain backend services in a controlled way against connection storms, TLS load, session bursts and memory pressure.

maxConn caps total concurrent connections at pool level

maxConn sets the ceiling for simultaneously open connections per pool, with a default of 20,000 and an upper bound of 1,000,000. This value encodes at the ADC layer exactly how many connections the backend can carry at once. When the limit is reached, new connections are subject to queue behaviour or a rejection flow.

maxConnRate controls new connection storms per second

maxConnRate limits the number of new TCP connections that can be opened per second, defaulting to 10,000. Unlike total connections, this field governs the rate at which connections are opened. It helps prevent the backend from being overwhelmed in a single burst during connection storms, aggressive scanning or misbehaving load tests. It is a critical burst-protection control for public-facing services.

maxSessRate tracks new HTTP session intensity separately

maxSessRate applies a per-second ceiling to new sessions, defaulting to 10,000. Reusing keep-alive connections and repeatedly opening new sessions carry different costs. This distinction is useful particularly against cookie-based session-opening storms or bot behaviour that exhausts application sessions. Traffic is constrained not only by connection count but also by the rate at which sessions are produced.

rateLimitSessions caps new connection slots at per-second granularity

rateLimitSessions provides a separate per-second control for new connection slot allocation, defaulting to 5,000. It is used to manage new connection acceptance behaviour with finer granularity. It helps the pool advance at a controlled capacity during sudden connection bursts. The relationship between backend capacity and ADC acceptance rate is tuned more precisely.

maxSslConn separates active TLS connections from plain connections

maxSslConn defines a separate concurrent-connection limit for active SSL/TLS connections, defaulting to 5,000. TLS connections must be treated differently from plain connections because of CPU, memory and cryptographic processing cost. This limit more accurately reflects the backend's real capacity on the TLS side. It simplifies SSL capacity planning, especially for public web and API traffic.

maxSslRate keeps per-second TLS handshake load under control

maxSslRate caps the number of SSL/TLS handshakes that can be initiated per second, defaulting to 2,000. Handshake operations can carry high cost depending on RSA or ECDSA usage, key size and CPU capacity. This field helps prevent TLS handshake storms from exhausting backend CPU. It provides more meaningful protection than a plain-connection limit during DDoS or aggressive bot traffic.

maxBufferSize limits per-connection memory consumption

maxBufferSize sets the buffer size available per connection in KB, defaulting to 128 KB with a range of 16–256 KB. Memory consumption is controlled by this value for slow clients, slow readers or requests carrying large bodies. The field provides operational protection against Slowloris-like behaviour and memory pressure.

maxRetries configures retry behaviour on transient connection failures

maxRetries defines how many times the backend connection is retried on failure, defaulting to 3 with an upper bound of 1,000. A lower value provides fast error return; a higher value can improve resilience during transient network blips. However, excessive retries can add load to an already struggling backend and must be chosen carefully.

Profile-pool binding makes capacity policy centrally manageable

A limit profile is defined with a unique name and can be assigned to multiple pools. Editing a single profile changes the connection behaviour of all pools bound to it. This model reduces the need to configure each service pool individually. Production, test, campaign or per-tenant profiles can each be managed independently.

Queue behaviour produces visible errors rather than silent drops

When a limit is exceeded, connections can wait in a queue up to a defined depth. When the queue fills, the client receives a clear error rather than a silent timeout. Operations teams can identify when a capacity ceiling is reached more quickly through explicit error signals such as 503. The problem becomes a measurable capacity event rather than an ambiguous user-side wait.

Operational depth

Pool connection limits must be planned together with default values, zero-disable behaviour, global/frontend/pool generation and memory budget.

01

Default profile values

The default model uses maxConn 20K, maxRetries 3, rateLimitSessions 5K, maxConnRate 10K, maxSessRate 10K, maxSslConn 5K, maxSslRate 2K and maxBufferSize 128 KB. These are starting points. Real tuning must be done according to backend capacity, TLS cost and traffic pattern.

02

Disabling with zero

All limit fields accept 0 as their minimum value. This can be used for scenarios where a given control should be disabled or behave as unlimited. In production, however, a value of 0 should be set deliberately — otherwise the expected protection is removed.

03

High-density upper bound

maxConn can be set as high as 1,000,000. This provides flexibility for very high-density keep-alive or connection pool scenarios. Even so, real capacity is not determined by this number alone — file descriptors, memory, CPU, TLS cost and backend limits must all be accounted for together.

04

Buffer memory budget

maxBufferSize directly affects per-connection memory consumption. A lower value increases memory protection, but may introduce compatibility issues for applications with large bodies or slow streams. The 16–256 KB range allows a controlled trade-off between security and application needs.

05

Multi-level limit generation

Profile values are reflected across global, frontend and pool-level connection behaviour. This separation allows the overall device capacity and the capacity of a specific pool to be managed independently. In large deployments, total ADC capacity and single-pool capacity must not be conflated.

06

SSL bind limits

SSL connection limits are linked to TLS bind behaviour. Values such as maxSslConn enable TLS connections to be managed separately from plain connections. This is important for protecting CPU budget in public-facing services where TLS traffic is heavy.

When to use it

Temporary capacity profile on e-commerce campaign days

An e-commerce platform running a 20K-connection profile on normal days can switch to a higher-connection profile during a campaign period. The same pool is kept; only the limit profile is changed to prepare for campaign traffic.

SSL capacity separation in bank internal API traffic

A bank can allow a high total connection count on its internal API pool while keeping the SSL connection and handshake rate narrower. This structure controls TLS cost and protects backend CPU from sudden handshake load.

Connection storm protection on public web services

On an internet-facing web application, bot scanning or misbehaving clients can open large numbers of connections in a short time. TR7 limits the rate of new connections through maxConnRate and rateLimitSessions, protecting the backend from a connection storm.

Limiting memory consumption in slow-client traffic

Slow-reading clients can increase per-connection buffer usage. TR7 constrains the memory consumption of this traffic with a lower maxBufferSize profile, allowing other users to continue receiving service.

Frequently asked questions

What is the difference between maxConn and maxConnRate?
maxConn is a capacity ceiling — the maximum number of connections that can be simultaneously open on a pool. maxConnRate is a rate control — the maximum number of new TCP connections that can be opened per second. The first protects against overload from accumulated connections; the second protects against connection storms and burst attacks.
Why are SSL connection limits defined separately from plain connection limits?
TLS handshake operations are CPU-expensive compared to plain connections. Managing them under the same limit as plain HTTP connections makes the real load invisible. maxSslConn and maxSslRate give independent control over the TLS side, which is particularly important for public web and API traffic where CPU budget is constrained.
What happens when a connection limit is exceeded?
When a limit is exceeded, new connections can wait in a queue up to a configurable depth. If the queue fills, the client receives a clear error signal rather than a silent drop. This makes capacity events visible to the operations team through metrics and explicit error signals such as 503.
Can a single limit profile be used on multiple pools?
Yes. A profile is defined with a unique name and can be attached to as many pools as needed. Updating the profile centrally applies the change to all pools bound to it. This model reduces manual configuration effort across large deployments with many service pools.
What does setting a limit field to 0 mean?
A value of 0 disables the corresponding control or makes it behave as unlimited. This is useful in specific scenarios where a limit is intentionally not applied. In production environments, 0 should be set deliberately — otherwise protection that was assumed to be active is silently removed.
How should maxBufferSize be tuned for large request bodies?
maxBufferSize controls per-connection buffer memory and ranges from 16 KB to 256 KB, defaulting to 128 KB. Applications with large request bodies, such as file uploads or heavy POST payloads, may need a higher value. Applications that require protection against slow-client memory pressure may benefit from a lower value. The right setting depends on the specific traffic pattern and backend behaviour.

Protect backend capacity with precision — not a single number

8-axis connection limit profiles for connection storms, TLS load and slow-client memory pressure. Let us walk through a live setup on your own services.