]> granicus.if.org Git - apache/blob - docs/manual/mod/worker.xml.de
a few new translations and up-to-date patches
[apache] / docs / manual / mod / worker.xml.de
1 <?xml version="1.0"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
4 <!-- English Revision: 1.19 -->
5
6 <!--
7  Copyright 2003-2004 The Apache Software Foundation
8
9  Licensed under the Apache License, Version 2.0 (the "License");
10  you may not use this file except in compliance with the License.
11  You may obtain a copy of the License at
12
13      http://www.apache.org/licenses/LICENSE-2.0
14
15  Unless required by applicable law or agreed to in writing, software
16  distributed under the License is distributed on an "AS IS" BASIS,
17  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  See the License for the specific language governing permissions and
19  limitations under the License.
20 -->
21
22 <modulesynopsis metafile="worker.xml.meta">
23 <name>worker</name>
24 <description>Multi-Processing-Modul, das einen Hybrid-Webserver mit
25   Multi-Thread und Multi-Prozess-Unterst&uuml;tzung implementiert</description>
26 <status>MPM</status>
27 <sourcefile>worker.c</sourcefile>
28 <identifier>mpm_worker_module</identifier>
29
30 <summary>
31     <p>Dieses Multi-Processing-Modul (MPM) implementiert einen Hybrid-Server
32     mit Multi-Thread und Multi-Prozess-Unterst&uuml;tzung. Durch die Verwendung
33     von Threads f&uuml;r die Bedienung von Anfragen ist er in der Lage,
34     eine gro&szlig;e Anzahl von Anfragen mit weniger Systemressourcen als
35     ein Prozess-basierter Server zu bedienen. Er beh&auml;lt jedoch viel von
36     der Stabilit&auml;t eines Prozess-basierten Servers bei, indem er
37     mehrere Prozesse verf&uuml;gbar h&auml;lt, jeden mit etlichen Threads.</p>
38
39     <p>Die wichtigsten Direktiven zur Steuerung des MPMs sind <directive
40     module="mpm_common">ThreadsPerChild</directive>, welche die Anzahl
41     der Threads beeinflusst, die von jedem Kindprozess verwendet werden, und
42     <directive module="mpm_common">MaxClients</directive>, welche die
43     maximale Gesamtzahl an Threads regelt, die gestartet werden
44     k&ouml;nnen.</p>
45 </summary>
46 <seealso><a href="../bind.html">Bestimmen der vom Apache verwendeten Adressen
47   und Ports</a></seealso>
48
49 <section id="how-it-works"><title>Arbeitsweise</title>
50     <p>Ein einzelner Steuerprozess (der Elternprozess) ist f&uuml;r den
51     Start der Kindprozesse verantwortlich. Jeder Kindprozess erstellt eine
52     feste Anzahl von Server-Threads, wie durch die <directive
53     module="mpm_common">ThreadsPerChild</directive>-Direktive
54     angegeben, sowie einen "Listener-Thread", der auf Verbindungen wartet und
55     diese an einen Server-Thread zur Bearbeitung weiterreicht, sobald sie
56     eintreffen.</p>
57
58     <p>Der Apache versucht immer, einen Vorrat von <dfn>freien</dfn> oder
59     unbesch&auml;ftigten Threads zu verwalten, die zur Bedienung
60     hereinkommender Anfragen bereit stehen. Auf diese Weise brauchen
61     Clients nicht auf die Erstellung eines neuen Threads oder Prozesses
62     zu warten, bevor ihre Anfrage bedient werden kann. Die Anzahl der
63     Prozesse, die anfangs gestartet wird, wird mit der Direktive
64     <directive module="mpm_common">StartServers</directive> festgelegt.
65     Dann, w&auml;hrend des Betriebes, berechnet der Apache die Gesamtzahl
66     der unbesch&auml;ftigten Threads und forkt oder beendet Prozesse, um diese
67     Anzahl innerhalb der durch <directive
68     module="mpm_common">MinSpareThreads</directive> und <directive
69     module="mpm_common">MaxSpareThreads</directive> angegebenen Grenzen
70     zu halten. Da dieser Prozess sehr selbstregulierend ist, ist es nur selten
71     notwendig, die Voreinstellung dieser Direktiven zu &auml;ndern. Die
72     maximale Anzahl Clients, die gleichzeitig bedient werden kann (d.h.
73     die maximale Gesamtzahl der Threads in allen Prozessen), wird mit der
74     Direktive <directive module="mpm_common">MaxClients</directive>
75     festgelegt. Die maximale Anzahl der aktiven Kindprozesse ergibt sich aus
76     <directive module="mpm_common">MaxClients</directive> dividiert durch
77     <directive module="mpm_common">ThreadsPerChild</directive>.</p>
78
79     <p>Zwei Direktiven legen harte Limits f&uuml;r die Anzahl der aktiven
80     Kindprozesse fest und k&ouml;nnen nur ge&auml;ndert werden, indem der Server
81     komplett gestoppt und dann wieder neu gestartet wird. <directive
82     module="mpm_common">ServerLimit</directive> stellt die obere Grenze f&uuml;r
83     die Anzahl der aktiven Kindprozesse dar und muss gr&ouml;&szlig;er oder
84     gleich dem Quotienten aus <directive
85     module="mpm_common">MaxClients</directive> und <directive
86     module="mpm_common">ThreadsPerChild</directive> sein. <directive
87     module="mpm_common">ThreadLimit</directive> ist die obere Grenze f&uuml;r
88     die Anzahl der Server-Threads und muss gr&ouml;&szlig;er oder gleich
89     <directive module="mpm_common">ThreadsPerChild</directive> sein. Sofern f&uuml;r
90     diese Direktiven keine Voreinstellungen verwendet werden, sollten sie vor
91     allen anderen <module>worker</module>-Direktiven platziert werden.</p>
92
93     <p>Neben den normalen aktiven Kindprozessen gibt es m&ouml;glicherweise noch
94     zus&auml;tzliche Kindprozesse, welche gerade beendet werden, wo allerdings
95     zumindest noch ein Server-Thread eine existierende Verbindung bearbeitet.
96     Obwohl die tats&auml;chlich zu erwartende Anzahl deutlich kleiner ist,
97     k&ouml;nnen bis zu <directive module="mpm_common">MaxClients</directive>
98     solcher Prozesse auftreten. Dieses Verhalten k&ouml;nnen Sie vermeiden,
99     indem Sie die Terminierung einzelner Kindprozesse wie folgt abschalten:</p>
100
101     <ul>
102        <li>setzen Sie den Wert von <directive module="mpm_common"
103        >MaxRequestsPerChild</directive> auf Null</li>
104
105        <li>setzen Sie den Wert von <directive module="mpm_common"
106        >MaxSpareThreads</directive> auf den gleichen Wert wie <directive
107        module="mpm_common">MaxClients</directive></li>
108     </ul>
109
110     <p>Eine typische Konfiguration der Prozess-Thread-Steuerung f&uuml;r
111     das MPM <module>worker</module> k&ouml;nnte wie folgt aussehen:</p>
112
113     <example>
114       ServerLimit         16<br />
115       StartServers         2<br />
116       MaxClients         150<br />
117       MinSpareThreads     25<br />
118       MaxSpareThreads     75<br />
119       ThreadsPerChild     25
120     </example>
121
122     <p>W&auml;hrend der Elternprozess unter Unix normalerweise als
123     <code>root</code> gestartet wird, um sich an Port 80 binden zu k&ouml;nnen,
124     werden die Kindprozesse und Threads unter einem weniger privilegierten
125     Benutzer gestartet. Die Direktiven <directive
126     module="mpm_common">User</directive> und <directive
127     module="mpm_common">Group</directive> werden dazu verwendet, die
128     Privilegien der Apache-Kindprozesse festzulegen. Die Kindprozesse
129     m&uuml;ssen in der Lage sein, alle Inhalte zu lesen, die sie ausliefern
130     sollen, sollten dar&uuml;ber hinaus jedoch so wenig wie m&ouml;glich Rechte
131     besitzen. Zus&auml;tzlich, solange nicht <a
132     href="../suexec.html">suexec</a> verwendet wird, legen diese
133     Direktiven auch die Privilegien fest, die von CGI-Skripts
134     geerbt werden.</p>
135
136     <p><directive module="mpm_common">MaxRequestsPerChild</directive>
137     bestimmt, wie h&auml;ufig der Server Prozesse erneuert, indem er alte
138     beendet und neue startet.</p>
139 </section>
140
141 <directivesynopsis location="mpm_common"><name>AcceptMutex</name>
142 </directivesynopsis>
143 <directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
144 </directivesynopsis>
145 <directivesynopsis location="mpm_common"><name>EnableExceptionHook</name>
146 </directivesynopsis>
147 <directivesynopsis location="mpm_common"><name>Group</name>
148 </directivesynopsis>
149 <directivesynopsis location="mpm_common"><name>PidFile</name>
150 </directivesynopsis>
151 <directivesynopsis location="mpm_common"><name>Listen</name>
152 </directivesynopsis>
153 <directivesynopsis location="mpm_common"><name>ListenBacklog</name>
154 </directivesynopsis>
155 <directivesynopsis location="mpm_common"><name>LockFile</name>
156 </directivesynopsis>
157 <directivesynopsis location="mpm_common"><name>MaxClients</name>
158 </directivesynopsis>
159 <directivesynopsis location="mpm_common"><name>MaxMemFree</name>
160 </directivesynopsis>
161 <directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
162 </directivesynopsis>
163 <directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
164 </directivesynopsis>
165 <directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
166 </directivesynopsis>
167 <directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
168 </directivesynopsis>
169 <directivesynopsis location="mpm_common"><name>SendBufferSize</name>
170 </directivesynopsis>
171 <directivesynopsis location="mpm_common"><name>ServerLimit</name>
172 </directivesynopsis>
173 <directivesynopsis location="mpm_common"><name>StartServers</name>
174 </directivesynopsis>
175 <directivesynopsis location="mpm_common"><name>ThreadLimit</name>
176 </directivesynopsis>
177 <directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
178 </directivesynopsis>
179 <directivesynopsis location="mpm_common"><name>ThreadStackSize</name>
180 </directivesynopsis>
181 <directivesynopsis location="mpm_common"><name>User</name>
182 </directivesynopsis>
183
184 </modulesynopsis>