
How to Improve Server Performance: Benchmarking and Tuning
Benchmark CPU, disk, memory and network on your server, read the results, find the real bottleneck and apply Linux kernel tuning that actually helps.
How to Improve Server Performance
Server performance shows up directly in application speed, user experience and uptime. This guide covers how to measure what your server is actually doing, identify the real bottleneck, and tune around it instead of guessing.
Benchmarking
CPU Benchmark
# Install sysbench
sudo apt install sysbench -y
# Single core CPU test
sysbench cpu --threads=1 run
# Multi core CPU test
sysbench cpu --threads=$(nproc) runDisk I/O Benchmark
# Disk read speed test
sudo hdparm -Tt /dev/sda
# Detailed testing with fio
sudo apt install fio -y
# Sequential read
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --runtime=30
# Random read and write
fio --name=randreadwrite --rw=randrw --bs=4k --size=1G --numjobs=4 --runtime=30Network Benchmark
# Install iperf3
sudo apt install iperf3 -y
# Bandwidth test (server mode)
iperf3 -s
# Test from the client side
iperf3 -c SERVER_IPMemory Benchmark
# Memory throughput test
sysbench memory --threads=4 run
# Watch memory usage
free -h
vmstat 1Tuning a Linux Server
Kernel Parameters
# Edit /etc/sysctl.conf
sudo nano /etc/sysctl.conf
# Network tuning
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_tw_reuse = 1
# Memory management
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
# File handles
fs.file-max = 2097152
# Apply the changes
sudo sysctl -pI/O Scheduler
# Use the deadline or none scheduler on SSDs
echo "none" | sudo tee /sys/block/sda/queue/scheduler
# Make it persistent
echo 'ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="none"' | sudo tee /etc/udev/rules.d/60-scheduler.rulesDisabling Unused Services
# List enabled services
systemctl list-unit-files --type=service --state=enabled
# Examples
sudo systemctl disable snapd
sudo systemctl disable ModemManager
sudo systemctl disable cupsMonitoring Tools
1. htop: Interactive Process Monitoring
sudo apt install htop -y
htop2. Netdata: Web Based Monitoring
# Install Netdata
bash <(curl -Ss https://my-netdata.io/kickstart.sh)Then open http://SERVER_IP:19999 in a browser to watch live metrics.
3. Grafana and Prometheus: Production Monitoring
For long term metric retention and alerting across several servers, Grafana paired with Prometheus is the standard combination.
Finding the Bottleneck
Symptoms of a CPU Bottleneck
- Load average consistently high
- Slow response times across the board
- CPU utilisation pinned above 80 percent
Fix: move to a higher clocked processor, such as Ryzen Premium VDS
Symptoms of a Memory Bottleneck
- Heavy swap usage
- Out of memory (OOM) kills
- Applications crashing under load
Fix: upgrade to a plan with more RAM
Symptoms of a Disk I/O Bottleneck
- High iowait
- Slow file reads and writes
- Database queries taking longer than they should
Fix: move to NVMe SSD backed storage
Symptoms of a Network Bottleneck
- High ping and packet loss
- Low download throughput
- Connection timeouts
Fix: a server on a 10 Gbps network, which is standard on every White Bilişim plan
What Our Infrastructure Gives You
| Feature | Value |
|---|---|
| Network speed | 10 Gbps |
| CPU (Enterprise) | Intel Xeon Gold 6230R |
| CPU (Premium) | AMD Ryzen Threadripper PRO 5975WX |
| RAM | DDR4 ECC |
| Storage | SSD |
| Location | Istanbul / Datacasa |
| Backups | Free daily |
Conclusion
Server performance is not a one time task. Benchmark, find the bottleneck, tune, then measure again. When tuning stops paying off, that is the signal to upgrade the hardware.
👉 For high performance servers, see Xeon Enterprise VDS and Ryzen Premium VDS, or the game server page for workloads where single core speed decides everything.