Apache Версия 2.0 Сервера HTTP
Description: | Мультиобработка Модуля, осуществляя гибрид мультипронизывала сервер сети мультипроцесса |
---|---|
Status: | MPM |
Module Identifier: | mpm_worker_module |
Source File: | worker.c |
Этот Модуль Мультиобработки (MPM) осуществляет мультипронизывавший сервер гибридного мультипроцесса. При использовании нитей, чтобы служить запросам, в состоянии служить большому количеству запросов с меньшим количеством ресурсов системы чем сервер на основе процесса. Все же это сохраняет большую часть стабильности сервера на основе процесса, держа многократные доступные процессы, каждый со многими нитями.
самые важные директивы, используемые, чтобы управлять этим MPM
ThreadsPerChild
, который управляет числом нитей, развернутых каждым детским процессом и
MaxClients
, который управляет максимальным общим количеством нитей, которые могут быть начаты.
единственный процесс контроля (родитель) ответственен за то, что начал детские процессы. Каждый детский процесс создает неподвижное число нитей сервера как определено в
ThreadsPerChild
директива, так же как нить слушателя, которая прислушивается к связям и передает их к нити сервера для того, чтобы обработать, когда они прибывают.
Apache всегда пробует поддержать объединение
запчасть
или праздные нити сервера, которые готовы служить поступающим запросам. Таким образом, клиенты не должны ждать новых нитей или процессов, которые будут созданы прежде, чем их запросам можно служить. Число процессов, которые будут первоначально начатый, установлено
StartServers
директива. Тогда в течение операции, Apache оценивает общее количество праздных нитей во всех процессах, и вилках или убивает процессы, чтобы держать это число в пределах границ определенным
MinSpareThreads
и
MaxSpareThreads
. так как этот процесс очень автономен, редко необходимо изменить эти директивы от их ценностей по умолчанию. Максимальное число клиентов, которым можно служить одновременно (то есть, максимальное общее количество нитей во всех процессах) определено
MaxClients
директива. Максимальное число активных детских процессов определено
MaxClients
директива, разделенная на
ThreadsPerChild
директива.
две директивы устанавливают трудно пределы на числе активных детских процессов и числа нитей сервера в детском процессе, и могут только быть изменены, полностью останавливая сервер и затем начиная это снова.
ServerLimit
является твердым пределом на числе активных детских процессов, и должен быть больше чем или равным
MaxClients
директива, разделенная на
ThreadsPerChild
директива.
ThreadLimit
является твердым пределом числа нитей сервера, и должен быть больше чем или равным
ThreadsPerChild
директива. Если ценности не по умолчанию определены для этих директив, они должны появиться перед другим
worker
директивы.
в дополнение к набору активных детских процессов, могут быть дополнительные детские процессы, которые заканчиваются, но где по крайней мере одна нить сервера все еще обращается с существующей связью клиента. До
MaxClients
завершение процессов может присутствовать, хотя фактическое число может ожидаться, чтобы быть намного меньшим. Этого поведения можно избежать, повреждая завершение индивидуальных детских процессов, которое достигнуто следующим:
MaxRequestsPerChild
к нолю
MaxSpareThreads
к той же самой ценности как
MaxClients
типичная конфигурация нити процесса управляет в
worker
MPM могло смотреть следующим образом:
ServerLimit 16
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
в то время как родительский процесс обычно начинается как
root
под Unix, чтобы связывать, чтобы держать в строевой стойке 80, детские процессы и нити начаты Apache как менее - привилегированный пользователь.
User
и
Group
директивы используются, чтобы установить привилегии Apacheских детских процессов. Детские процессы должны быть в состоянии прочитать все содержание, которому будут служить, но должен иметь как немного привилегий кроме того насколько возможно. Кроме того, если
suexec
используется, эти директивы также устанавливают привилегии, которые будут унаследованы подлинниками CGI.
MaxRequestsPerChild
средства управления, как часто сервер перерабатывает процессы, убивая старые и начиная новые.