Мульти-процессные модули (МП-модули)
Этот документ описывает, что такое мульти-процессные модули
и как они используются в HTTP-сервере Apache.

HTTP-сервер Apache был разработан как мощный и гибкий веб-сервер,
который может работать на самых разных платформах и в рамках
различного окружения. Различные платформы и окружения часто
требуют и различных возможностей или могут предоставлять
различные пути реализации одной и той же возможности наиболее
эффективно. Apache всегда мог работать в различных
средах окружения за счёт своей модульной архитектуры,
позволяющей вебмастеру выбрать всю необходимую функциональность,
которая будет реализовываться сервером после компиляции, при
помощи компилируемых или подключаемых модулей.
В Apache 2.0 модульная архитектура была расширена наиболее
общими функциями веб-сервера. Теперь сервер поставляется с
набором мульти-процессных модулей (МП-модулей), ответственных
за соединение с сетевыми портами компьютера, за приём запросов
и за координацию их обработки дочерними процессами.
Расширение модульной архитектуры до этого уровня даёт
два важных преимущества:
- Apache может более аккуратно и эффективно работать
в самых разных операционных системах. В частности,
версия Apache для Windows теперь работает намного более
эффективно, благодаря тому, что МП-модуль
mpm_winnt
может использовать собственные
сетевые функции Windows взамен сетевых функций уровня POSIX.
Это касается и других операционных систем, для которых
разработаны специальные МП-модули.
- Сервер может быть настрен более оптимально для нужд конкретного
сайта. Например, для сайтов, требующих значительной
масштабируемости, может быть выбран многопоточный МП-модуль,
такой как
worker
, а для сайтов, требующих
большей стабильности или совместимости со старым ПО, может
быть использован prefork
. Кроме того,
также предоставляются специальные возможности, такие как
обслуживание различных хостов процессамми с привилегиями
различных пользователей (perchild
).
На уровне пользователя МП-модули почти не отличаются от
всех остальных модулей Apache. Основное различие состоит
в том, что с сервером может быть скомпилирован один и только
один МП-модуль. Список доступных МП-модулей можно посмотреть
в каталоге модулей.

МП-модуль должен быть выбран на этапе конфигурации,
а затем скомпилирован вместе с сервером, чтобы стать
его частью. Компиляторы способны оптимизировать
многие функции при условии, что используются потоки,
однако они должны знать еще на этапе компиляции, используются
потоки или нет.
Чтобы подключить желаемый МП-модуль к Apache,
используйте аргумент --with-mpm=MPM
скрипта configure
, где MPM -
это название желаемого МП-модуля.
После того, как сервер скомпилирован, всегда можно
определить, какой МП-модуль был выбран, используя команду
./httpd -l
, которая выведет список
всех модулей, собранных вместе с сервером,
в том числе и название МП-модуля.
Приведённая ниже таблица показывает, какие МП-модули подключены
по умолчанию в различных операционных системах. В ней указан тот
МП-модуль, который будет выбран, если вы на этапе компиляции явно не
указали другой МП-модуль.