Warmup Gates
Member Warm-up Gates
When a new member is added to a pool or a disabled member is re-enabled, it immediately enters the live DNS rotation. For backends that take time to initialise — JVM warm-up, cache population, connection pool priming — this can result in the first few seconds of traffic hitting an endpoint that is not yet ready to serve at full capacity.
Warm-up gates hold a member back from DNS responses until it has accumulated a configurable number of consecutive passing health checks, giving the backend time to initialise before it receives production traffic.
How it works
- Set
warmupThresholdon a member (e.g.3). - When the member is (re-)enabled or first created, its consecutive-pass counter resets to zero.
- On each health check probe cycle, if the probe passes the counter increments; if it fails the counter resets to zero.
- While
consecutivePasses < warmupThreshold, the member is excluded from DNS candidate selection — it will not appear in any DNS response even if it passes individual health checks. - Once the member reaches
warmupThresholdconsecutive passes it exits warm-up and enters normal rotation.
The feature is disabled by default
(warmupThreshold = 0). Members with no health check
configured skip the gate and enter rotation immediately regardless of
threshold.
Configuration
REST API
Set on create or update:
POST /api/v1/pools/{poolId}/members
{
"name": "web-03",
"ipAddress": "10.0.0.3",
"port": 80,
"weight": 100,
"warmupThreshold": 3
}PUT /api/v1/members/{id}
{
"warmupThreshold": 5
}The warmupThreshold field is returned in all member
responses.
gslbctl
Add a member with a threshold:
# warmupThreshold is set via the API; gslbctl displays it in member listings
gslbctl members list --pool <pool-id>
# → ID NAME IP PORT W PRI STATUS REGION warmup:3Full update (including threshold) is available via the WebUI or API.
WebUI — Topology editor
Open the member slide-over (click any member node),
scroll to Warm-up threshold, and set the desired value.
A value of 0 disables the gate.
While a member is warming, its node shows an amber "warming X/N" label instead of the usual health state label, where X is the current consecutive-pass count and N is the threshold.
Observability
Member status endpoint
GET /api/v1/members/{id}/status includes three
additional fields when warmupThreshold > 0:
{
"memberId": "...",
"healthy": true,
"warming": true,
"warmupPasses": 2,
"warmupThreshold": 5
}warming—truewhile the member is in the warm-up gatewarmupPasses— consecutive passing probes so farwarmupThreshold— the configured target
Pool status endpoint
GET /api/v1/pools/{id}/status includes the same three
fields in each member's health entry:
{
"poolId": "...",
"members": {
"10.0.0.3": {
"healthy": true,
"score": 1.0,
"warming": true,
"warmupPasses": 2,
"warmupThreshold": 5
}
}
}Topology canvas
The member node label transitions through three states:
| Label | Meaning |
|---|---|
warming 2/5 (amber) |
In warm-up gate; 2 of 5 passes accumulated |
healthy (green) |
Warmed up and in active rotation |
unhealthy (red) |
Failing health checks |
Relationship to other health features
| Feature | Interaction |
|---|---|
| Health checks | Warm-up uses raw probe results, not the smoothed score. Each individual probe pass increments the counter; a single failure resets it to zero. |
| Score window | Score smoothing affects the healthy flag but not the
warm-up counter. A member can be in warm-up while simultaneously being
considered "healthy" by the score window. |
| Min healthy | Warming members do not count toward minHealthy. If
adding a warm-up member would bring the healthy count above the
threshold, traffic does not shift until the member exits warm-up. |
| Composite health | Warming members are fully excluded from candidate selection — the same as disabled members — until the gate is passed. |
Choosing a threshold
The threshold is in probe cycles, not seconds. Multiply by the health check interval to get wall-clock time.
| Health check interval | Threshold | Time to enter rotation |
|---|---|---|
| 10s | 3 | ~30s |
| 10s | 5 | ~50s |
| 5s | 6 | ~30s |
| 30s | 2 | ~60s |
For most JVM applications, 3–5 probes at a 10s interval (30–50 seconds) is sufficient. For cold-start containers, consider a longer interval combined with a low threshold.
Re-enable behaviour
When a member is re-enabled after being disabled, its consecutive-pass counter resets to zero and the warm-up gate restarts. This is the intended behaviour — a member returning from maintenance should prove stability before receiving traffic, just like a new member.
When a member's weight, priority, region, or name is
changed without toggling enabled, the counter is preserved
and warm-up is not restarted.