"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