Apache зарекомендовал себя как функциональный и стабильный веб-сервер, однако не стоит забывать о том, что Apache - очень "тяжелое" приложение в плане системных ресурсов сервера. Apache предоставляет возможность использовать разные варианты реализации MPM.
MPM - Multi-Processing Module, дословно "Модуль мультипроцессовой обработки". MPM используется Apache для обработки нескольких запросов одновременно несколькими процессами, то есть, по сути, занимается распаралеливанием обработки запросов.
На данный момент Apache поддерживает множество MPM. Основные из них рассмотрены в таблице.
MPM | Поддерживаемые OS | Описание | Основное назначение |
apache-ITK | Linux, FreeBSD | MPM, основанная на модели prefork. Позволяет запуск каждого виртуального хоста под отдельными uid и gid. | Хостинговые серверы, серверы, критичные к изоляции пользователей и учёту ресурсов. |
event | FreeBSD, Linux | MPM, основанная на модели worker. Обрабатывает большее количество запросов за счет освобождения основных потоков для новых запросов. | Высоконагруженные серверы. Использовать только в Apache 2.4 (для apache 2.2 - "This MPM is experimental, so it may or may not work as expected." |
netware | Novell NetWare | Мультипоточная модель, оптимизированная для работы в среде NetWare. | Серверы Novell NetWare |
perchild | Linux | Гибридная модель, с фиксированным количеством процессов. | Высоконагруженные серверы, возможность запуска дочерних процессов используя другое имя пользователя для повышения безопасности. |
peruser | Linux, FreeBSD | Модель, созданная на базе MPM perchild. Позволяет запуск каждого виртуального хоста под отдельными uid и gid. Не использует потоки. | Обеспечение повышенной безопасности, работа с библиотеками, не поддерживающими threads. |
pre-fork | Linux, FreeBSD | MPM, основанная на предварительном создании отдельных процессов, не использующая механизм threads. | Большая безопасность и стабильность за счёт изоляции процессов друг от друга, сохранение совместимости со старыми библиотеками, не поддерживающими threads. |
winnt | Microsoft Windows | Мультипоточная модель, созданная для операционной системы Microsoft Windows. | Серверы под управлением Windows Server. |
worker | Linux, FreeBSD | Гибридная мультипроцессная-мультипоточная модель. Сохраняя стабильность мультипроцессных решений, она позволяет обслуживать большое число клиентов с минимальным использованием ресурсов. | Среднезагруженные веб-серверы. |
На FreeBSD по умолчанию Apache использует pre-fork MPM. Более детально о различиях в работе MPM описывать не буду - как всегда, катастрофически не хватает времени. Из собственного опыта:
Узнать текущую версию MPM работающего сервера можно такой командой:
# httpd -V | grep mpm -D APACHE_MPM_DIR="server/mpm/prefork" |
Выполнить установку Apache с определенным MPM можно из соответствующего порта:
# ls /usr/ports/www | grep mpm apache22-event-mpm |
Re: Apache - выбор MPM
Ошибка во фразе - "Гибридная мультипроцессорно-мультипоточная модель. Сохраняя стабильность мультипроцессорных решений."
все же мультипроцессных, а не мультипроцессорных.
Re: Apache - выбор MPM
Спасибо, исправил.