Как из стандартной Ubuntu 24.04 сделать быстрый и устойчивый сервер? В статье подробно разбираем, какие настройки важны для производительности сервера: ZRAM, swap, сетевые буферы, governor, оптимизация systemd и фоновых задач и многое другое.
Введение
Ubuntu 24.04 LTS — стабильная и производительная система, подходящая для широкого круга серверных задач. Но сразу после установки она работает в универсальной конфигурации — с упором на совместимость, а не на эффективность. На VPS и выделенных серверах это может означать нерациональное использование ресурсов, медленный отклик или снижение стабильности при работе под нагрузкой.
В этой статье мы разберём ключевые аспекты оптимизации Ubuntu 24.04: от управления памятью и процессами до настройки сетевых параметров и файловой системы.
Обновление и минимизация фона
Перед выполнением любых задач, будь то установка ПО или оптимизация, убедитесь, что система обновлена и удалены неиспользуемые зависимости:
sudo apt update && sudo apt upgrade -y && sudo apt autoremove --purge -y
Это устранит баги, снизит количество фоновых задач и обеспечит стабильную базу.
Ubuntu по умолчанию может содержать пакеты, не нужные для серверного использования. Пакеты, которые можно безопасно удалить на VPS или headless-сервере, чтобы освободить ресурсы и упростить обслуживание:
- snapd — на сервере чаще используются .deb-пакеты или контейнеры (Docker);
- apport — система сбора и отправки багрепортов в Canonical;
- ubuntu-release-upgrader-core — утилита для интерактивного обновления версии Ubuntu. Для обновления на сервере лучше использовать консольные методы;
- popularity-contest — пакет, отправляющий Canonical статистику об установленных программах;
- whoopsie — фоновый демон, отправляющий отчёты об ошибках в Canonical;
- gnome-software, update-notifier, update-manager — компоненты для графического управления обновлениями (используются в Ubuntu Desktop). На сервере обновления производятся вручную или через автоматизированные скрипты, поэтому эти пакеты бесполезны и могут мешать;
- avahi-daemon — обнаружение устройств и сервисов в локальной сети, открывает порты и создаёт потенциальную поверхность атаки;
- modemmanager — менеджер модемов и 3G/4G-соединений;
- friendly-recovery, ubuntu-drivers-common, xserver-*, fonts-*, plymouth — графические и интерактивные инструменты: интерфейс восстановления, автоконфигурация драйверов, шрифты, графический bootloader и т. д. На headless-сервере без GUI все эти утилиты не нужны.
Пример команды для удаления:
sudo apt remove --purge snapd apport whoopsie popularity-contest -y
Затем запустите:
sudo apt autoremove --purge
Это удалит все ненужные зависимости, оставшиеся после удаления основных пакетов.
Также проверьте активные службы:
systemctl list-units --type=service --state=running
И отключите неиспользуемые сервисы, которые вы не хотите удалять, пример:
sudo systemctl disable --now bluetooth.service
Настройка памяти и swap
Используйте swap и ZRAM (сжатый swap в ОЗУ). ZRAM работает быстрее классического swap на диске, экономит ресурсы VPS и подходит для систем с объёмом RAM до 2 ГБ.
Создайте swap-файл на жёстком диске (в примере 2 ГБ):
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Затем добавьте в конец файла /etc/fstab:
/swapfile none swap defaults 0 0
Чтобы использовать ZRAM, установите zram-tools:
sudo apt install zram-tools
Настройки ZRAM находятся в /etc/default/zramswap. Установите приоритет ZRAM выше классического swap.
Теперь настройте использование файла подкачки. Параметр vm.swappiness влияет на агрессивность использования swap. По умолчанию установлено значение 60 — это избыточно для серверов. Установим значение 30:
echo 'vm.swappiness=30' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system
Параметр vm.vfs_cache_pressure регулирует, как активно система сбрасывает inode/dentry кеш. Значение по умолчанию — 100. Уменьшите значение, чтобы кеш сохранялся дольше или если планируется работа в небольшими файлами:
echo 'vm.vfs_cache_pressure=50' | sudo tee /etc/sysctl.d/99-cache-pressure.conf
sudo sysctl --system
Сетевые параметры и ускорение TCP
Сетевые настройки Ubuntu по умолчанию подходят для повседневных задач, но серверные нагрузки требуют большей эффективности. Увеличим размер сетевых буферов (помните, что параметры требуют настройки под конкретную нагрузку и универсальных значений нет):
cat <<EOF | sudo tee /etc/sysctl.d/99-net-tuning.conf
net.core.rmem_max=26214400
net.core.wmem_max=26214400
net.ipv4.tcp_rmem=4096 87380 26214400
net.ipv4.tcp_wmem=4096 65536 26214400
EOF
sudo sysctl --system
Отключите Reverse Path Filtering, если он не нужен. Reverse Path Filtering (обратная проверка пути) — это механизм безопасности в Linux, предназначенный для борьбы с подделкой IP-адресов. Отключение Reverse Path Filtering рекомендуется, если:
- вы используете VPN,
- у вас нестандартная маршрутизация или несколько провайдеров,
- вы запускаете контейнеры с отдельными сетевыми пространствами.
Команда, отключающая rp_filter на всех интерфейсах (all):
echo 'net.ipv4.conf.all.rp_filter=0' | sudo tee -a /etc/sysctl.d/99-net-tuning.conf
По возможности указывайте конкретные интерфейсы, например eth0 вместо all.
Если ваш сервер — обычный веб-сервер с одним IP и без туннелей, оставьте фильтрацию включённой.
Оптимизация systemd и фоновых задач
Настройте параллельное выполнение юнитов при загрузке (systemd запускает несколько служб одновременно, а не строго по очереди). Параллельное выполнение должно быть включено по умолчанию; проверьте максимальное время ожидания запуска сервиса:
grep DefaultTimeoutStartSec /etc/systemd/system.conf
Уменьшите время ожидания, чтобы ускорить диагностику проблем:
sudo sed -i 's/^#DefaultTimeoutStartSec=.*/DefaultTimeoutStartSec=10s/' /etc/systemd/system.conf
Если у вас есть медленные сервисы (например, база данных на медленном диске) — можно наоборот увеличить таймаут.
Mask таймеров — способ полностью отключить (заблокировать) выполнение системных таймеров systemd, которые могут запускать задачи в фоновом режиме и потреблять ресурсы сервера.
Примеры таймеров по умолчанию в Ubuntu Server 24.04:
- apt-daily.timer — автозапуск apt update,
- apt-daily-upgrade.timer — фоновая установка обновлений,
- motd-news.timer — загрузка новостей в MOTD (сообщение дня),
- e2scrub_all.timer — проверка файловых систем ext*.
mask делает выполнение таймера полностью недоступным — даже ручной запуск станет невозможен, так как файл таймера будет замещён символической ссылкой на /dev/null.
Пример команды:
sudo systemctl mask apt-daily.timer apt-daily-upgrade.timer
Чтобы посмотреть активные таймеры:
systemctl list-timers --all
Вы в любой момент сможете восстановить работу отключённых systemd-таймеров. Для этого выполните unmask, затем добавьте таймер в автозагрузку и активируйте его.
Файловая система и I/O
Настройте монтаж файловых систем с оптимальными опциями. Проверьте опции noatime и discard в /etc/fstab. По умолчанию Linux обновляет время последнего доступа (atime) каждый раз, когда файл читается. Но на сервере это ненужная операция, потому что она увеличивает количество операций записи, снижает производительность и ускоряет износ диска (на SSD).
Опция noatime отключает обновление временной метки доступа (atime), что снижает нагрузку на диск. Опция discard включает поддержку TRIM — команды, позволяющей SSD определить, какие блоки больше не используются и могут быть безопасно удалены.
Пример строки монтирования:
UUID=... / ext4 defaults,noatime,discard 0 1
Настройте очистку логов. Логи journalctl могут накапливаться, особенно в контейнерах, так как по умолчанию они сохраняются без ограничений. Чтобы удалить все журналы старше 7 дней, выполните:
sudo journalctl --vacuum-time=7d
Другие варианты:
- --vacuum-size=100M — удалить, пока общий объём логов не станет меньше 100 МБ.
- --vacuum-files=5 — оставить только последние 5 файлов.
Можно сделать очистку автоматической, добавив cron-задачу или systemd-таймер.
CPU: производительность и энергосбережение
Ядро Linux может автоматически изменять частоту процессора в зависимости от текущей загрузки. Какой именно алгоритм управления выбирается, зависит от активного governor — режима управления частотой CPU.
Основные типы governor:
- performance — максимальная частота всегда. Подходит для серверов, где важна скорость.
- powersave — минимальная частота всегда. Энергосбережение в ущерб скорости.
- ondemand — частота быстро повышается при нагрузке, снижается при простое.
- conservative — частота плавно повышается и понижается.
- schedutil — интеграция с планировщиком задач Linux.
Проверьте, какой governor используется:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Для серверов предпочтителен режим performance:
sudo apt install cpufrequtils
echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils
sudo systemctl restart cpufrequtils
Фоновая оптимизация: logrotate и cron
Настройте logrotate: он переименовывает старые лог-файлы (например, logfile в logfile.1), сжимает их, удаляет устаревшие логи и, если нужно, перезапускает наблюдаемые сервисы.
Убедитесь, что в /etc/logrotate.conf и в каталогах /etc/logrotate.d файлы настроены на регулярную ротацию. Пример:
/var/log/syslog {
rotate 7 # Хранить 7 файлов
daily # Ротация каждый день
compress # Сжимать старые логи
missingok # Не выдавать ошибку, если файл не найден
notifempty # Не трогать пустые файлы
}
cron — это системный планировщик заданий, позволяющий запускать скрипты и команды по расписанию. Проверьте текущие задания:
sudo crontab -l
sudo ls /etc/cron.d/
Удалите или отложите задачи, которые не критичны.
Заключение
Оптимизация Ubuntu 24.04 на сервере — это последовательная работа по устранению избыточной фоновой активности, грамотное использование ресурсов и адаптация системы под реальные задачи. Для VPS с небольшим объёмом ОЗУ важны ZRAM, swap и минимальное количество фоновых процессов. Для выделенных серверов — I/O, governor, сетевые параметры.
Изменяйте параметры, которые мы рассмотрели, наблюдая за поведением ОС и сохраняя возможность отката. Для мониторинга используйте:
- htop, atop, iotop — просмотр нагрузки в реальном времени,
- free -h и vmstat — анализ использования памяти,
- ss -tuln — открытые порты и сетевые соединения.
Читайте в блоге:
- Как использовать Snap и управлять Snap-приложениями в Ubuntu 24.04
- Настройка Fail2ban на Ubuntu 24.04 LTS и защита от брутфорса
- Fail2ban и UFW: настройка базовой защиты сервера Ubuntu 24.04 LTS