A slow VPS is almost always caused by a resource bottleneck. Here's a methodical way to find it, working from the most common causes down.
1. Check the load and CPU
uptime # load averages
top # or htop for a live view
If load is consistently higher than your core count, or a process is pinning the CPU, you've found a CPU bottleneck. Identify the offending process and investigate why.
2. Check memory
free -h
If available memory is near zero and swap is heavily used, the server is memory-starved — which makes everything slow. Consider optimising the app, adding swap as a stopgap, or upgrading RAM.
3. Check disk I/O
iostat -x 1 # from the sysstat package
df -h # is the disk full?
High I/O wait (%iowait in top) points to a storage bottleneck — common on slow HDD-backed VPSes. A full disk also causes failures and slowdowns.
4. Check the network
ping example.com
mtr example.com # traceroute + ping combined
Latency or packet loss between your users and the server can feel like "the server is slow" even when it isn't.
5. Look at the application
Slow database queries, missing indexes, no caching, or an unoptimised app are frequent culprits. Check your app and database logs, and enable slow-query logging.
The usual fixes
- Add caching (object cache, page cache, database query cache).
- Move to NVMe SSD storage if you're on HDD.
- Right-size the plan — scale CPU/RAM to the workload.
Work top to bottom and you'll almost always find the single resource that's holding everything back. OneHost VPS plans use NVMe SSD and KVM with dedicated resources, which removes the two most common causes — slow disks and noisy neighbours.