1 декабря 2011 г.

Тонкости Apache

Настройка сервера Apache - залог хорошей и безопасной работы сервера.

Пройдемся по файлу конфигурации httpd.conf.

Timeout: Время в секундах, после которого сервер разрывает соединение с выдачей  Timeout. Нужно уменьшить значение, помогает защитится от искусственных медленных соединений (при DDOS).  
Timeout 45 

Далее важнейшая настройка Apache для модуля prefork, или worker.

StartServers: количество процессов сервера после старта
MinSpareServers: минимальное количество ждущих процессов
MaxSpareServers:   максимальное количество ждущих процессов
ServerLimit: максимальная величина MaxClients в течение всего времени работы сервера 
MaxClients: максимальное количество одновременно запущенных процессов сервера 
MaxRequestsPerChild: максимальное количество запросов, которое может обслужить процесс, затем процесс закрывается

StartServers 8
MinSpareServers 5
MaxSpareServers 15
ServerLimit 15
MaxClients 15
MaxRequestsPerChild 4000


Важно правильно выбрать  MaxClients т.к. если значение будет мало, клиенты будут стоять в очереди и ждать выдачи страниц, а если слишком большое - то любая DDOS атака приведет к тому, что Apache начнет плодить процессы и израсходует всю свободную память  и будет использовать своп и сервер уже может не выйти из комы. То есть выбрать значение нужно так - всю свободную память разделить на размер одного процесса Apache. Например, если есть 256М памяти, делим на вес процесса 25М и получаем, что около 10 клиентов может обслужить сервер одновременно т.е. ставим  MaxClients 10.

Вес процесса можно уменьшить, но не сильно. Для этого нужно убрать все лишние модули в php.ini и в httpd.conf.

Когда сервер ведет лог, он по умолчанию преобразует IP адреса клиентов в имена хостов. Отключим это для увеличения скорости.
HostNameLookups Off

Поставим кодировку по умолчанию для отдачи страниц
AddDefaultCharset windows-1251 

Добавим gzip сжатие страниц на лету, меньше будет объем, быстрее клиент заберет данные и отсоединится, это разгрузит память, будем жать html, xml, javascript, css.
LoadModule deflate_module modules/mod_deflate.so
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript text/css

включим виртуальный хостинг на 80 порту
NameVirtualHost *:80 

Создадим один виртуальный хост:
<VirtualHost *:80>
ServerName host.com
ServerAlias www.host.com
DocumentRoot /var/www/
host.com/
<Directory "/var/www/
host.com/">
AllowOverride All
</Directory>
</VirtualHost>

Обычно этой основной настройки достаточно для начала, далее нужно подстраивать под конкретные задачи.

Комментариев нет:

Отправить комментарий