Тюнинг параметров системы применяется для повышения отзывчивости и производительности сервера. Не спешите покупать новое железо, возможно все дело в софте. Для начала проанализируйте нагрузку на сервер и протестируйте свой веб-сайт на нагрузку.
Для начала стоит убедиться, что вы используете файловую систему 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
Смешанная среда 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.
Прежде чем начинать оптимизацию нужно провести диагностику системы и выявить слабые места. Бездумный тюнинг может только усугубить ситуацию. Выявить проблемные места при работе веб-сервера поможет [http://ruhighload.com/index.php/tag/%D0%BF%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 профилирование]. Оптимизируйте настройки веб-сервера (Nginx и Apache), внедряйте HTTP/2.
Этот текст был написан несколько лет назад. С тех пор упомянутые здесь инструменты и софт могли получить обновления. Пожалуйста, проверяйте их актуальность.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…