Модуль Apache MPM prefork
| Описание: | Реализует бесточечный, предварительно разветвляющийся веб-сервер |
|---|---|
| Статус: | MPM |
| Идентификатор модуля: | mpm_prefork_module |
| Файл исходного кода: | prefork.c |
Обзор
Этот модуль многопроцессорной обработки (MPM) реализует бесточечный, предварительно разветвляющийся веб-сервер. Каждый процесс сервера может обрабатывать входящие запросы, а родительский процесс управляет размером пула серверов. Он подходит для сайтов, которым требуется избежать использования потоков для совместимости с библиотеками, не поддерживающими потоки. Это также лучший MPM для изоляции каждого запроса, так что проблема с одним запросом не повлияет на другие.
Этот MPM очень саморегулируемый, поэтому редко необходимо настраивать его директивные параметры. Наиболее важно, чтобы MaxRequestWorkers было достаточно большим, чтобы обрабатывать ожидаемое количество одновременных запросов, но достаточно малым, чтобы гарантировать достаточный физический объем оперативной памяти для всех процессов.
Как это работает
Один контрольный процесс отвечает за запуск дочерних процессов, которые прослушивают подключения и обслуживают их по мере поступления. Apache httpd всегда пытается поддерживать несколько резервных или неактивных процессов сервера, которые готовы обслуживать входящие запросы. Таким образом, клиентам не нужно ждать, пока будет создан новый дочерний процесс, прежде чем их запросы смогут быть обработаны.
StartServers, MinSpareServers, MaxSpareServers, и MaxRequestWorkers регулируют то, как родительский процесс создает дочерние процессы для обработки запросов. Как правило, Apache httpd является очень саморегулируемым, поэтому большинству сайтов не нужно изменять эти директивы от их значений по умолчанию. Сайтам, которым требуется обслуживать более 256 одновременных запросов, может потребоваться увеличить MaxRequestWorkers, в то время как сайтам с ограниченной памятью может потребоваться уменьшить MaxRequestWorkers, чтобы предотвратить переполнение сервера (обмен памяти с диском и обратно).
Дополнительная информация о настройке создания процессов приведена в документации по подсказкам по производительности.
Хотя родительский процесс обычно запускается как root под Unix для привязки к порту 80, дочерние процессы запускаются Apache httpd как пользователем с меньшими привилегиями. Директивы User и Group используются для установки привилегий дочерних процессов Apache httpd. Дочерние процессы должны иметь возможность читать все содержимое, которое будет передаваться, но при этом должны иметь как можно меньше привилегий сверх этого.
MaxConnectionsPerChild управляет частотой переработки сервером процессов путем уничтожения старых и запуска новых.
Этот MPM использует мьютекс mpm-accept, чтобы сериализовать доступ к входящим подключениям, когда возникает проблема "толпы" (обычно, когда существует несколько сокетов прослушивания). Аспекты реализации этого мьютекса можно настроить с помощью директивы Mutex. Дополнительную информацию об этом мьютексе можно найти в документации по подсказкам по производительности.
Директива MaxSpareServers
| Описание: | Максимальное количество неактивных дочерних процессов сервера |
|---|---|
| Синтаксис: | MaxSpareServers number |
| Значение по умолчанию: | MaxSpareServers 10 |
| Контекст: | настройка сервера |
| Статус: | MPM |
| Модуль: | prefork |
Директива MaxSpareServers устанавливает желаемое максимальное количество неактивных дочерних процессов сервера. Неактивный процесс - это тот, который не обрабатывает запрос. Если неактивных процессов больше, чем MaxSpareServers, то родительский процесс уничтожит избыточные процессы.
Настройка этого параметра необходима только на очень загруженных сайтах. Установка этого параметра в большое значение почти всегда является плохой идеей. Если вы пытаетесь установить значение равным или меньше MinSpareServers, Apache HTTP Server автоматически скорректирует его до MinSpareServers+ 1.
См. также
Директива MinSpareServers
| Описание: | Минимальное количество неактивных дочерних процессов сервера |
|---|---|
| Синтаксис: | MinSpareServers number |
| Значение по умолчанию: | MinSpareServers 5 |
| Контекст: | настройка сервера |
| Статус: | MPM |
| Модуль: | prefork |
Директива MinSpareServers устанавливает желаемое минимальное количество неактивных дочерних процессов сервера. Неактивный процесс - это тот, который не обрабатывает запрос. Если неактивных процессов меньше, чем MinSpareServers, родительский процесс создает новых дочерних процессов: он создает один, ожидает секунду, затем создает два, ожидает секунду, затем создает четыре и так далее, увеличивая количество создаваемых процессов в геометрической прогрессии, пока не достигнет 32 процесса в секунду. Он остановится, когда удовлетворит настройку MinSpareServers.
Настройка этого параметра необходима только на очень загруженных сайтах. Установка этого параметра в большое значение почти всегда является плохой идеей.
См. также
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/prefork.html