Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wptelegram domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u632055791/domains/itg.az/public_html/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-pagenavi domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u632055791/domains/itg.az/public_html/wp-includes/functions.php on line 6114

Notice: Функция _load_textdomain_just_in_time вызвана неправильно. Загрузка перевода для домена kirki была запущена слишком рано. Обычно это индикатор того, что какой-то код в плагине или теме запускается слишком рано. Переводы должны загружаться при выполнении действия init или позже. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.7.0.) in /home/u632055791/domains/itg.az/public_html/wp-includes/functions.php on line 6114
Apache: MPM — worker, prefork или event?

Apache: MPM — worker, prefork или event?

MPM — Multi-Processing Module, можно перевести как «Модуль мультипроцессовой обработки» (не путайте с мультипроцессорной!).

Если быть совсем кратким — MPM используется сервером Apache для обработки нескольких запросов несколькими процессами одновременно.

В настоящее время используется 2 основных варианта MPM — это Worker иPreFork. Так же, имеется сравнительно новый модуль — Event, который только недавно перешел из стадии ‘experimental‘ в ‘stable‘.

В этой статье постараемся разобраться — в чем разница между этими тремя MPM- Worker, PreFork иEvent.

Итак, начнем с модуля PreFork — на данный момент он является наиболее распространенным модулем, и по-умолчанию Apache устанавливается именно с ним.

Apache MPM PreFork запускает по отдельному процессу на каждый запрос. Иначе говоря, каждый процесс одновременно обрабатывает только 1 поток (thread) на одно соединение. Т.к. PreForkзаранее создает определенное количество процессов, которые не требуют времени на отдельный вызов при поступлении запроса к серверу и не нуждаются в выполнении маршалинга (в технологии ORPC — процесс упаковки запроса, включая параметры, в стандартный формат, пригодный для передачи по сети) во время его обработки, то такой вариант является наиболее быстродействующим, по сравнению с другими MPM. Однако, такой прирост производительности имеется только в случае, когда одновременно поступает некоторое ограниченное количество одновременных запросов, т.к. каждый из них должен ждать, пока процессор сможет их обработать. Кроме того, попытки увеличить количество одновременно запускаемых процессов способно серьезно повлиять на используемую сервером память.

Одним из важнейших преимуществ такого MPM является его большая безопасность, в силу того, что каждый процесс фактически изолирован от других. Его использование оправдано в тех случаях, когда используются модули, которые не поддерживают или плохо поддерживают, например — mod_php.

Apache MPM worker — использует многопоточную систему обработки запросов, что улучшает обработку большого количества соединений. MPM Worker запускает несколько процессов, которые, в свою очередь, запускают несколько потоков (threads). Эти «дочерние потоки», по аналогии с процессамиMPM PreFork, ожидают входящих клиентских запросов. Такой подход является менее ресурсоёмким в плане потребления оперативной памяти сервера, в отличии от процессов PreFork. Так же, улучшается обработка большого количества одновременных запросов, т.к. в отличии от  PreFork запросу необходимо только получить свободный поток, который как правило есть, что позволяет сэкономить ресурсы сервера.

К недостаткам MPM Worker относится его относительная нестабильность, по сравнению с PreFork, т.к. проблемы в одном процессе могут затронуть другие соединения.Кроме того, имейте ввиду, что Workerсвязывает каждое keep-alive соединение с потоком, а не с запросом, и в таком случае каждый поток может выполнятся значительное время, пока соединение не будет окончательно разорвано.

И последний — Apache MPM Event. По принципу работы он очень похож на MPM Worker.  Главное отличие Event от Worker в том, что он поддерживает выделенный поток для каждого установленного соединения, и передает дочерним потокам запрос только после того, как он был непосредственно сделан. И сразу же после обработки этого запроса — поток освобождается для выполнения следующего запроса. Такой вариант отлично подходит для клиентов, которые делают не частые запросы, но поддерживают долгие keep-alive соединения с сервером.

Исключением является обработка SSL-соединений, в таких случаях Event ведет себя аналогичноWorker-у.

Что касается сравнения работы Worker и PreFork — то можно увидеть сравнения например тут>>>. Как видно, разница между ними всего несколько процентов, однако — все зависит от специфики каждого сервера и обрабатываемых им запросов.

Кроме того, многие из сравнительно старых модулей Apache требуют наличия именно MPM PreFork, что следует учитывать при выборе Multi-Processing Module для вашего сервера.

Так же, существуют ещё несколько вариантов MPM — mpm-itk, mpm-peruser и другие>>>.

Напоследок — несколько полезных команд.

Узнать, какой тип MPM используется в установленном Apache можно любой из команд:

# apachectl -t -D DUMP_MODULES | grep mpm
mpm_prefork_module (static)

или

# httpd -V | grep mpm
-D APACHE_MPM_DIR=»server/mpm/prefork»

Установить Apache с выбранным MPM можно из соответствующего порта:

/usr/ports/www # ls | grep apache

apache22
apache22-event-mpm
apache22-itk-mpm
apache22-peruser-mpm
apache22-worker-mpm

Порт apache22 — установит Apache с mpm_prefork.

Ссылки по теме.

http://httpd.apache.org

http://serverfault.com

http://www.hostcms.ru

http://phpsuxx.blogspot.com

http://www.salex.ru

http://algolist.manual.ru