Apache mpm prefork

Apache prefork — mpm или модуль мультипроцессовой обработки. Задает как именно веб-сервер работает с соединениями.

Используются три mpm: prefork, worker и event. В рамках данного материала рассмотрим первый из них.

 

Apache prefork — настройка

Секция, определяющая параметры работы prefork находится обычно в основном конфигурационном файле. Иногда она может быть вынесена в другой файл и подключаться при помощи include.

 

less /etc/apache2/apache2.conf

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of requests a server process serves

<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

 

 

mpm prefork работает с процессами и может настраиваться изменением значений в конфигурационном файле

 

StartServers — определяет сколько процессов создается при запуске Apache.

MinSpareServers — минимальное количество процессов, которое должно существовать всегда; если запросов не будет эти процессы сервером завершаться не будут и продолжат ожидать запросов

MaxSpareServers — максимальное количество процессов веб-сервера; при большом количестве запросов будут создаваться новые процессы до лимита устанавливаемого этой директивой

MaxRequestWorkers — число запросов, которые могут обслуживаться одновременно, для prefork — это максимальное количество процессов поскольку все они обслуживаются в один поток — если значение увеличивается — то же значение нужно задать директивой ServerLimit

MaxConnectionsPerChild — лимит по процессам, которое могут обслуживаться одним «сервером» за время его жизни; «сервер» (процесс) прекращает существовать обслужив установленное количество

 

Значение последнего параметра по-умолчанию равно 0, т.е. время жизни процесса не ограничено, ограничение ставят для сокращения количества памяти, утечка которой возможна.

 

 

Как выбрать значения Apache prefork

Значения подбираются в зависимости от нагрузки — если процессов много и нагрузка растет количество процессов можно уменьшить, процессы будут обрабатываться по очереди и может несколько увелиться время ответа, но нагрузка станет меньше.

 

Если же наоборот наблюдается малое время ответа — стоит увеличить количество процессов. Каждая ситуация индивидуальна и начинать следует с анализа причин нагрузки и списка активных процессов.

 

 

Другой mpm — worker оперирует не процессами как таковыми, а потоками, в которыми выполняются процессы. worker дает лучшую производительность и используется чаще всего.

Читайте про настройку Apache для работы при высоких нагрузках.