«Сервер тормозит» - это не диагноз. Двенадцать команд ниже превращают его в диагноз: каждая отвечает на конкретный вопрос, а вместе они закрывают CPU, память, диск, сеть и логи минуты за три.
Нагрузка и CPU
uptime
Три числа load - средние за 1, 5 и 15 минут. Сравнивайте их с числом ядер: load 4 на 4 ядрах - полная загрузка, load 12 - очередь.
top -b -n1 | head -20
Смотрите %us (ваши приложения), %wa (ожидание диска) и %st. Высокий wa указывает на диск; про него ниже.
Память
free -h
Читайте колонку available, а не free: Linux сознательно заполняет свободную память кэшем и отдаёт её по требованию. Беда - когда available около нуля и активно работает swap.
ps aux --sort=-%mem | head -8
Диск
df -h /
du -xh / --max-depth=2 2>/dev/null | sort -rh | head -12
Забитый на 100% корень ломает всё самым неожиданным образом: не меняются пароли, встают базы, пропадают логи. Вторая команда находит, кто съел место.
iostat -x 1 3
%util около 100 при высоком await означает, что узкое место прямо сейчас - диск.
Сеть
ping -c 4 1.1.1.1 # достижим ли мир
mtr --report 8.8.8.8 # где деградирует маршрут
ss -tlnp # кто слушает
ss -s # сводка по соединениям
Процессы и логи
systemctl --failed
journalctl -p err -S -2h --no-pager | tail -30
dmesg -T | tail -20
OOM-киллер оставляет подпись в dmesg: если процесс загадочно умер ночью, сначала ищите строки «Out of memory».
Один блок для тикета
{ uptime; free -h; df -h /; ss -s; systemctl --failed; } 2>&1