1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
<?xml version='1.0' encoding='KOI8-R' ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<!--***************************************************-->
<!-- English revision: 1.2 -->
<!--***************************************************-->
<!-- Translator: Mikhail Filimonov (mvf@uniyar.ac.ru) -->
<!-- Reviewers: -->
<!-- Ivan Shvedov (ivan@tversu.ru) -->
<!-- Arthur Reznikov (art@altair.tversu.ru)-->
<!--***************************************************-->
<?xml-stylesheet type="text/xsl" href="./style/manual.ru.xsl"?>
<manualpage metafile="mpm.xml.meta">
<title>Мульти-процессные модули (МП-модули)</title>
<summary>
<p>Этот документ описысывает, что такое мульти-процессные модули
и как они используются в HTTP-сервере Apache.</p>
</summary>
<section id="introduction"><title>Введение</title>
<p>HTTP-сервер Apache был разработан как мощный и гибкий веб-сервер,
который может работать на самых разных платформах и в рамках
различного окружения. Различные платформы и окружения часто
требуют и различных возможностей или могут предоставлять
различные пути реализации одной и той же возможности наиболее
эффективно. Apache всегда мог работать в различных
средах окружения за счёт своей модульной архитектуры, которая
позволяет вебмастеру выбрать всю необходимую функциональность,
которая будет реализовываться сервером после компиляции, при
помощи компилируемых или подключаемых модулей.</p>
<p>В Apache 2.0 модульная архитектура была расширена наиболее
общими функциями веб-сервера. Теперь сервер поставляется с
набором мульти-процессных модулей (МП-модулей), ответственных
за соединение с сетевыми портами компьютера, за приём запросов
и за координацию их обработки дочерними процессами.</p>
<p>Расширение модульной архитектуры до этого уровня даёт
два важных преимущества:</p>
<ul>
<li>Apache может более аккуратно и эффективно работать
в самых разных операционных системах. В частности,
версия Apache для Windows теперь работает намного более
эффективно, благодаря тому, что МП-модуль
<module>mpm_winnt</module> может использовать собственные
сетевые функции Windows взамен сетевых функций уровня POSIX.
Эта касается и других операционных систем, для которых
разработаны специальные МП-модули.</li>
<li>Сервер может быть настрен более оптимально для нужд конкретного
сайта. Например, для сайтов, требующих значительной
масштабируемости, может быть выбран многопоточный МП-модуль,
такой как <module>worker</module>, а для сайтов, требующих
большей стабильности или совместимости со старым ПО, может
быть использован <module>prefork</module>. Кроме того,
также предоставляются специальные возможности, такие как
обслуживание различных хостов процессамми с привилегиями
различных пользователей (<module>perchild</module>).</li>
</ul>
<p>На уровне пользователя МП-модули почти не отличаются от
всех остальных модулей Apache. Основное различие состоит
в том, что с сервером может быть скомпилирован один и только
один МП-модуль. Список доступных МП-модулей можно посмотреть
в <a href="mod/">каталоге модулей</a>.</p>
</section>
<section id="choosing"><title>Выбор МП-модуля</title>
<p>МП-модуль должен быть выбран на этапе конфигурации,
а затем скомпилирован вместе с сервером, чтобы стать
его частью. Компиляторы способны оптимизировать
многие функции при условии, что используются потоки,
однако они должны знать еще на этапе компиляции, используются ли
потоки или нет. Поскольку некоторые МП-модули используют
потоки в ОС Unix, а другие - нет, Apache будет работать
лучше, если МП-модуль был встроен в сервер на этапе
компиляции.</p>
<p>Чтобы подключить желаемый МП-модуль к Apache,
используйте аргумент --with-mpm=<em>название</em>
скрипта <code>./configure</code>, где <em>название</em> -
это название желаемого МП-модуля.</p>
<p>Однажды откомпилировав сервер, всегда можно
определить, какой МП-модуль был выбран, используя команду
<code>./httpd -l</code>, которая выведет список
всех модулей, откомпилированных вместе с сервером,
в том числе и название МП-модуля.</p>
</section>
<section id="defaults"><title>Подключённые по умолчанию МП-модули</title>
<p>Приведённая ниже таблица показывает, какие МП-модули подключены
по умолчанию для различных операционнах систем. В ней указан тот
МП-модуль, который будет выбран, если Вы на этапе компиляции не
подключили другой МП-модуль.</p>
<table>
<tr><td>BeOS</td><td><module>beos</module></td></tr>
<tr><td>Netware</td><td><module>mpm_netware</module></td></tr>
<tr><td>OS/2</td><td><module>mpmt_os2</module></td></tr>
<tr><td>Unix</td><td><module>prefork</module></td></tr>
<tr><td>Windows</td><td><module>mpm_winnt</module></td></tr>
</table>
</section>
</manualpage>
|