Scenario
A production web server experiences overall slowness, with users reporting page timeouts. Monitoring shows system load average consistently above 80% of CPU cores.
Symptoms
- Application request latency increases significantly
- SSH login feels sluggish
toporuptimeshows high load average- May be accompanied by high CPU usage, high I/O wait, or memory swapping
Diagnosis Steps
- Quick system check:
bash uptime top -bn1 | head -n 20 free -h df -h - Analyze CPU usage:
bash mpstat -P ALL 1 5 # Focus on %usr, %sys, %iowait - Identify high-CPU processes:
bash ps aux --sort=-%cpu | head -10 pidstat -u 1 5 - Check disk I/O (if %iowait high):
bash iostat -x 1 5 # Look at await, %util - Trace system calls (carefully):
bash strace -p <PID> -c -S time 2>&1 | head -20 # run only 5 seconds - Kernel logs:
bash dmesg --level=err,warn | tail -20
Risk Controls
- Before running diagnostics on production, prefer a replica or low-traffic node
- Limit
straceduration (use -S or timeout) to avoid hanging processes - Avoid
kill -9in production; usekill -TERMor restart services - Log all commands executed and their output
Rollback Steps
If a mistake is made or recovery needed:
- If a critical process was killed, restart the service immediately: systemctl restart <service-name>
- If system parameters (e.g., vm.swappiness) were changed, revert and reload: sysctl -p
- If temporary tools were installed, remove and clean: yum remove -y <tool> or apt-get purge
Verification
- Confirm load has dropped:
uptimeandtopshow normalized load average - Verify application response: test an API endpoint with curl for timing
- Check that monitoring alerts clear
When to Submit an OpsGlobal Ticket
- Root cause is unclear (e.g., suspected hardware failure)
- Load spikes persist uncontrollably
- Deep debugging (e.g., perf analysis) or kernel tuning needed
- Capacity expansion or architectural changes required
Use cases
Useful for teams handling DevOps issues and needing a clear troubleshooting and delivery workflow.
Problem background
This runbook provides a systematic approach to diagnosing high system load on Linux production servers, covering symptoms, diagnostic commands, risk controls, rollback, verification, and when to escalate to OpsGlobal.
Troubleshooting steps
Confirm impact and recent changes, collect logs, configuration and metrics, then apply fixes from low to high risk.
Command examples
Replace sample resource names with real values and store passwords, tokens and keys in environment variables.
Risks
Before production changes, confirm backups, access boundaries, change windows and rollback paths.
Rollback plan
Keep original configuration and release versions; roll back config, images or database changes if metrics degrade.
Deliverables
Root-cause notes, key commands, remediation steps, verification results and follow-up recommendations.
Need help with a similar technical issue?
If your servers, Kubernetes, Docker, CI/CD, databases or monitoring systems have similar issues, submit logs and config files for remote diagnosis.