Spec-Zone.ru › Apache HTTP Server

Apache MPM prefork

Описание: Реализует многопоточный веб-сервер с предварительным созданием процессов
Статус: MPM
Идентификатор модуля: mpm_prefork_module
Исходный файл: prefork.c

Краткое описание

Этот модуль многопроцессной обработки (MPM) реализует веб-сервер без потоков с предварительным созданием процессов. Каждый процесс сервера может обрабатывать входящие запросы, а родительский процесс управляет размером пула серверов. Он подходит для сайтов, которым необходимо избегать использования потоков из-за несовместимости с библиотеками, не поддерживающими безопасную работу в многопоточной среде. Это также лучший MPM для изоляции каждого запроса, чтобы проблема с одним запросом не влияла на остальные.

Этот MPM обладает развитой саморегуляцией, поэтому корректировать его директивы конфигурации требуется редко. Важнее всего, чтобы MaxRequestWorkers было достаточно большим для обработки ожидаемого количества одновременных запросов, но при этом достаточно малым, чтобы всем процессам хватало физической оперативной памяти.

Как это работает

Единый управляющий процесс отвечает за запуск дочерних процессов, которые ожидают соединения и обслуживают их по мере поступления. Apache httpd всегда старается поддерживать несколько резервных или простаивающих процессов сервера, готовых обрабатывать входящие запросы. Благодаря этому клиентам не нужно ждать создания нового дочернего процесса, прежде чем их запросы будут обработаны.

Директивы StartServers, MinSpareServers, MaxSpareServers и MaxRequestWorkers регулируют создание дочерних процессов для обработки запросов родительским процессом. В целом Apache httpd обладает развитой саморегуляцией, поэтому большинству сайтов не требуется менять значения этих директив по умолчанию. Сайтам, которым нужно обрабатывать более 256 одновременных запросов, может потребоваться увеличить значение MaxRequestWorkers, а сайтам с ограниченным объёмом памяти — уменьшить MaxRequestWorkers, чтобы сервер не перешёл в режим интенсивного обмена данными (перемещения памяти на диск и обратно). Дополнительные сведения о настройке создания процессов приведены в документации по настройке производительности.

Хотя в Unix родительский процесс обычно запускается от имени root, чтобы привязаться к порту 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
  • StartServers
  • MaxSpareThreads

Директива MinSpareServers

Описание: Минимальное количество простаивающих дочерних процессов сервера
Синтаксис:
MinSpareServers number
Значение по умолчанию:
MinSpareServers 5
Контекст: конфигурация сервера
Статус: MPM
Модуль: prefork

Директива MinSpareServers задаёт желаемое минимальное количество простаивающих дочерних процессов сервера. Простаивающий процесс — это процесс, который не обрабатывает запрос. Если количество простаивающих процессов меньше MinSpareServers, родительский процесс создаёт новые дочерние процессы: сначала он запускает один процесс и ждёт секунду, затем запускает два и снова ждёт секунду, потом запускает четыре, после чего продолжает увеличивать количество в геометрической прогрессии, пока не начнёт запускать по 32 дочерних процесса в секунду. Создание процессов прекращается, когда будет выполнено условие MinSpareServers.

Настраивать этот параметр обычно требуется только на очень загруженных сайтах. Почти всегда не следует задавать для него большое значение.

См. также

  • MaxSpareServers
  • StartServers
  • MinSpareThreads

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/prefork.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API