|
|||||||
Оптимизация сервера на Ubuntu
Время создания: 05.02.2018 10:03
Текстовые метки: highload ubuntu server
Раздел: Highload
Запись: Velonski/mytetra-database/master/base/1517807028v2dp1hx32n/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Тюнинг параметров системы применяется для повышения отзывчивости и производительности сервера. Не спешите покупать новое железо, возможно все дело в софте. Для начала проанализируйте нагрузку на сервер и протестируйте свой веб-сайт на нагрузку. Файловая система Для начала стоит убедиться, что вы используете файловую систему 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. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|