Как оптимизировать Apache на CentOS 7

Apache – это мощный и способный веб-сервер с открытым исходным кодом, разработанный для обеспечения баланса гибкости, мобильности и производительности. Оптимизация Apache – важная задача для каждого системного администратора.

Вы можете улучшить производительность Apache, настроив конфигурацию Apache, не добавляя дополнительное оборудование, такое как RAM, CPU и т. Д.

В этом посте описываются различные параметры конфигурации Apache, которые можно использовать для повышения производительности Apache без добавления дополнительных аппаратных ресурсов в вашу систему.

Требования

  • Сервер под управлением CentOS 7 или Centos 7 + Vesta CP
  • Apache установлен и работает или Vestacp установлен с Apache / Apache + nginx

MaxKeepAliveRequests

MaxKeepAliveRequests – это максимальное количество запросов для обслуживания по TCP-соединению. Это ограничивает количество запросов, разрешенных для одного соединения. Если установлено значение 0, неограниченные запросы будут разрешены. Вы можете установить любое значение по вашему желанию.

Сохраняйте для этого параметра высокое значение для максимальной производительности сервера. Рекомендуемое значение MaxKeepAliveRequests – 500.

Чтобы изменить этот параметр, отредактируйте файл конфигурации Apache:

sudo nano /etc/httpd/conf/httpd.conf

Добавьте следующую строку:

MaxKeepAliveRequests 500

Сохраните и закройте файл, когда вы закончите.

KeepAliveTimeout

KeepAliveTimeout определяет количество секунд, в течение которых Apache будет ожидать новый запрос от подключенных клиентов, прежде чем закрывать соединение. (Как только сервер получает запрос, вместо него применяется директива Timeout.)

По умолчанию Keepalive отключено в CentOS 7. Если Keepalive включен, рекомендуется установить значение KeepAliveTimeout на низкое значение.

Рекомендуемое значение KeepAliveTimeout может составлять от 1 до 5.

Вы можете сделать это, отредактировав файл конфигурации Apache:

sudo nano /etc/httpd/conf/httpd.conf

Добавьте следующую строку:

KeepAliveTimeout 5

Сохраните и закройте файл,

KeepAlive

KeepAlive устанавливает, разрешает ли сервер более одного запроса на одно соединение. Он может быть использован для предотвращения использования одним клиентом слишком большого количества ресурсов сервера.

По умолчанию KeepAlive отключен в CentOS 7. Как только сервер Apache получает запросы от сотен и тысяч IP-адресов одновременно, этот параметр должен быть включен.

Вы можете включить этот параметр, отредактировав файл конфигурации Apache:

sudo nano /etc/httpd/conf/httpd.conf

Добавьте следующую строку:

KeepAlive On

Сохраните и закройте файл

Настройка MPM Prefork

Одной из причин низкой производительности Apache является то, что Apache испытывает проблемы с нагрузкой. Apache MPM (Multi-Processing Module) может помочь.

mpm_prefork_module включен в установку Apache по умолчанию в CentOS 7. Для подтверждения выполните следующую команду:

sudo apachectl -t -D DUMP_MODULES |grep mpm

Вы должны увидеть mpm_prefork_module (shared), если mod_deflate установлен и включен.

Вы можете улучшить производительность Apache, используя модуль prefork Apache MPM. Для этого установите следующие параметры в вашем файле конфигурации Apache:

sudo nano /etc/httpd/conf/httpd.conf

Добавьте следующие строки:

KeepAlive Off
<IfModule prefork.c>
   StartServers        5
   MinSpareServers     5
   MaxSpareServers     10
   MaxClients          150
   MaxRequestsPerChild 3000
</IfModule>

Сохраните и закройте файл, затем перезапустите Apache.

sudo apachectl restart

Пояснения

StartServers : эта директива устанавливает количество дочерних серверных процессов, созданных при запуске. Рекомендуется увеличить это число на сервере с высокой нагрузкой, чтобы сервер был готов обрабатывать множество соединений.

MinSpareServers : эта директива устанавливает минимальное количество незанятых дочерних процессов сервера. Это значение нужно будет настроить для серверов с высокой нагрузкой.

MaxSpareServers : эта директива устанавливает максимальное количество незанятых дочерних процессов сервера. Если число незанятых дочерних процессов сервера больше, чем определено MaxSpareServers, незанятый процесс будет уничтожен.

MaxClients : эта директива устанавливает максимальное количество одновременных запросов, которые обработает Apache. Когда этот предел будет достигнут, любые другие попытки подключения будут поставлены в очередь.

Number of MaxClients = (Общая память RAM – память RAM, используемая для другого процесса, кроме процесса Apache) / (Память, используемая одним процессом Apache)

MaxRequestsPerChild : эта директива устанавливает, сколько запросов обработает дочерний процесс перед завершением. Как только предел будет достигнут, дочерний процесс умрет.

Примечание. Если это значение равно 0, процесс никогда не прекратится.

AllowOverride

Если для AllowOverride установлено значение «All», то Apache будет пытаться открыть файл .htaccess в каждом каталоге, который он посещает.

Например:

 DocumentRoot /vaw/www/html/website1
 <Directory /> 
 AllowOverride All
 </Directory>

Если запрос сделан для URI /index.html, то Apache попытается открыть файл .htaccess в /, /var/, /var/www/, /var/www/html/ and /var/www/html/website1/

Поэтому рекомендуется добавить AllowOverride all только для определенного каталога:

DocumentRoot /vaw/www/html/example
 <Directory /var/wwww/html/example/admin> 
   AllowOverride All
 </Directory>

DNS-поиск

Основной причиной замедления работы веб-сервера Apache является время, необходимое для поиска DNS. Apache запишет полное имя хоста каждого входящего клиентского соединения в свой файл access.log. Решение каждого из них съедает значительную часть времени.

Опция HostnameLookups включает поиск DNS, так что имена хостов могут регистрироваться вместо IP-адреса. По умолчанию HostnameLookups отключен в Apache.

Вы можете убедиться в этом, отредактировав файл конфигурации Apache:

sudo nano /etc/httpd/conf/httpd.conf
HostnameLookups Off

Сохраните и закройте файл, затем перезапустите Apache, чтобы отразить изменения.

sudo apachectl restart

Вывод

Настроить Apache для максимальной производительности очень просто. Вы можете экспериментировать с различными доступными параметрами и измерять производительность веб-сервера с помощью таких инструментов, как ab и httperf.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

%d такие блоггеры, как: