"The server is slow" is not a diagnosis. Twelve commands below turn it into one: each answers a specific question, and together they cover CPU, memory, disk, network and logs in about three minutes.

Load and CPU

uptime

The three load numbers are averages over 1, 5 and 15 minutes. Compare them with your CPU count: load 4 on 4 cores is full utilization, load 12 is a queue.

top -b -n1 | head -20

Look at %us (your applications), %wa (waiting for disk) and %st. High wa points at the disk; check the disk section below.

Memory

free -h

Read the available column, not free: Linux deliberately fills spare memory with cache and gives it back when needed. Trouble is when available is near zero and swap is busy.

ps aux --sort=-%mem | head -8

Disk

df -h /
du -xh / --max-depth=2 2>/dev/null | sort -rh | head -12

A 100% full root breaks things in creative ways: password changes fail, databases stop, logs vanish. The second command finds what ate the space.

iostat -x 1 3

%util near 100 with high await means the disk is the bottleneck right now.

Network

ping -c 4 1.1.1.1          # is the world reachable
mtr --report 8.8.8.8        # where the route degrades
ss -tlnp                    # what is listening
ss -s                       # connection totals

Processes and logs

systemctl --failed
journalctl -p err -S -2h --no-pager | tail -30
dmesg -T | tail -20

The OOM killer leaves its signature in dmesg: if a process died mysteriously overnight, look for "Out of memory" lines first.

One block to copy for tickets

{ uptime; free -h; df -h /; ss -s; systemctl --failed; } 2>&1
Attach the output of that block to a support ticket and you skip a whole round of questions: it is the first thing we would ask for anyway.