Deciding a server is dead
How production systems decide a peer is dead (health checks, probes, gossip failure detectors), and why the verdict-and-action loop keeps causing the outage it exists to prevent.
Reconstructs the failure-detection plane behind health checks from six published incidents, five production codebases, four papers and the Kubernetes and gRPC design records. Shows that mature systems independently converged on one guardrail, a cap on what the detector may do before its verdicts are trusted, and gives the reader the decision table, defaults and failure classes to apply that rule to their own fleet.
At least five teams independently invented the same guardrail under five names (self-preservation, panic threshold, panic mode, fail open, velocity control), and the most widely deployed health checker, the kubelet, still has none; the 2018 issue proposing one is frozen.
What you get out of it
- Cap what the failure detector may do before you trust what it says: Envoy ejects at most 10% and ignores health below 50% availability, Eureka stops expiries below 85% renewals, AWS is adding NLB velocity control after October 2025.
- Correlated false positives, not missed deaths, dominate the published incident record; no postmortem in this corpus blames an undetected dead server.
- A check whose failure gates a kill must never touch dependencies: the deep-check cascade (Encore, k8s issue #66230, Breck) removes the whole fleet in one probe window.
- A correct verdict can still be the outage when the action is irreversible: GitHub's 43-second partition triggered an automated failover that took 24 hours to unwind.
- The detector should suspect itself: Lifeguard's self-health scoring cut false dead verdicts by more than 50x, and the AWS October 2025 flapping was a degraded checker, not degraded targets.
Scope
Why this, now. AWS's October 2025 us-east-1 postmortem made the pattern current again: its NLB remediation adds in 2025 the same removal budget Envoy has shipped as a default for years and Eureka has carried since 2012.
What it does not cover. Human-facing monitoring and alerting, consensus-protocol correctness, and client-side reaction to failure (retries, backoff, metastable overload), which has its own dig in this collection.
Other field guides
The rule was already written down
A field guide to the machinery between an outage and the next design decision, reconstructed from six first-party incident reports (Cloudflare 2019 a…
34 sources · 24 organisations · 6 postmortemsWhen owning hardware wins, and when it owns you
Dropbox banked an SEC-audited $74.6M by leaving S3; 37signals cut its bill from $3.2M to $1.3M on the way to deleting its AWS account; and in the sam…
29 sources · 25 organisations · 3 postmortemsZone-local traffic and the cross-zone bill
Spreading across three availability zones is billed twice: in standing idle capacity, and at a cent per gigabyte for every crossing. This guide recon…
34 sources · 21 organisations · 4 postmortems