Skip to content
EuroVPSEuroVPS

Don't stop at the first fault.

The first fault you find is almost never the only one. Our method for untangling a multi-cause collapse: rank causes by contribution not loudness, read kernel-level primary sources instead of dashboards, peel one fault at a time, and treat any returning symptom as a brand-new diagnosis.

By EuroVPS EngineeringThe engine room

7 min read
In this article 6 sections
TL;DR
  • In a multi-fault collapse, several faults wear the same symptom at once. Fixing the loudest one feels like progress and changes almost nothing.
  • The method: rank causes by contribution, not loudness. Fix in that order. Re-measure at the failed boundary after every single change.
  • When a fix holds and the symptom returns, do not re-apply the fix. Re-diagnose from scratch. Same symptom is not same cause.
  • Recovery has an order too: stop the proximate trigger first, prove state before any destructive move, keep every step reversible.

Your site collapses. Someone finds a plausible fault and fixes it and declares victory. The site stays down, or comes back and re-collapses at the next trigger. The fix stopped at the first fault, and on the worst days there are four more behind it. This is the discipline that does not stop.

Rule one: rank by contribution, not loudness

The loudest symptom is a terrible sorting key. Example: the kernel screams disk I/O contention, but the engine of the cascade is a stalled resolver holding every worker, and the biggest ongoing driver is a session-file storm no first theory included. Rank causes by how much of the collapse they own, and fix in that order.

SORTED BY LOUDNESS
  • Disk I/O contention (the loud symptom)
  • The job everyone suspects
  • The resolver nobody suspects
SORTED BY CONTRIBUTION
  • The resolver: the engine
  • The session storm: the biggest driver
  • The job: real, not the driver

Rule two: read primary sources, not dashboards

Dashboards summarize. Kernels testify. When the layers disagree, the kernel wins. The canonical first pass on any wedged Linux box is the same short list every time, and then one heuristic worth framing: headroom present and the site down means an application or dependency fault, not capacity. A disk at fractions of a percent utilization while workers hang is lock contention, not I/O, no matter what the graph says.

THE FIRST PASS, ON ANY WEDGED BOX
# the canonical first pass on a wedged Linux box
dmesg -T | tail -50          # OOM kills, hung tasks, hardware complaints
journalctl --list-boots      # did this box reboot when you think it did?
last -x reboot | head        # corroborate the reboot story
cat /etc/resolv.conf         # who does this box think answers DNS?
iostat -x 5 3                # is the disk actually busy, or just blamed?
cat /proc/<pid>/stack        # where exactly is that worker stuck?
strace -p <pid> -c -f        # a few seconds: is it even making syscalls?

Ten minutes of primary sources beats an afternoon of dashboard archaeology.

Rule three: peel one fault at a time

One change, then re-measure at the boundary that failed, before touching the next layer. The discipline feels slow and is the fastest thing available, because two simultaneous changes that interact tell you nothing about either. Verification is per-layer: fix the resolver, prove name resolution at the box; clear the storm, prove worker states; then move up.

Rule four: distrust the we-fixed-it moment

When a fix holds and the symptom returns hours later, the reflex is to re-apply the fix harder. Re-measure instead. The question to ask is the simple one: how do you know it is doing I/O? A few seconds of strace that catch zero system calls mean the workers are blocked in the kernel on a lock, not doing I/O at all, and that is how the real driver gets found instead of papered over. When a symptom returns after a genuine fix, it is a different fault wearing the same clothes.

Rules five through seven: recovery has an order too

01

Stop the proximate trigger before touching the cause

If a monitoring poll is what is crashing a cluster, stop the poll first, recover position, remove the cause, and only then apply the planned change to a healthy cluster.

02

Prove state before any destructive move

A volume flagged corrupt gets a read-only integrity check before anyone clears a flag or reaches for a restore. The recovery itself has traps. Know them before you step.

03

Keep every step reversible

Backup before touch. Move aside, don't delete. Reload, don't restart, under load. The panic move that cannot be undone is never the move.

Rule eight: close the hole for everyone

Each new failure pattern becomes a named pre-flight check in the reference build. The method is not only how a bad morning gets untangled. It is how the same morning is kept from repeating anywhere else.

Straight answers

Why does my server problem come back after every fix?+

Because the incident has more than one cause and each fix addressed one. When a fix holds and the symptom returns, re-diagnose from first principles. Same symptom is not same cause.

How do I find the real root cause of high server load?+

Primary sources first: dmesg for OOM and hung tasks, iostat to test whether the disk is actually busy, a process stack or a few seconds of tracing to see where workers are stuck. Rank what you find by contribution to the collapse, not by how loud it looks.

What does it mean when load is high but the disk is idle?+

Usually lock contention or a stalled dependency, not capacity. Headroom present while the site is down points at an application or dependency fault, and adding resources changes nothing.

Should I restart a crashing service to fix it?+

Not while the trigger is still live. If something is repeatedly killing it, a restart re-runs the crash. Stop the proximate trigger first, then remove the cause, then restart into a healthy state.

What is a good incident post-mortem method?+

List every contributing fault, not just the first. Rank by contribution. Record the tell that exposed each one. And turn every hole into a standing pre-flight check so it cannot align again. If a post-mortem has exactly one cause for a total collapse, read it twice.

Second opinion on a stubborn incident?

If it keeps coming back, it has more causes than the last report found. Bring us the symptom history; we'll bring the method.

Talk to an engineer

You’ve reached the end.

Put the reading to work

What are
you running?

Tell us about the workload, traffic and recovery requirements. Start with the server builder, or talk through the details with an engineer.

Written by the engineers who build and run the infrastructure it describes.
Talk to an engineer
XIn

7 min left