Настройка сервера Apache на VPS

Рубрика: Интернет штучки

9 Дек 2009

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мб, этого достаточно, чтобы сервер не зависал, даже при работе с панелью управления, а ресурсы при этом использовались максимально.

Статьи по теме

6 комментариев к статье: Настройка сервера Apache на VPS

Avatar

adw0rd

9 декабря 2009 в 17:00

Я вообще отказался от Apache, ибо он очень прожорлив. Сейчас сижу на Nginx+Tornado, Nginx+spawn-fcgi, Nginx+php-fpm. Apache только для свн и на домашней тачке еще есть.

Avatar

xela

10 декабря 2009 в 9:31

Это ты молодец. А у меня не хватает знаний прямо скажем, чтобы под *nix все поставить-настроить, по-этому приходится пользовать то, что есть. Была у меня мысль нжинкс поставить под статику на сервер, но пока не разобрался до конца.

Avatar

adw0rd

10 декабря 2009 в 9:54

Может моя статья пригодится?

Avatar

xela

10 декабря 2009 в 10:51

О, спасибо. Посмотрел, теперь надо пробовать.

Avatar

skokov

30 декабря 2009 в 10:18

Зачем используется /etc/httpd/conf.d/swtune.conf? Он есть не на всех VPS с Plesk.

Avatar

xela

31 декабря 2009 в 11:43

Насколько я понимаю в нем дублируются настройки. Если файла нет, то и делать с ним ничего не нужно.

Оставить комментарий к статье: Настройка сервера Apache на VPS

Сколько же еще продлится эта невыносимая жара?! Совершенно ничего не хочется делать, никого не хочется фотографировать, даже из дома выходить не хочется.

Музыкальная пауза


Скачайте флэш-плеер