nastrojka-servera-apache-na-vps-pic1Я уже писал про настройку Apache на VPS в контексте оптимизации работы, чтобы не переходить на новый более дорогой тарифный план. Но всякая оптимизация имеет пределы и наступает момент, когда ресурсов все равно перестает хватать. В этом случае перехода на сервер с большим количеством выделенных ресурсов не избежать. Обычно Apache на хостинге настроен по-умолчанию и эти настройки подходят разве что для малопосещаемого ресурса с минимумом запросов. Постараюсь разобрать, как правильно настроить сервер, для достижения максимальной производительности и оптимального потребления ресурсов.

nastrojka-servera-apache-na-vps-pic2В большинстве случаев при покупке VPS клиенту дается доступ к серверу по SSH, и именно он понадобится нам для настройки параметров Apache. Для серверов не всегда предусмотрена программа для SSH-доступа, поэтому может понадобится клиент для нашего компьютера. Я использую бесплатную программу Putty, которую можно скачать со странички разработчика. Она не требует установки, а основные настройки сводятся к указанию адреса сервера, к которому будем подключаться. После подключения к серверу, появится коммандная строка с приглашением ввести логин и, затем, пароль.

nastrojka-servera-apache-na-vps-pic3Для более удобной навигации по файловой системе было бы хорошо, чтобы на сервере стоял файловый менеджер Midnight Commander. Подробнее про него можно почитать в википедии. Если он не установлен, то можно попросить хостера или установить самому.

Вызывается Midnight Commander из коммандной строки при помощи комманды “mc“. При помощи этой программы работа становится намного проще и не требует каких-то специальных знаний, а кроме этого, все необходимые комманды, которые понадобятся нам в процессе настройки вынесены вниз и легко доступны.

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

httpd -V|grep MPM

В большинстве случаев ответ сервера будет следующем:

Server MPM:     Prefork
-D APACHE_MPM_DIR=”server/mpm/prefork”

Это означает, что используется модуль “prefork” и в файле конфигурации мы будем править секцию, которая описывает работу этого модуля.

Теперь через Midnight Commander находим и открываем необходимый нам конфигурационный файл, который расположен здесь:

/etc/httpd/conf/httpd.conf

Для начала находим “KeepAlive” и если стоит значение “Off“, то меняем его на “On“. Затем ищем секцию, в которой описываются настройки для нашего MPM. В случае “prefork” она будет первой:

# prefork MPM
<IfModule prefork.c>
[...]
</IfModule>

# worker MPM
<IfModule worker.c>
[...]
</IfModule>

Это как раз и есть настройки сервера Apache. Если кому-то интересно, что они из себя представляют, то можно почитать об этом в моей первой статье по настройке Apache на VPS. Ниже примеры конфигураций по-умолчанию и рекомендуемой для серверов с высокой нагрузкой.

Настройки по-умолчанию
StartServers 1
MinSpareServers 1
MaxSpareServers 5
MaxClients 10
KeepAliveTimeout 3
MaxRequestsPerChild 4000
Настройки для сильно нагруженных проектов
StartServers 15
MinSpareServers 15
MaxSpareServers 20
ServerLimit 50
MaxClients 50
KeepAliveTimeout 3
MaxKeepAliveRequests 100
MaxRequestsPerChild 2000

Я использую “средние” между этими двумя конфигурациями значения, которые вывел для своего сервера опытным путем. Основной критерий – наличие свободной памяти в период нагрузки на сервер. Ее значение должно быть минимальным, в противным случае страницы будут отдаваться пользователям медленно, а сервер будет недогружен. При этом следует помнить, что и в своп система не должна уходить.

Все изменения, которые мы сделали в “httpd.conf”, потом нужно дублировать в этом файле:

/etc/httpd/conf.d/swtune.conf

Иногда его нет на сервере, тогда ничего делать не надо.

После того, как все сделано, для применения изменений, перегружаем сервер apache командой:

service httpd restart

И оцениваем результат. Я постарался добиться, чтобы в пик нагрузки количество свободной памяти составляло где-то 32мб, этого достаточно, чтобы сервер не зависал, даже при работе с панелью управления, а ресурсы при этом использовались максимально.

Поделиться в соц.сетях

Похожие записи

Мне нравится!

Нравится