Спойлер

среда, 15 июля 2015 г.

Тюнинг сервера Apache

Apache — самый популярный Web сервер. Настройка некоторых параметров (тюнинг) может дать существенный прирост в скорости его работы.


Конфигурация

Настройка Apache проводится в конфигурационном файле. Его можно найти:
Debian
/etc/apache2/apache2.conf
Freebsd
/usr/local/etc/apache22/httpd.conf

Модули

Отключайте модули, которые Вам не нужны. Это сэкономит множество ресурсов на обработке запросов. Модули Apache обычно поставляются как плагины (DSO), поэтому их включение и отключение делается просто через конфигурационный файл.
Обычно Вам не нужно ничего, кроме таких модули: mod_alias mod_authz_host mod_deflate mod_dir mod_expires mod_headers mod_mime mod_rewrite mod_log_config mod_autoindex mod_negotiation mod_setenvif

MPM

MPM позволяет выбрать метод обработки параллельных запросов. Оптимальный вариант — Worker — поточный MPM. В нем каждый запрос обслуживается в отдельном потоке одного из дочерних процессов. Потоки — более легкие для ОС объекты, чем процессы. Следовательно, в этом случае производительность повышается. Apache mpm/preform
Для включения Worker MPM, нужно открыть файл
nano /etc/sysconfig/httpd
и убрать комментарий со строки
HTTPD=/usr/sbin/httpd.worker
Перезапустим Apache
/etc/init.d/apache2 restart

AllowOverride и .htaccess

Директива AllowOverride включайте использование файла .htaccess. В этом случае при каждом запросе Apache будет искать этот файл в запрашиваемых директориях. Перемещайте всю конфигурацию в файлы виртуальных хостов (папка /etc/apache2/sites-enabled/ для Debian) и отключите использование htaccess:
AllowOverride None

MaxClients

Apache MaxClients Директива MaxClients устанавливает максимальное количество параллельных запросов, которые будет обрабатывать сервер. Эту настройку нужно адаптировать с течением времени, работайте в пределах значений в 128...4096:
MaxClients 256
Если сервер уже обслуживает MaxClients запросов, новые запросы попадут в очередь, размер которой устанавливается с помощью директивы ListenBacklog.

MinSpareServers, MaxSpareServers, и StartServers

Эти директивы позволяют заранее иметь в памяти созданные процессы, чтобы не приходилось этого делать во время получения запроса. Они устанавливаются только для prefork mpm. StartServers 3
# При запуска Apache будет создавать 3 процесса
MinSpareServers 3
# Apache не будет убивать свободные процессы, если их остается менее трех
MaxSpareServers 5
# Максимум 5 свободных процессов, остальные будут уничтожаться

MaxRequestsPerChild

Директива MaxRequestsPerChild устанавливает сколько запросов может обработать один дочерний процесс/поток прежде чем он будет завершен. По умолчанию значение этой директивы установлено в 0, что означает что однажды созданный процесс/поток не будет завершен никогда. Этот параметр позволяет избавиться от проблем с утечкой памяти, поэтому лучше установить его: MaxRequestsPerChild 4096
# После 4096 обработанных запросов процесс будет перезапущен

KeepAlive

KeepAlive запросы позволяют устанавливать постоянные соединения между клиентом и сервером. Это экономит ресурсы на отсутствии повторной установки соединений. Обязательно включайте эту опцию. KeepAlive On KeepAliveTimeout 30
# Включаем KeepAlive и устанавливаем время ожидания перед закрытием соединения в 30 секунд
Бывают случаи, когда пользователь отправляет только один запрос. Например, download-сервер. Тогда KeepAlive может быть бесполезен и даже вреден, т.к. при включенном KeepAlive сервер закрывает соединение не сразу, а ждет какое-то время (KeepAliveTimeout).

Сжатие

Gzip сжатие Все современные браузеры поддерживают сжатие. Включение gzip существенно уменьшит размер трафика. Это нужно делать всегда. AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript
Проверьте, что сжатие заработало с помощью Online Gzip checker.

DNS

Apache HostnameLookups Выключайте лишние запросы к DNS в Apache:
HostnameLookups Off
# Так Apache будет записывать в лог IP адрес клиента вместо его хоста.
Всегда используйте IP адрес в директивах Allow From и Deny From, а не доменные имена.
Allow From 1.1.1.1
Deny From 2.2.2.2

Самое важное

Самым большим эффектом на посетителей окажет включение сжатия gzip. Часто это экономит около 70% трафика


http://ruhighload.com/index.php/2009/05/27/%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8-apache/

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

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