Рубрика: Интернет штучки
9 Дек 2009
Я уже писал про настройку Apache на VPS в контексте оптимизации работы, чтобы не переходить на новый более дорогой тарифный план. Но всякая оптимизация имеет пределы и наступает момент, когда ресурсов все равно перестает хватать. В этом случае перехода на сервер с большим количеством выделенных ресурсов не избежать. Обычно Apache на хостинге настроен по-умолчанию и эти настройки подходят разве что для малопосещаемого ресурса с минимумом запросов. Постараюсь разобрать, как правильно настроить сервер, для достижения максимальной производительности и оптимального потребления ресурсов.
В большинстве случаев при покупке VPS клиенту дается доступ к серверу по SSH, и именно он понадобится нам для настройки параметров Apache. Для серверов не всегда предусмотрена программа для SSH-доступа, поэтому может понадобится клиент для нашего компьютера. Я использую бесплатную программу Putty, которую можно скачать со . Она не требует установки, а основные настройки сводятся к указанию адреса сервера, к которому будем подключаться. После подключения к серверу, появится коммандная строка с приглашением ввести логин и, затем, пароль.
Для более удобной навигации по файловой системе было бы хорошо, чтобы на сервере стоял файловый менеджер 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
9 декабря 2009 в 17:00
Я вообще отказался от Apache, ибо он очень прожорлив. Сейчас сижу на Nginx+Tornado, Nginx+spawn-fcgi, Nginx+php-fpm. Apache только для свн и на домашней тачке еще есть.
10 декабря 2009 в 9:31
Это ты молодец. А у меня не хватает знаний прямо скажем, чтобы под *nix все поставить-настроить, по-этому приходится пользовать то, что есть. Была у меня мысль нжинкс поставить под статику на сервер, но пока не разобрался до конца.
10 декабря 2009 в 9:54
Может пригодится?
10 декабря 2009 в 10:51
О, спасибо. Посмотрел, теперь надо пробовать.
30 декабря 2009 в 10:18
Зачем используется /etc/httpd/conf.d/swtune.conf? Он есть не на всех VPS с Plesk.
31 декабря 2009 в 11:43
Насколько я понимаю в нем дублируются настройки. Если файла нет, то и делать с ним ничего не нужно.