Как оптимизировать производительность Apache

Конфигурационные файлы Apache

Главный конфигурационные файл Apache обычно располагается тут: /etc/httpd/conf/httpd.conf. Некоторые дистрибутивы OS и панели управления разбивают файл на несколько или много отдельных конфигурационных файлов. Например, панель управления Direct Admin хранит важные данные конфигурации в директории /etc/httpd/conf/extra/ (в этой статье используются настройки из файлов: httpd-default.conf, httpd-mpm.conf), а данные по Virtual Host в директориях пользователей: /usr/local/directadmin/data/users/USERNAME/httpd.conf. Причем если необходимо, чтобы изменения в пользовательских httpd.conf не затирались при работе с панелью управления, вносить в них изменения нужно только через саму панель управления: admin-> Custom Httpd Configurations -> выбрать домен.

DirectoryIndex

Чем меньше индексных файлов записано в директиве DirectoryIndex, тем меньше ресурсов будет тратить Apache на его поиск. Для примера, представим что у сайта example.com индексный файл называется index.php, а в DirectoryIndex указано:  index.htm index.html index.xhtml index.shtml index.pl index.php4 index.php3 index.phtml default.htm default.html home.htm index.php5 Default.html Default.htm home.html index.php. Когда пользователь переходит в браузере на example.com, то Апач начинает поиск индексного файла в директории сайта:

  • проверка наличия index.htm - нет;
  • проверка наличия index.html - нет;
  • проверка наличия index.xhtml - нет;
  • проверка наличия index.shtml, index.pl, index.php4, index.php3, index.phtml, default.htm, default.html, home.htm, index.php5, Default.html, Default.htm, home.html - нет;
  • проверка наличия index.php - есть, идем далее...

Чтобы отключить десятки лишних проверок на наличие индексного файла нужно самый используемый на сервере индексный файл поставить первым в списке и убрать все неиспользуемые на сервере индексные файлы из DirectoryIndex.

Apache MPM

В деле оптимизации производительности Apache не последнюю роль играет выбор подходящего модуля MPM (Multi-Processing Modules - модуль многопроцессорной обработки), который будет управлять сетевыми подключениями и отправкой запросов. Существует несколько различных MPM-модулей: Event, Worker, PreFork, ITK, Peruser и другие, но установить можно только один из них. Посмотреть, какой модуль установлен можно через браузер используя модуль: "Server Status (mod_status) SetHandler server-info" или запустив такую команду из консоли:

$ httpd -V | grep "Server MPM"

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

<IfModule mpm_event_module>
    StartServers             3
    MinSpareThreads         16
    MaxSpareThreads         200
    ThreadsPerChild         64
    ServerLimit             32
    MaxRequestWorkers       1024
    MaxConnectionsPerChild   0
</IfModule>

Подробнее о значении каждой настройки можно посмотреть в официальной документации: Apache MPM Common Directives (eng).

Опубликовано: 2016/11/05
HTML-код ссылки на эту страницу:
<a href="http://petrenco.com/apache.php?txt=699" target="_blank">Как оптимизировать производительность Apache</a>
905
Добавить комментарий
Ваш e-mail: (не виден посетителям сайта)
Ваше имя:
Комментарий:
Символы с картинки:
Только выделенные поля формы добавления комментариев обязательны к заполнению.