worker.xml.de revision d771eceb899b21658c95cd16e7f10080801f48a3
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<!DOCTYPE modulesynopsis SYSTEM "/style/modulesynopsis.dtd">
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<?xml-stylesheet type="text/xsl" href="/style/manual.de.xsl"?>
d771eceb899b21658c95cd16e7f10080801f48a3nd<!-- English revision: 1.17 -->
6fbd2e53c97ea6976d93e0ac521adabc55e0fb73nd Copyright 2003-2004 The Apache Software Foundation
d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacdnd Licensed under the Apache License, Version 2.0 (the "License");
d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacdnd you may not use this file except in compliance with the License.
d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacdnd You may obtain a copy of the License at
d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacdnd Unless required by applicable law or agreed to in writing, software
d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacdnd distributed under the License is distributed on an "AS IS" BASIS,
d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacdnd WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacdnd See the License for the specific language governing permissions and
d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacdnd limitations under the License.
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<description>Multi-Processing-Modul, das einen Hybrid-Webserver mit
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend Multi-Thread und Multi-Prozess-Unterstützung implementiert</description>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend <p>Dieses Multi-Processing-Modul (MPM) implementiert einen Hybrid-Server
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend mit Multi-Thread und Multi-Prozess-Unterstützung. Durch die Verwendung
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend von Threads für die Bedienung von Anfragen ist er in der Lage,
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend eine große Anzahl von Anfragen mit weniger Systemressourcen als
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend ein Prozess-basierter Server zu bedienen. Er behält jedoch viel von
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend der Stabilität eines Prozess-basierten Servers bei, indem er
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend mehrere Prozesse verfügbar hält, jeden mit etlichen Threads.</p>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend <p>Die wichtigsten Direktiven zur Steuerung des MPMs sind <directive
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend module="mpm_common">ThreadsPerChild</directive>, welche die Anzahl
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend der Threads beeinflusst, die von jedem Kindprozess verwendet werden, und
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend <directive module="mpm_common">MaxClients</directive>, welche die
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend maximale Gesamtzahl an Threads regelt, die gestartet werden
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend können.</p>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<seealso><a href="/bind.html">Bestimmen der vom Apache verwendeten Adressen
d771eceb899b21658c95cd16e7f10080801f48a3nd <p>Ein einzelner Steuerprozess (der Elternprozess) ist für den
d771eceb899b21658c95cd16e7f10080801f48a3nd Start der Kindprozesse verantwortlich. Jeder Kindprozess erstellt eine
d771eceb899b21658c95cd16e7f10080801f48a3nd feste Anzahl von Server-Threads, wie durch die <directive
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend module="mpm_common">ThreadsPerChild</directive>-Direktive
d771eceb899b21658c95cd16e7f10080801f48a3nd angegeben, sowie einen "Listener-Thread", der auf Verbindungen wartet und
d771eceb899b21658c95cd16e7f10080801f48a3nd diese an einen Server-Thread zur Bearbeitung weiterreicht, sobald sie
d771eceb899b21658c95cd16e7f10080801f48a3nd eintreffen.</p>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend <p>Der Apache versucht immer, einen Vorrat von <dfn>freien</dfn> oder
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend unbeschäftigten Threads zu verwalten, die zur Bedienung
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend hereinkommender Anfragen bereit stehen. Auf diese Weise brauchen
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend Clients nicht auf die Erstellung eines neuen Threads oder Prozesses
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend zu warten, bevor ihre Anfrage bedient werden kann. Die Anzahl der
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend Prozesse, die anfangs gestartet wird, wird mit der Direktive
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend <directive module="mpm_common">StartServers</directive> festgelegt.
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend Dann, während des Betriebes, berechnet der Apache die Gesamtzahl
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend der unbeschäftigten Threads und forkt oder beendet Prozesse, um diese
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend Anzahl innerhalb der durch <directive
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend module="mpm_common">MinSpareThreads</directive> und <directive
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend module="mpm_common">MaxSpareThreads</directive> angegebenen Grenzen
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend zu halten. Da dieser Prozess sehr selbstregulierend ist, ist es nur selten
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend notwendig, die Voreinstellung dieser Direktiven zu ändern. Die
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend maximale Anzahl Clients, die gleichzeitig bedient werden kann (d.h.
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend die maximale Gesamtzahl der Threads in allen Prozessen), wird mit der
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend Direktive <directive module="mpm_common">MaxClients</directive>
d771eceb899b21658c95cd16e7f10080801f48a3nd festgelegt. Die maximale Anzahl der aktiven Kindprozesse ergibt sich aus
d771eceb899b21658c95cd16e7f10080801f48a3nd <directive module="mpm_common">MaxClients</directive> dividiert durch
d771eceb899b21658c95cd16e7f10080801f48a3nd <directive module="mpm_common">ThreadsPerChild</directive>.</p>
d771eceb899b21658c95cd16e7f10080801f48a3nd <p>Zwei Direktiven legen harte Limits für die Anzahl der aktiven
d771eceb899b21658c95cd16e7f10080801f48a3nd Kindprozesse fest und können nur geändert werden, indem der Server
d771eceb899b21658c95cd16e7f10080801f48a3nd komplett gestoppt und dann wieder neu gestartet wird. <directive
d771eceb899b21658c95cd16e7f10080801f48a3nd module="mpm_common">ServerLimit</directive> stellt die obere Grenze für
d771eceb899b21658c95cd16e7f10080801f48a3nd die Anzahl der aktiven Kindprozesse dar und muss größer oder
d771eceb899b21658c95cd16e7f10080801f48a3nd gleich dem Quotienten aus <directive
d771eceb899b21658c95cd16e7f10080801f48a3nd module="mpm_common">MaxClients</directive> und <directive
d771eceb899b21658c95cd16e7f10080801f48a3nd module="mpm_common">ThreadsPerChild</directive> sein. <directive
d771eceb899b21658c95cd16e7f10080801f48a3nd module="mpm_common">ThreadLimit</directive> ist die obere Grenze für
d771eceb899b21658c95cd16e7f10080801f48a3nd die Anzahl der Server-Threads und muss größer oder gleich
d771eceb899b21658c95cd16e7f10080801f48a3nd <directive module="mpm_common">ThreadsPerChild</directive> sein. Sofern für
d771eceb899b21658c95cd16e7f10080801f48a3nd diese Direktiven keine Voreinstellungen verwendet werden, sollten sie vor
d771eceb899b21658c95cd16e7f10080801f48a3nd allen anderen <module>worker</module>-Direktiven platziert werden.</p>
d771eceb899b21658c95cd16e7f10080801f48a3nd <p>Neben den normalen aktiven Kindprozessen gibt es möglicherweise noch
d771eceb899b21658c95cd16e7f10080801f48a3nd zusätzliche Kindprozesse, welche gerade beendet werden, wo allerdings
d771eceb899b21658c95cd16e7f10080801f48a3nd zumindest noch ein Server-Thread eine existierende Verbindung bearbeitet.
d771eceb899b21658c95cd16e7f10080801f48a3nd Obwohl die tatsächlich zu erwartende Anzahl deutlich kleiner ist,
d771eceb899b21658c95cd16e7f10080801f48a3nd können bis zu <directive module="mpm_common">MaxClients</directive>
d771eceb899b21658c95cd16e7f10080801f48a3nd solcher Prozesse auftreten. Dieses Verhalten können Sie vermeiden,
d771eceb899b21658c95cd16e7f10080801f48a3nd indem Sie die Terminierung einzelner Kindprozesse wie folgt abschalten:</p>
d771eceb899b21658c95cd16e7f10080801f48a3nd <li>setzen Sie den Wert von <directive module="mpm_common"
d771eceb899b21658c95cd16e7f10080801f48a3nd <li>setzen Sie den Wert von <directive module="mpm_common"
d771eceb899b21658c95cd16e7f10080801f48a3nd >MaxSpareThreads</directive> auf den gleichen Wert wie <directive
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend <p>Eine typische Konfiguration der Prozess-Thread-Steuerung für
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend das MPM <module>worker</module> könnte wie folgt aussehen:</p>
d771eceb899b21658c95cd16e7f10080801f48a3nd ServerLimit 16<br />
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend StartServers 2<br />
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend MaxClients 150<br />
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend MinSpareThreads 25<br />
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend MaxSpareThreads 75<br />
d771eceb899b21658c95cd16e7f10080801f48a3nd ThreadsPerChild 25
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend </example>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend <p>Während der Elternprozess unter Unix normalerweise als
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend <code>root</code> gestartet wird, um sich an Port 80 binden zu können,
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend werden die Kindprozesse und Threads unter einem weniger privilegierten
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend Benutzer gestartet. Die Direktiven <directive
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend module="mpm_common">Group</directive> werden dazu verwendet, die
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend Privilegien der Apache-Kindprozesse festzulegen. Die Kindprozesse
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend müssen in der Lage sein, alle Inhalte zu lesen, die sie ausliefern
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend sollen, sollten darüber hinaus jedoch so wenig wie möglich Rechte
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend besitzen. Zusätzlich, solange nicht <a
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend href="/suexec.html">suexec</a> verwendet wird, legen diese
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend Direktiven auch die Privilegien fest, die von CGI-Skripts
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend geerbt werden.</p>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend <p><directive module="mpm_common">MaxRequestsPerChild</directive>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend bestimmt, wie häufig der Server Prozesse erneuert, indem er alte
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend beendet und neue startet.</p>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>AcceptMutex</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
cd4620da15c004edd01caaa4716fd9cfd818b4c7nd<directivesynopsis location="mpm_common"><name>EnableExceptionHook</name>
cd4620da15c004edd01caaa4716fd9cfd818b4c7nd</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>Group</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>PidFile</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>Listen</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>ListenBacklog</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>LockFile</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>MaxClients</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>MaxMemFree</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>SendBufferSize</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>ServerLimit</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>StartServers</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>ThreadLimit</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
d771eceb899b21658c95cd16e7f10080801f48a3nd<directivesynopsis location="mpm_common"><name>ThreadStackSize</name>
d771eceb899b21658c95cd16e7f10080801f48a3nd</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend<directivesynopsis location="mpm_common"><name>User</name>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</directivesynopsis>
b8670d4ea3a3efcd12c3e1eddf68ef6fabef49fend</modulesynopsis>