0.6.1
by Andreas Barth
Import upstream version 2.2.3 |
1 |
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
3 |
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de"><head><!-- |
|
4 |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
5 |
This file is generated from xml source: DO NOT EDIT
|
|
6 |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
7 |
-->
|
|
8 |
<title>worker - Apache HTTP Server</title> |
|
9 |
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> |
|
10 |
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> |
|
11 |
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /> |
|
12 |
<link href="../images/favicon.ico" rel="shortcut icon" /></head> |
|
13 |
<body> |
|
14 |
<div id="page-header"> |
|
15 |
<p class="menu"><a href="../mod/">Module</a> | <a href="../mod/directives.html">Direktiven</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossar</a> | <a href="../sitemap.html">Seitenindex</a></p> |
|
16 |
<p class="apache">Apache HTTP Server Version 2.2</p> |
|
17 |
<img alt="" src="../images/feather.gif" /></div> |
|
18 |
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div> |
|
19 |
<div id="path"> |
|
20 |
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP-Server</a> > <a href="http://httpd.apache.org/docs/">Dokumentation</a> > <a href="../">Version 2.2</a> > <a href="./">Module</a></div> |
|
21 |
<div id="page-content"> |
|
22 |
<div id="preamble"><h1>Apache-MPM worker</h1> |
|
23 |
<div class="toplang"> |
|
24 |
<p><span>Verfügbare Sprachen: </span><a href="../de/mod/worker.html" title="Deutsch"> de </a> | |
|
25 |
<a href="../en/mod/worker.html" hreflang="en" rel="alternate" title="English"> en </a> | |
|
26 |
<a href="../ja/mod/worker.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a></p> |
|
27 |
</div> |
|
28 |
<table class="module"><tr><th><a href="module-dict.html#Description">Beschreibung:</a></th><td>Multi-Processing-Modul, das einen Hybrid-Webserver mit |
|
29 |
Multi-Thread und Multi-Prozess-Unterstützung implementiert</td></tr> |
|
30 |
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>MPM</td></tr> |
|
31 |
<tr><th><a href="module-dict.html#ModuleIdentifier">Modulbezeichner:</a></th><td>mpm_worker_module</td></tr> |
|
32 |
<tr><th><a href="module-dict.html#SourceFile">Quelltext-Datei:</a></th><td>worker.c</td></tr></table> |
|
33 |
<h3>Zusammenfassung</h3> |
|
34 |
||
35 |
<p>Dieses Multi-Processing-Modul (MPM) implementiert einen Hybrid-Server |
|
36 |
mit Multi-Thread und Multi-Prozess-Unterstützung. Durch die Verwendung |
|
37 |
von Threads für die Bedienung von Anfragen ist er in der Lage, |
|
38 |
eine große Anzahl von Anfragen mit weniger Systemressourcen als |
|
39 |
ein Prozess-basierter Server zu bedienen. Er behält jedoch viel von |
|
40 |
der Stabilität eines Prozess-basierten Servers bei, indem er |
|
41 |
mehrere Prozesse verfügbar hält, jeden mit etlichen Threads.</p> |
|
42 |
||
43 |
<p>Die wichtigsten Direktiven zur Steuerung des MPMs sind <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>, welche die Anzahl |
|
44 |
der Threads beeinflusst, die von jedem Kindprozess verwendet werden, und |
|
45 |
<code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code>, welche die |
|
46 |
maximale Gesamtzahl an Threads regelt, die gestartet werden |
|
47 |
können.</p> |
|
48 |
</div> |
|
49 |
<div id="quickview"><h3 class="directives">Direktiven</h3> |
|
50 |
<ul id="toc"> |
|
51 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#acceptmutex">AcceptMutex</a></li> |
|
52 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory</a></li> |
|
53 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#enableexceptionhook">EnableExceptionHook</a></li> |
|
54 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#group">Group</a></li> |
|
55 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listen">Listen</a></li> |
|
56 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#listenbacklog">ListenBacklog</a></li> |
|
57 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#lockfile">LockFile</a></li> |
|
58 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxclients">MaxClients</a></li> |
|
59 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxmemfree">MaxMemFree</a></li> |
|
60 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></li> |
|
61 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#maxsparethreads">MaxSpareThreads</a></li> |
|
62 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#minsparethreads">MinSpareThreads</a></li> |
|
63 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#pidfile">PidFile</a></li> |
|
64 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#receivebuffersize">ReceiveBufferSize</a></li> |
|
65 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#scoreboardfile">ScoreBoardFile</a></li> |
|
66 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#sendbuffersize">SendBufferSize</a></li> |
|
67 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#serverlimit">ServerLimit</a></li> |
|
68 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#startservers">StartServers</a></li> |
|
69 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadlimit">ThreadLimit</a></li> |
|
70 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadsperchild">ThreadsPerChild</a></li> |
|
71 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#threadstacksize">ThreadStackSize</a></li> |
|
72 |
<li><img alt="" src="../images/right.gif" /> <a href="mpm_common.html#user">User</a></li> |
|
73 |
</ul> |
|
74 |
<h3>Themen</h3> |
|
75 |
<ul id="topics"> |
|
76 |
<li><img alt="" src="../images/down.gif" /> <a href="#how-it-works">Arbeitsweise</a></li> |
|
77 |
</ul><h3>Siehe auch</h3> |
|
78 |
<ul class="seealso"> |
|
79 |
<li><a href="../bind.html">Bestimmen der vom Apache verwendeten Adressen |
|
80 |
und Ports</a></li> |
|
81 |
</ul></div> |
|
82 |
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> |
|
83 |
<div class="section"> |
|
84 |
<h2><a name="how-it-works" id="how-it-works">Arbeitsweise</a></h2> |
|
85 |
<p>Ein einzelner Steuerprozess (der Elternprozess) ist für den |
|
86 |
Start der Kindprozesse verantwortlich. Jeder Kindprozess erstellt eine |
|
87 |
feste Anzahl von Server-Threads, wie durch die <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>-Direktive |
|
88 |
angegeben, sowie einen "Listener-Thread", der auf Verbindungen wartet und |
|
89 |
diese an einen Server-Thread zur Bearbeitung weiterreicht, sobald sie |
|
90 |
eintreffen.</p> |
|
91 |
||
92 |
<p>Der Apache versucht immer, einen Vorrat von <dfn>freien</dfn> oder |
|
93 |
unbeschäftigten Threads zu verwalten, die zur Bedienung |
|
94 |
hereinkommender Anfragen bereit stehen. Auf diese Weise brauchen |
|
95 |
Clients nicht auf die Erstellung eines neuen Threads oder Prozesses |
|
96 |
zu warten, bevor ihre Anfrage bedient werden kann. Die Anzahl der |
|
97 |
Prozesse, die anfangs gestartet wird, wird mit der Direktive |
|
98 |
<code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> festgelegt. |
|
99 |
Dann, während des Betriebes, berechnet der Apache die Gesamtzahl |
|
100 |
der unbeschäftigten Threads und forkt oder beendet Prozesse, um diese |
|
101 |
Anzahl innerhalb der durch <code class="directive"><a href="../mod/mpm_common.html#minsparethreads">MinSpareThreads</a></code> und <code class="directive"><a href="../mod/mpm_common.html#maxsparethreads">MaxSpareThreads</a></code> angegebenen Grenzen |
|
102 |
zu halten. Da dieser Prozess sehr selbstregulierend ist, ist es nur selten |
|
103 |
notwendig, die Voreinstellung dieser Direktiven zu ändern. Die |
|
104 |
maximale Anzahl Clients, die gleichzeitig bedient werden kann (d.h. |
|
105 |
die maximale Gesamtzahl der Threads in allen Prozessen), wird mit der |
|
106 |
Direktive <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> |
|
107 |
festgelegt. Die maximale Anzahl der aktiven Kindprozesse ergibt sich aus |
|
108 |
<code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> dividiert durch |
|
109 |
<code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code>.</p> |
|
110 |
||
111 |
<p>Zwei Direktiven legen harte Limits für die Anzahl der aktiven |
|
112 |
Kindprozesse fest und können nur geändert werden, indem der Server |
|
113 |
komplett gestoppt und dann wieder neu gestartet wird. <code class="directive"><a href="../mod/mpm_common.html#serverlimit">ServerLimit</a></code> stellt die obere Grenze für |
|
114 |
die Anzahl der aktiven Kindprozesse dar und muss größer oder |
|
115 |
gleich dem Quotienten aus <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> und <code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> sein. <code class="directive"><a href="../mod/mpm_common.html#threadlimit">ThreadLimit</a></code> ist die obere Grenze für |
|
116 |
die Anzahl der Server-Threads und muss größer oder gleich |
|
117 |
<code class="directive"><a href="../mod/mpm_common.html#threadsperchild">ThreadsPerChild</a></code> sein. Sofern für |
|
118 |
diese Direktiven keine Voreinstellungen verwendet werden, sollten sie vor |
|
119 |
allen anderen <code class="module"><a href="../mod/worker.html">worker</a></code>-Direktiven platziert werden.</p> |
|
120 |
||
121 |
<p>Neben den normalen aktiven Kindprozessen gibt es möglicherweise noch |
|
122 |
zusätzliche Kindprozesse, welche gerade beendet werden, wo allerdings |
|
123 |
zumindest noch ein Server-Thread eine existierende Verbindung bearbeitet. |
|
124 |
Obwohl die tatsächlich zu erwartende Anzahl deutlich kleiner ist, |
|
125 |
können bis zu <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> |
|
126 |
solcher Prozesse auftreten. Dieses Verhalten können Sie vermeiden, |
|
127 |
indem Sie die Terminierung einzelner Kindprozesse wie folgt abschalten:</p> |
|
128 |
||
129 |
<ul> |
|
130 |
<li>setzen Sie den Wert von <code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code> auf Null</li> |
|
131 |
||
132 |
<li>setzen Sie den Wert von <code class="directive"><a href="../mod/mpm_common.html#maxsparethreads">MaxSpareThreads</a></code> auf den gleichen Wert wie <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code></li> |
|
133 |
</ul> |
|
134 |
||
135 |
<p>Eine typische Konfiguration der Prozess-Thread-Steuerung für |
|
136 |
das MPM <code class="module"><a href="../mod/worker.html">worker</a></code> könnte wie folgt aussehen:</p> |
|
137 |
||
138 |
<div class="example"><p><code> |
|
139 |
ServerLimit 16<br /> |
|
140 |
StartServers 2<br /> |
|
141 |
MaxClients 150<br /> |
|
142 |
MinSpareThreads 25<br /> |
|
143 |
MaxSpareThreads 75<br /> |
|
144 |
ThreadsPerChild 25 |
|
145 |
</code></p></div> |
|
146 |
||
147 |
<p>Während der Elternprozess unter Unix normalerweise als |
|
148 |
<code>root</code> gestartet wird, um sich an Port 80 binden zu können, |
|
149 |
werden die Kindprozesse und Threads unter einem weniger privilegierten |
|
150 |
Benutzer gestartet. Die Direktiven <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> und <code class="directive"><a href="../mod/mpm_common.html#group">Group</a></code> werden dazu verwendet, die |
|
151 |
Privilegien der Apache-Kindprozesse festzulegen. Die Kindprozesse |
|
152 |
müssen in der Lage sein, alle Inhalte zu lesen, die sie ausliefern |
|
153 |
sollen, sollten darüber hinaus jedoch so wenig wie möglich Rechte |
|
154 |
besitzen. Zusätzlich, solange nicht <code class="program"><a href="../programs/suexec.html">suexec</a></code> verwendet wird, legen diese |
|
155 |
Direktiven auch die Privilegien fest, die von CGI-Skripts |
|
156 |
geerbt werden.</p> |
|
157 |
||
158 |
<p><code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code> |
|
159 |
bestimmt, wie häufig der Server Prozesse erneuert, indem er alte |
|
160 |
beendet und neue startet.</p> |
|
161 |
</div> |
|
162 |
</div> |
|
163 |
<div class="bottomlang"> |
|
164 |
<p><span>Verfügbare Sprachen: </span><a href="../de/mod/worker.html" title="Deutsch"> de </a> | |
|
165 |
<a href="../en/mod/worker.html" hreflang="en" rel="alternate" title="English"> en </a> | |
|
166 |
<a href="../ja/mod/worker.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a></p> |
|
167 |
</div><div id="footer"> |
|
168 |
<p class="apache">Copyright 2006 The Apache Software Foundation.<br />Lizenziert unter der <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> |
|
169 |
<p class="menu"><a href="../mod/">Module</a> | <a href="../mod/directives.html">Direktiven</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossar</a> | <a href="../sitemap.html">Seitenindex</a></p></div> |
|
170 |
</body></html> |