Ответ
Тюнинг Linux — это итеративный процесс подбора параметров под конкретную нагрузку. Я начинаю с профилей tuned, а затем точечно настраиваю через sysctl.
1. Использование tuned (автоматизированный подход):
# Установка и запуск службы (на примере RHEL/CentOS/Fedora)
sudo yum install -y tuned
sudo systemctl enable --now tuned
# Просмотр доступных профилей
sudo tuned-adm list
# Активация профиля, например, для веб-сервера с низкой задержкой
sudo tuned-adm profile latency-performance
# Для виртуализированных гостевых машин часто используется
sudo tuned-adm profile virtual-guest
2. Ручная настройка через sysctl (для точного контроля):
Ключевые параметры, которые я часто корректирую для серверов:
- Сетевой стек (для высоконагруженных сетевых сервисов):
# Увеличиваем диапазон локальных портов и размеры очередей echo 'net.ipv4.ip_local_port_range = 1024 65535' | sudo tee -a /etc/sysctl.conf echo 'net.core.somaxconn = 4096' | sudo tee -a /etc/sysctl.conf echo 'net.ipv4.tcp_max_syn_backlog = 4096' | sudo tee -a /etc/sysctl.conf - Управление памятью и свопом (для серверов БД):
# Уменьшаем склонность к свопу, увеличиваем кэш для VFS echo 'vm.swappiness = 10' | sudo tee -a /etc/sysctl.conf echo 'vm.vfs_cache_pressure = 50' | sudo tee -a /etc/sysctl.conf - Лимиты файловой системы:
# Увеличиваем максимальное количество открытых файлов (для nginx, БД) echo 'fs.file-max = 2097152' | sudo tee -a /etc/sysctl.conf
3. Применение изменений и проверка:
# Загружаем все изменения из /etc/sysctl.conf
sudo sysctl -p
# Проверяем текущее значение конкретного параметра
sudo sysctl net.core.somaxconn
Важно: Все изменения сначала тестирую на staging-окружении и мониторю метрики (через vmstat, iostat, sar) до и после настройки.