Веб-сервер Apache - один из самых популярных веб-серверов в мире, используемый миллионами веб-сайтов и организаций. Он способен обрабатывать большой трафик веб-сайтов и приложений. Однако его настройки по умолчанию поддерживают только средний трафик веб-сайтов. Чтобы масштабировать сервер, необходимо включить его модуль многопроцессорной обработки (MPM). В этой статье мы узнаем, как включить Apache MPM Prefork.
Модуль многопроцессорной обработки Apache поддерживает prefork, workers и events. Prefork - это конфигурация, в которой у вас есть один процесс-контроллер, порождающий все дочерние процессы для прослушивания входящих соединений. В случае с рабочими, каждый рабочий может, в свою очередь, создавать несколько потоков, по одному для каждого входящего запроса. События MPM предназначены для поддержки большего количества запросов путем передачи части обработки вспомогательным потокам и освобождения основных потоков для обработки новых запросов.
Как включить модуль Apache MPM prefork
Здесь описаны шаги по включению модуля Apache MPM prefork. Мы будем использовать систему Ubuntu/Debian для нашей цели.
1. Включите префорк MPM
В большинстве случаев модуль Apache MPM уже установлен вместе с сервером Apache, но не включен. Одновременно вы можете использовать только один тип конфигурации MPM. Другими словами, если вы используете Prefork, вам нужно будет отключить worker и event.
Поэтому откройте терминал и выполните следующую команду, чтобы проверить, включен ли prefork или нет.
1 | apache2ctl -M | grep prefork |
Если вы не получите никакого результата, значит, prefork еще не включен. В этом случае выполните следующие команды, чтобы отключить MPM worker & event и включить prefork.
1 2 | sudo a2dismod mpm_event sudo a2dismod mpm_worker |
Перезапустите сервер Apache для применения изменений.
1 | sudo systemctl restart apache2 |
Включите префорк MPM.
1 | sudo a2enmod mpm_prefork |
Перезапустите сервер Apache для применения изменений.
1 | sudo systemctl restart apache2 |
Обратите внимание, команды a2enmod и a2dismod доступны только в системах Ubuntu/Debian. Если вы используете Redhat/CentOS/Fedora/SUSE Linux, то вам необходимо открыть файл конфигурации Apache в текстовом редакторе.
1 | sudo nano /etc/apache2/httpd.conf |
Закомментируйте строку, содержащую модули worker и event, добавив # в ее начало, и некомментируйте строку, содержащую модуль prefork, удалив # в ее начале, как показано ниже.
1 2 3 | LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #LoadModule mpm_worker_module modules/mod_mpm_worker.so #LoadModule mpm_event_module modules/mod_mpm_event.so |
Сохраните и закройте файл, перезапустите сервер Apache для применения изменений.
2. Настройка MPM_Prefork
В большинстве случаев стандартной конфигурации MPM Prefork достаточно для обработки большого веб-трафика. Однако, если вам необходимо настроить ее, то вот как это сделать.
Откройте файл конфигурации MPM Prefork в текстовом редакторе.
1 | sudo nano /etc/apache2/mods-available/mpm_prefork.conf |
В этом файле вы увидите следующие параметры.
1 2 3 4 5 | StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0 |
Измените их до следующих значений. Пожалуйста, убедитесь, что ваше оборудование может выдержать эти значения. Кроме того, увеличивайте их только в пределах ожидаемой нагрузки.
1 2 3 4 5 | StartServers 4 MinSpareServers 3 MaxSpareServers 40 MaxRequestWorkers 200 MaxConnectionsPerChild 10000 |
Перезапустите сервер Apache.
1 | sudo systemctl restart apache2 |
На этом этапе MPM Prefork включен в вашей системе. Вы можете протестировать его с помощью Apache bench, чтобы проверить, справляется ли он с ожидаемой нагрузкой.