Troubleshooting Methodology
1. Define the problem precisely
“Server is slow” is not a diagnosis. Determine:
- Which service or users are affected?
- When did it begin?
- Is every request slow or only some?
- Is the issue isolated to one host?
- What changed shortly before the problem?
2. Establish scope
Compare healthy and unhealthy systems when possible. Scope prevents local symptoms from being mistaken for platform-wide failures.
3. Build a timeline
Correlate deployments, configuration changes, certificate expiry, capacity growth and alerts with the first known symptom.
4. Observe before changing
Useful baseline:
date
uptime
free -h
df -hT
df -i
systemctl --failed
journalctl -p err -b
ip route
ss -s5. Test hypotheses
Change one variable at a time. “Restart everything” may restore service but destroys evidence and can hide the real failure.
6. Verify
Confirm the original symptom is gone, dependencies are healthy and error rates/latency have returned to normal.
7. Prevent recurrence
Document root cause, contributing factors, detection gaps and concrete corrective actions.