How to check whether your server is performing
Measuring your own server with sysbench, dd and iperf3, and why comparing today against last month matters more than any single number.
"Is this server actually slow, or does it just feel slow?" is a question you can answer with real numbers rather than a guess, using a handful of standard tools. The value of running these yourself is not a single absolute figure — it is having a baseline on your own server that you can measure again later and compare against, which is what actually tells you whether something has changed.
Benchmark results depend heavily on the specific hardware, current load from other processes, storage type, and configuration at the moment you run them. A figure quoted somewhere else for "a VPS" is not a meaningful comparison for yours. Run these tools once now, save the output, and run them again after a change — a software update, a config tweak, a resize — to see what actually moved.
CPU: sysbench
sudo apt install sysbench -y # Ubuntu / Debian
sudo dnf install sysbench -y # RHEL / Rocky / AlmaLinux
Run a CPU test calculating prime numbers up to a fixed limit, using all available cores:
sysbench cpu --cpu-max-prime=20000 --threads=$(nproc) run
$(nproc) automatically fills in the number of CPU cores available, so the test uses your server's full capacity. The output reports events per second and total execution time — save it, and run the identical command again after any change you want to evaluate.
Disk: dd and sysbench fileio
A quick, rough write-speed check:
dd if=/dev/zero of=testfile bs=1M count=1024 oflag=direct
rm testfile
oflag=direct bypasses the operating system's page cache, so you are measuring the disk itself rather than how fast data can be written into memory. Without it, a small enough test file can complete almost instantly regardless of true disk speed, which is a common and misleading mistake when running this test.
For a more thorough test that separates read and write performance and simulates realistic access patterns, sysbench's fileio mode is more representative than a single dd run:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
The middle command is the actual test; the first prepares the test files and the last removes them afterwards — do not skip the cleanup step, or the test files are left consuming disk space.
Network: iperf3
Testing network throughput needs a second machine to test against, since it measures the connection between two points rather than one server in isolation. Install iperf3 on both:
sudo apt install iperf3 -y # Ubuntu / Debian
sudo dnf install iperf3 -y # RHEL / Rocky / AlmaLinux
On one machine, start a server:
iperf3 -s
From the other, connect and run the test:
iperf3 -c server-ip-address
The result reports throughput between the two specific points tested — useful for comparing your own connection over time, or between two of your own servers, but not a general statement about "the network" independent of where the other endpoint actually is.
Web server response time under load
If the actual concern is how your website performs, testing the web server directly under simulated concurrent load is more relevant than a raw CPU or disk number. Apache Bench, which ships alongside the Apache tools package, is a simple option:
sudo apt install apache2-utils -y # provides ab, works against any web server
ab -n 200 -c 10 http://yourdomain.com/
-n is the total number of requests, -c is how many run concurrently. This reports requests per second and response time distribution for your own site as it is currently configured — a genuinely useful before-and-after comparison when testing a caching change or a configuration tweak.
Running a load test against a domain generates real traffic that a receiving server has to handle — only ever point these tools at your own infrastructure, and start with modest numbers on a production server rather than immediately simulating heavy concurrent load against something people are actively using.
Making sense of what you find
If numbers look poor compared to your own server's history, check first whether something else is currently consuming resources — see seeing what is using your server resources before assuming the hardware itself is the problem. A busy background process, a runaway job, or memory pressure pushing the system into swap can all make a server appear to perform worse than its actual capacity, and none of those are fixed by moving to bigger hardware.
If measured performance genuinely and consistently falls short of what a workload needs even with nothing else running, that is a sizing question rather than a configuration one — see how much RAM does my VPS need? and VPS or dedicated server: where the line is, and talk to us about what a different tier would actually change for your specific workload.
Related reading
The commands that show you exactly what is consuming CPU, memory and disk on a VPS, and how to identify the process responsible.
How much RAM does my VPS need?It depends what is running, but free -h on an existing server and a look at what each extra service costs gets you a real answer fast.
VPS or dedicated server: where the line isA VPS is an isolated slice of shared hardware; a dedicated server is the entire physical machine to yourself. Here is what that changes.
How to add swap space to a VPSCreating a swap file with fallocate and mkswap, making it permanent in fstab, and why swap is a cushion rather than a substitute for RAM.