How to Improve Server Performance: Benchmarking and Tuning

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.

White Bilişim

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) run

Disk 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=30

Network Benchmark

# Install iperf3
sudo apt install iperf3 -y
 
# Bandwidth test (server mode)
iperf3 -s
 
# Test from the client side
iperf3 -c SERVER_IP

Memory Benchmark

# Memory throughput test
sysbench memory --threads=4 run
 
# Watch memory usage
free -h
vmstat 1

Tuning 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 -p

I/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.rules

Disabling 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 cups

Monitoring Tools

1. htop: Interactive Process Monitoring

sudo apt install htop -y
htop

2. 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

FeatureValue
Network speed10 Gbps
CPU (Enterprise)Intel Xeon Gold 6230R
CPU (Premium)AMD Ryzen Threadripper PRO 5975WX
RAMDDR4 ECC
StorageSSD
LocationIstanbul / Datacasa
BackupsFree 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.