====== Оптимизация Ubuntu: Настройка swap и параметров памяти ======
===== Проблема =====
Алерт: ''High swap space usage (less than 50% free)'' - обычно возникает при отсутствии или неправильной настройке swap.
===== Диагностика =====
Проверяем текущее состояние системы:
# Проверить наличие и использование swap
free -h
# Текущее значение swappiness
cat /proc/sys/vm/swappiness
# Топ процессов по памяти
ps aux --sort=-%mem | head -15
===== Решение: Создание и настройка swap =====
==== Шаг 1: Создание swap файла ====
# Создать swap файл 2GB
sudo fallocate -l 2G /swapfile
# Установить права доступа
sudo chmod 600 /swapfile
# Создать swap
sudo mkswap /swapfile
# Активировать swap
sudo swapon /swapfile
# Проверить результат
free -h
swapon --show
==== Шаг 2: Добавление в автозагрузку ====
# Добавить в fstab для автоматической активации при загрузке
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Проверить что добавилось
grep swapfile /etc/fstab
==== Шаг 3: Оптимизация параметров памяти ====
# Добавить параметры оптимизации
sudo tee -a /etc/sysctl.conf <
===== Параметры оптимизации =====
^ Параметр ^ Значение ^ Описание ^
| ''vm.swappiness'' | 10 | Система будет использовать swap только при необходимости (по умолчанию 60) |
| ''vm.vfs_cache_pressure'' | 50 | Баланс между кэшированием файлов и освобождением памяти |
| ''vm.dirty_ratio'' | 10 | Процент памяти для грязных страниц перед записью на диск |
| ''vm.dirty_background_ratio'' | 5 | Фоновая запись грязных страниц |
===== Проверка результата =====
# Итоговая проверка
free -h
swapon --show
cat /proc/sys/vm/swappiness
Ожидаемый результат:
* Swap 2GB создан и активен
* 100% swap свободен (0B используется)
* swappiness = 10
* Все параметры сохранены для автозагрузки
===== Дополнительная оптимизация =====
==== Ограничение размера журналов ====
Для систем с малым объемом RAM (менее 2GB):
# Редактировать конфигурацию journald
sudo nano /etc/systemd/journald.conf
Раскомментировать и установить:
SystemMaxUse=50M
RuntimeMaxUse=50M
# Перезапустить службу
sudo systemctl restart systemd-journald
==== Очистка swap (опционально) ====
**Внимание:** Может временно подтормозить систему
# Выгрузить и загрузить swap заново
sudo swapoff -a && sudo swapon -a
===== Мониторинг =====
# Посмотреть какие процессы используют swap
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | head -15
# Статистика использования памяти
vmstat 1 5