Оптимизация сервера на Ubuntu


Предыдущая | Следующая

Тюнинг параметров системы применяется для повышения отзывчивости и производительности сервера. Не спешите покупать новое железо, возможно все дело в софте. Для начала проанализируйте нагрузку на сервер и протестируйте свой веб-сайт на нагрузку.

Файловая система

Для начала стоит убедиться, что вы используете файловую систему ext4:

df -T# Вывод будет похожим на:
Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/vda1      ext4      20511592 2494920  16960708  13% /
tmpfs          tmpfs       250152       0    250152   0% /dev/shm
tmpfs          tmpfs         5120       0      5120   0% /run/lock

# Будет отображаться в столбце Type

Если же файловая система Ext3, то рекомендуется перевести ее в Ext4 — более производительную и улучшенную версию.

Виртуальная память

Для выполнения трудоемких задач используется виртуальная память (swap) — когда заполняется RAM, часть программы переносится на жесткий диск. Таким образом можно использовать больше ОЗУ, чем есть в системе.

Подход не имеет смысла в системах с большим объемом RAM, тем более, что оперативная память быстрее постоянной. Swap также не рекомендуется использовать на сервере с SSD-дисками — он существенно снижает срок службы хранилища (частые процессы записи и чтения).

Ubuntu по умолчанию выгружает данные при заполнении ОЗУ на 40%.

Для настройки swap используется параметр vm.swappiness, значение которого нужно вписать или отредактировать в файле конфигурации sysctl.conf:

nano /etc/sysctl.conf# Добавить строчку
vm.swappiness=10

# Файл подкачки задействуется только если свободно 10% оперативной памяти

После этого нужно сохранить файл и перезагрузить систему. Для проверки, что новый параметр задействован нужно выполнить:

sysctl -p# Илиsysctl -a | grep vm.swappiness

# В первом случае применяет выводит все параметры файла, во втором — выбирает нужный параметр среди всех возможных переменных

Кэширование позволяет улучшить производительность системы. Но если веб-сервер производит большое количество операций чтения/записи, то дополнительное кэширование может замедлять I/O.

Параметры кэширования можно настроить:

$ sysctl -a | grep dirty
 vm.dirty_background_ratio = 10
 vm.dirty_background_bytes = 0
 vm.dirty_ratio = 20
 vm.dirty_bytes = 0
 vm.dirty_writeback_centisecs = 500
 vm.dirty_expire_centisecs = 3000

# Параметры, отвечающие за dirty pages — данные, которые нужно записать на диск или отправить в swap

Параметры значат:

Количество данных, которые ожидают записи можно просмотреть так:

cat /proc/vmstat | egrep "dirty|writeback" nr_dirty 878
 nr_writeback 0
 nr_writeback_temp 0

# 878 “грязных” страниц ожидает записи

Чтобы уменьшить размер кэша для уменьшения вероятности потери важных данных при сбое и минимизации возможных задержек записи/чтения необходимо отредактировать параметры vm.dirty_background_ratio и vm.dirty_ratio:

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

# Значения записываются sysctl.conf

IPv6

Смешанная среда IPv4/IPv6 может вносить сбои в работу подключенных к Сети программ из-за непреднамеренного взаимодействия протоколов. К примеру при неудачной попытке подключения apt или ssh к сети IPv6, несовместимости устройств.

Для отключения IPv6 нужно выполнить:

sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6'

# Временное отключение IPv6 на всех интерфейсах

А для перманентного отключения протокола нужно отредактировать файл /etc/sysctl.conf:

# Отключение на всех интерфейсах
net.ipv6.conf.all.disable_ipv6 = 1# Отключение на определенном интерфейсе
net.ipv6.conf.eth0.disable_ipv6 = 1

# Для применения новых параметров достаточно ввести sudo sysctl -p /etc/sysctl.conf

Процессы

Фоновые процессы могут серьезно “засорить” системную память. На помощь придет утилита sysv-rc-conf:

sudo aptitude install sysv-rc-conf

# Установка инструмента

sysv-rc-conf позволяет отключать ненужные сервисы для ускорения и оптимизации ресурсов системы.

После чистой установки Ubuntu Server содержит минимум сервисов, только самое нужное. Но если сервер используется длительное время, то список процессов может быть обширным и будет зависеть от программ, которые вы сами устанавливали.

Если же используется десктопная версия, то вот небольшой список сервисов, которые можно отключить (если система работает в качестве сервера):

Главная рекомендация — не отключайте неизвестные процессы, пользуйтесь мануалом и Google.

Самое главное

Прежде чем начинать оптимизацию нужно провести диагностику системы и выявить слабые места. Бездумный тюнинг может только усугубить ситуацию. Выявить проблемные места при работе веб-сервера поможет профилирование. Оптимизируйте настройки веб-сервера ( Nginx и Apache), внедряйте HTTP/2.