Любой человек связанный с веб-серверами будь-то сисадмин или владелец сайта стремиться максимально улучшить производительность своего сервера поскольку это важный аспект бизнеса в интернете. Пользователь возращается только на те сайты, где обслуживание проводится на высоком уровне и серфинг сайта не вызывает негативных эмоций. В первую очередь это внешний вид сайта, скорость его работы и безопасность клиентских данных. В этой статье мы затронем аспект оптимизации работы сервера. Ниже приведены основные моменты конфигурирования сервера под эту задачу:
- Настройка ядра Linux
- Конфигурирование iptables/ipset для фильтрации трафика
- Отказ от веб-сервера Apache. Использование Nginx и php-fpm.
Установка и настройка nginx+php-fpm
Оптимизация настроек nginx - Тюнинг Mysql
- Подключение сервиса Cloudflare для базовой защиты от DDOS
Материала которым хочу поделиться достаточно много, поэтому он разделен на несколько статей. В этой часити речь пойдет про оптимизацию работы ядра Linux.
Базовый Тюнинг Ядра Linux для тяжелых проектов
Ядро Linux в настоящее время имеет хорошие значения по умолчанию для sysctl, но всегда есть возможности для улучшения. Некоторые параметры могут использоваться для настройки производительности, другие могут быть критически важными для усиления безопасности.
sysctl - это интерфейс для просмотра и динамического изменения параметров в Linux и других операционных системах * NIX. В Linux большинство динамических настроек ядра можно изменить с помощью sysctl.
Изменение параметров по умолчанию может привести к повышенному потреблению ресурсов. Не стоит просто копировать и вставлять приведённые ниже параметры, обязательно обратитесь к документации при их использовании.
Посмотреть список текущих значений параметров ядра можно введя команду:
ipcs -l
В кратце опишем параметры . Для более детальной информации необходимо обратиться к справочным материалам.
В первом разделе указаны параметры сообщений в системе.
Параметр MSGMNI - количество очередей сообщений, параметр MSGMAX размер сообщения, которое можно поместить в очередь, а параметр MSGMNB влияет на размер очереди.
Для параметра MSGMAX нужно задать значение 64 Кбайта (то есть 65536 байт), а значение MSGMNB нужно увеличить до 65536.
В разделе - Shared Memory Limits (Лимиты общей памяти), предельное значение SHMMAX - максимальный размер в байтах общей памяти. Предельное значение SHMALL - это максимальное кол-во страниц совместно используемой памяти в системе.
Рекомендуется задать для SHMMAX значение, численно равное объему физической памяти в системе. Однако минимально необходимое в системах x86 значение равно 268435456 (256 Мбайт), а в 64-битных системах - 1073741824 (1 Гбайт).
Следующий раздел описывает количество семафоров, доступных для операционной системы.
Семофор это блокировки, которые переводят другие процессы в состояние ожидания. Параметр ядра sem состоит из четырех элементов: SEMMSL, SEMMNS, SEMOPM и SEMMNI. Значение SEMMNS равно произведению SEMMSL на SEMMNI. Подробней с ними можно ознакомиться в статье https://it.wikireading.ru/1834
Изменить параметры ядра, можно отредактировав файл /etc/sysctl.conf. Если этот файл не существует, создайте его.Ниже показаны примеры строк, которые нужно поместить в этот файл:
#Пример для сервера с 16 Гбайтами оперативной памяти:
kernel.shmmni=4096
kernel.shmmax=17179869184
kernel.shmall=8388608
#kernel.sem=
kernel.sem=250 1024000 32 4096
kernel.msgmni=16384
kernel.msgmax=65536
kernel.msgmnb=65536
Еще полезные параметры ядра:
kernel.panic = 10
Автоматическая перезагрузка сервера после kernel panic
kernel.core_uses_pid = 1
Добавляет к имени файла дампа номер PID процесса
vm.swappiness = 20
Не использовать swap пока занятая озу не достигнет 80%
vm.dirty_ratio = 80
Максимальный объем системной памяти, которую можно заполнить dirty pages;
vm.dirty_background_ratio = 5
Процент системной памяти, который можно заполнить dirty pages до того, как фоновые процессы pdflush/flush/kdmflush запишут их на диск;
fs.file-max = 2097152
На серверах, некоторые из ваших приложений могут потребовать более высокийлимит для открытых дескрипторов файлов. Хорошим примером этого являются службы MySQL / MariaDB или веб-сервер Apache.
Вы можете увеличить лимит открытых файлов в Linux, отредактировав опцию ядра
net.core.netdev_max_backlog = 262144
Максимальный размер очереди пакетов для 10 гб или объединенных гигабитных линков /Минимальное значение должно быть равным количеству буферов на сетевом интерфейсе, что бы не вызвать переполнение. Рекомендуемое значение от 3000.
net.core.rmem_default = 31457280
Размер буфера поступающих и отправляемых данных сокета изменяется динамически, поэтому обычно в его изменении нет необходимости. Если же в ходе анализа производительности выяснилось, что скорость освобождения очереди сокета слишком низкая, можно увеличить ее длину. Для этого надо откорректировать следующие параметры:
net.core.rmem_max = 67108864
net.core.wmem_default = 31457280
Размер буфера приема данных по умолчанию для всех соединений.
net.core.wmem_max = 67108864
net.core.somaxconn = 65535
Максимальное число открытых сокетов, ждущих соединения. Имеет смысл увеличить значение по умолчанию.
net.core.optmem_max = 25165824
Теперь когда основные параметры ядра Linux разобраны давайте перейдем к настройке firewall.
Поддержка FREEhost.UA работает круглосуточно. Если во время настройки сервера у Вас возникнут вопросы, мы будем рады Вам помочь. У нас Вы можете арендовать виртуальный сервер на SSD и NVME дисках от 100 грн. в месяц.
Дата: 06.09.2019 Автор: Валерий
|
Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:
comments powered by Disqus