Оптимизация производительности сервера Ubuntu 24.04 LTS: что важно настроить

Оптимизация производительности сервера Ubuntu 24.04 LTS: что важно настроить

Как из стандартной Ubuntu 24.04 сделать быстрый и устойчивый сервер? В статье подробно разбираем, какие настройки важны для производительности сервера: ZRAM, swap, сетевые буферы, governor, оптимизация systemd и фоновых задач и многое другое.

Введение

Ubuntu 24.04 LTS — стабильная и производительная система, подходящая для широкого круга серверных задач. Но сразу после установки она работает в универсальной конфигурации — с упором на совместимость, а не на эффективность. На VPS и выделенных серверах это может означать нерациональное использование ресурсов, медленный отклик или снижение стабильности при работе под нагрузкой.

В этой статье мы разберём ключевые аспекты оптимизации Ubuntu 24.04: от управления памятью и процессами до настройки сетевых параметров и файловой системы.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

Обновление и минимизация фона

Перед выполнением любых задач, будь то установка ПО или оптимизация, убедитесь, что система обновлена и удалены неиспользуемые зависимости:

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 — открытые порты и сетевые соединения.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях