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

  1. Set warmupThreshold on a member (e.g. 3).
  2. When the member is (re-)enabled or first created, its consecutive-pass counter resets to zero.
  3. On each health check probe cycle, if the probe passes the counter increments; if it fails the counter resets to zero.
  4. 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.
  5. Once the member reaches warmupThreshold consecutive 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:3

Full 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
}
  • warmingtrue while the member is in the warm-up gate
  • warmupPasses — consecutive passing probes so far
  • warmupThreshold — 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.


Was this article helpful?
© 2026