VPS Server Resource Troubleshooting
A practical guide to diagnosing and resolving CPU, RAM, disk, bandwidth, and malware issues on VPS servers — including when it's the client, when it's the node, and when to escalate.
VPS resources & where to check them
Every VPS has five key resources, each with its own limits and failure signals. Recognising which resource is under stress is the first diagnostic step for any performance case.
⚙️ CPU
Executes all server instructions. Sustained high usage triggers automatic throttling of −25% per hour until usage drops back under limit.
🧠 RAM
Active memory for running processes. When exhausted, visitors get 503 errors and the server may become unresponsive.
💾 Disk Space
Storage for files, databases, logs. Full disk = server failure — services stop, MySQL crashes, cPanel/hPanel behaves erratically.
📡 Bandwidth
Data transferred in/out per month. When exceeded → speed is throttled to 10 Mbps until the 1st of the next month. Server stays online.
💽 I/O — read/write speed
300 MB/s on all KVM plans. Rarely the bottleneck unless something is thrashing the disk (e.g., runaway logs, database rebuild).
Where to check resource usage
📊 hPanel
Backups & Monitoring → Server Usage. Graphs for CPU, RAM, Disk, Bandwidth. Client-facing view — where they see it too.
🛠️ hVPS Admin
Metrics tab — agent-side view. Also has the PROCESSES tab for spotting malware (critical for CPU cases).
🖥️ SSH
Real-time process inspection — top, htop, free -m, df -h. Where the actual diagnosis happens.
High CPU usage
The most common VPS complaint. High CPU can be legit workload, buggy code, or malware — the diagnostic path decides everything.
Symptoms
- Server is slow / unresponsive to SSH or HTTP
- CPU graph hitting the red line in hPanel
- Automatic CPU throttling has kicked in (−25% per hour)
Diagnostic steps
top or htop. Sort by CPU%. Identify the offender.top: press k → enter PID → signal 15. In htop: navigate to the process → press F9.Resolution options
🛠️ Optimise the app
Reduce plugins, fix code inefficiencies, enable caching, tune database queries. Client-side work — this is where #vps-comm1 sets expectations.
🔄 Remove CPU limit
Available once per week via hPanel. Buys the client time to fix the underlying issue.
🦠 Check for malware
High CPU is a classic malware signal. Always rule this out via hVPS Admin → Processes tab. (Full flow in chapter 4.)
⬆️ Upgrade plan
If the CPU is consistently maxed out even after optimisation, the plan is undersized. Recommend upgrade only after optimisation attempts.
CPU steal = your VPS is waiting for physical CPU because the host node is overloaded. This is NOT the client's fault.
- Client's own processes look normal in
top/htop - Server feels slow despite low reported CPU usage
- Use predefine #vps-cpu-steal-node
- Action: request VPS migration to a less-loaded node
High RAM & disk usage
RAM and disk issues have distinct signals — but they're both handled from SSH with a few core commands.
🧠 High RAM — diagnostic
Key columns to explain to the client:
| Column | What it means |
|---|---|
used |
Memory actively in use by running processes |
buff/cache |
Kernel cache — normal, and released automatically when needed. Linux manages this. Not a problem. |
available |
What's actually free for new processes. This is the number that matters. |
used + buff/cache combined. Students (and clients) often panic at this — clarify that high cache is not a problem. Always check free -m to see the real picture.
💾 High disk space — diagnostic
Start with overall disk usage per filesystem:
Then find the largest directories:
Check specifically for oversized log files (very common culprit):
Resolution options — disk
🗑️ Delete unnecessary logs
hPanel → Settings → Delete unnecessary logs. Safe one-click cleanup.
🧹 Clean up large files
Via SSH or File Manager. Use the du output to find what's eating space.
📏 Expand partition after upgrade
If the client upgraded their plan but the new disk wasn't auto-allocated, the partition needs manual expansion (parted + resize2fs).
⬆️ Upgrade plan
When the disk is legitimately full and can't be cleaned enough.
Bandwidth limits & malware
Two distinct issues that often present the same way: "my site is slow" or "my server is down." The diagnostics diverge fast.
📡 Bandwidth exceeded
What happens
- Resets on the 1st of every month
- When exceeded → speed throttled to 10 Mbps
- Server stays online — just slow
- Check: hPanel → Server Usage → Bandwidth graph
Resolution
- Optimise content — compress images, enable caching
- Monitor traffic peaks and identify heavy pages
- Consider a CDN in front of the origin
- Upgrade plan if bandwidth is regularly exceeded
🦠 Malware / cryptomining (important!)
High CPU doesn't always mean legitimate usage — it's frequently a malicious process, especially cryptomining. Always rule this out before recommending an upgrade.
| Category | Process names | What it means |
|---|---|---|
| Cryptomining | xmrig, cpuminer, minerd, cryptonight |
Server hijacked to mine cryptocurrency. CPU pegged at 100%. |
| Hidden processes | kaudit0, kauditd0, /.dhpcd |
Disguised as system processes — obvious red flag once spotted. |
| Blockchain abuse | ceremonyclient, shaicoind |
Blockchain node abuse — resource-heavy, not the client's intent. |
Steps when malware is suspected
The troubleshooting decision flow
Use this mental model for any VPS resource case. It's the same 5-step pattern every time — the branches change, but the flow doesn't.
Check hPanel Server Usage — is any resource hitting the limit?
- Yes → identify which resource (CPU / RAM / Disk / Bandwidth)
- No → likely a software bottleneck. Use predefine #vps-slow-unmanaged
Rule out malware first, then diagnose legit load
- Check hVPS Admin → Processes tab for known malicious names
- Then run
top/htopfor legit high-load processes - Also possible: CPU Steal → node migration (#vps-cpu-steal-node)
Distinguish real usage from cache
- Run
free -m— check theavailablecolumn, notused + cache - Identify top memory processes with
toporhtop
Find the culprit, then clean or expand
df -hto see per-filesystem usagedu -shto find the largest directories- Clear logs, clean files, or expand partition after plan upgrade
Recommend the right long-term path
- If consistently hitting limits → recommend upgrade
- Always suggest optimisation before upgrade — respect the client's investment
Practice cases
Read each scenario. Think through the approach before revealing the expected answer.
Client says VPS is slow. hPanel shows CPU at 100% for the past 6 hours. No malicious processes found.
top or htop → identify the high-CPU process → optimise or kill it (k + PID + signal 15 in top, or F9 in htop). If load is genuinely legitimate and recurring, suggest optimisation first, then plan upgrade. Client is responsible for optimising the application — set that expectation with #vps-comm1.
Client's VPS was auto-stopped. hVPS Admin → Processes tab shows xmrig running.
Client says website is slow but hPanel shows CPU, RAM, Disk all normal.
top and use Kodee to analyse the application. VPS is self-managed — this is the client's optimisation work.
Client upgraded VPS plan but disk space didn't increase.
parted to grow the partition, then resize2fs to grow the filesystem. Verify with df -h afterwards. Link them to the "Increase Partition Size" KB article.
Knowledge check
Pick an answer for each question — feedback appears immediately.
free -m. What column tells you the actual truth?xmrig running. What's the correct next action?Key resources to share with students
Bookmark these — internal wikis for agent context, public KB articles for client-facing answers.
Predefines quick reference
| Predefine | When to use |
|---|---|
| #vps-comm1 | First reply — set expectation that VPS is self-managed |
| #vps-cpu-steal-node | CPU Steal detected — request node migration |
| #vps-cpu-malware | Cryptomining / malicious process detected in Processes tab |
| #vps-slow-unmanaged | All resources normal but client reports slowness — internal software bottleneck |