worker.xml.de revision d5d794fc2f4cc9ca6d6da17cfa2cdcd8d244bacd
beaad6ac31022179c44d88536811e9ccd9425696nd<?xml version="1.0"?>
beaad6ac31022179c44d88536811e9ccd9425696nd<!DOCTYPE modulesynopsis SYSTEM "/style/modulesynopsis.dtd">
beaad6ac31022179c44d88536811e9ccd9425696nd<?xml-stylesheet type="text/xsl" href="/style/manual.de.xsl"?>
db878466c5e95073429dda0bdd001f45e9486e16fielding<!-- English revision: 1.11 -->
db878466c5e95073429dda0bdd001f45e9486e16fielding
db878466c5e95073429dda0bdd001f45e9486e16fielding<!--
db878466c5e95073429dda0bdd001f45e9486e16fielding Copyright 2003-2004 Apache Software Foundation
db878466c5e95073429dda0bdd001f45e9486e16fielding
db878466c5e95073429dda0bdd001f45e9486e16fielding Licensed under the Apache License, Version 2.0 (the "License");
beaad6ac31022179c44d88536811e9ccd9425696nd you may not use this file except in compliance with the License.
beaad6ac31022179c44d88536811e9ccd9425696nd You may obtain a copy of the License at
beaad6ac31022179c44d88536811e9ccd9425696nd
beaad6ac31022179c44d88536811e9ccd9425696nd http://www.apache.org/licenses/LICENSE-2.0
beaad6ac31022179c44d88536811e9ccd9425696nd
beaad6ac31022179c44d88536811e9ccd9425696nd Unless required by applicable law or agreed to in writing, software
beaad6ac31022179c44d88536811e9ccd9425696nd distributed under the License is distributed on an "AS IS" BASIS,
beaad6ac31022179c44d88536811e9ccd9425696nd WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
beaad6ac31022179c44d88536811e9ccd9425696nd See the License for the specific language governing permissions and
beaad6ac31022179c44d88536811e9ccd9425696nd limitations under the License.
01c674544bd4c211141bcd9fb09b96ffc18c6c3dnd-->
01c674544bd4c211141bcd9fb09b96ffc18c6c3dnd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<modulesynopsis metafile="worker.xml.meta">
d7e78dbedfc2093a291c4e52eda53c4cbdd606a1nd<name>worker</name>
d7e78dbedfc2093a291c4e52eda53c4cbdd606a1nd<description>Multi-Processing-Modul, das einen Hybrid-Webserver mit
01c674544bd4c211141bcd9fb09b96ffc18c6c3dnd Multi-Thread und Multi-Prozess-Unterst&uuml;tzung implementiert</description>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele<status>MPM</status>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele<sourcefile>worker.c</sourcefile>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele<identifier>mpm_worker_module</identifier>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<summary>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <p>Dieses Multi-Processing-Modul (MPM) implementiert einen Hybrid-Server
7e68fce3cbd2246164e045a51ecd77f9f26680ednd mit Multi-Thread und Multi-Prozess-Unterst&uuml;tzung. Durch die Verwendung
7e68fce3cbd2246164e045a51ecd77f9f26680ednd von Threads f&uuml;r die Bedienung von Anfragen ist er in der Lage,
3726777f47ac4bba3e21b075905959bbea47e72eerikabele eine gro&szlig;e Anzahl von Anfragen mit weniger Systemressourcen als
7e68fce3cbd2246164e045a51ecd77f9f26680ednd ein Prozess-basierter Server zu bedienen. Er beh&auml;lt jedoch viel von
f1110149b5b6c28ecc39d1958d98ad9cfa8e41f3nd der Stabilit&auml;t eines Prozess-basierten Servers bei, indem er
7e68fce3cbd2246164e045a51ecd77f9f26680ednd mehrere Prozesse verf&uuml;gbar h&auml;lt, jeden mit etlichen Threads.</p>
e5343521634b71f10f0e88374d88bd5a45f75f68nd
66e48875fca2df6669dab4f2690ee36c6913c0ffnd <p>Die wichtigsten Direktiven zur Steuerung des MPMs sind <directive
66e48875fca2df6669dab4f2690ee36c6913c0ffnd module="mpm_common">ThreadsPerChild</directive>, welche die Anzahl
7e68fce3cbd2246164e045a51ecd77f9f26680ednd der Threads beeinflusst, die von jedem Kindprozess verwendet werden, und
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <directive module="mpm_common">MaxClients</directive>, welche die
3726777f47ac4bba3e21b075905959bbea47e72eerikabele maximale Gesamtzahl an Threads regelt, die gestartet werden
7e68fce3cbd2246164e045a51ecd77f9f26680ednd k&ouml;nnen.</p>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</summary>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<seealso><a href="/bind.html">Bestimmen der vom Apache verwendeten Adressen
bdbf46e4950b6f633073f803486962e82c2f086and und Ports</a></seealso>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<section id="how-it-works"><title>Arbeitsweise</title>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <p>Jeder Prozess besitzt eine feste Anzahl von Threads. Um die Last
fffabed77cd6264da64fa3d267243d1d76897049nd zu bew&auml;ltigen, passt sich der Server an, indem er die
7e68fce3cbd2246164e045a51ecd77f9f26680ednd Anzahl der Prozesse erh&ouml;ht oder verringert.</p>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <p>Ein einzelner Steuerprozess ist f&uuml;r den Start der
f4a6ce7d0d0311e4da2d4df6812263c562a05a3end Kindprozesse verantwortlich. Jeder Kindprozess erstellt eine
f4a6ce7d0d0311e4da2d4df6812263c562a05a3end feste Anzahl von Threads, wie durch die <directive
7e68fce3cbd2246164e045a51ecd77f9f26680ednd module="mpm_common">ThreadsPerChild</directive>-Direktive
7e68fce3cbd2246164e045a51ecd77f9f26680ednd angegeben. Der einzelne Thread lauscht dann auf Verbindungen und
7e68fce3cbd2246164e045a51ecd77f9f26680ednd bedient sie, sobald sie eintreffen.</p>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <p>Der Apache versucht immer, einen Vorrat von <dfn>freien</dfn> oder
7e68fce3cbd2246164e045a51ecd77f9f26680ednd unbesch&auml;ftigten Threads zu verwalten, die zur Bedienung
7e68fce3cbd2246164e045a51ecd77f9f26680ednd hereinkommender Anfragen bereit stehen. Auf diese Weise brauchen
7e68fce3cbd2246164e045a51ecd77f9f26680ednd Clients nicht auf die Erstellung eines neuen Threads oder Prozesses
7e68fce3cbd2246164e045a51ecd77f9f26680ednd zu warten, bevor ihre Anfrage bedient werden kann. Die Anzahl der
7e68fce3cbd2246164e045a51ecd77f9f26680ednd Prozesse, die anfangs gestartet wird, wird mit der Direktive
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <directive module="mpm_common">StartServers</directive> festgelegt.
7e68fce3cbd2246164e045a51ecd77f9f26680ednd Dann, w&auml;hrend des Betriebes, berechnet der Apache die Gesamtzahl
7e68fce3cbd2246164e045a51ecd77f9f26680ednd der unbesch&auml;ftigten Threads und forkt oder beendet Prozesse, um diese
7e68fce3cbd2246164e045a51ecd77f9f26680ednd Anzahl innerhalb der durch <directive
7e68fce3cbd2246164e045a51ecd77f9f26680ednd module="mpm_common">MinSpareThreads</directive> und <directive
7e68fce3cbd2246164e045a51ecd77f9f26680ednd module="mpm_common">MaxSpareThreads</directive> angegebenen Grenzen
7e68fce3cbd2246164e045a51ecd77f9f26680ednd zu halten. Da dieser Prozess sehr selbstregulierend ist, ist es nur selten
f1110149b5b6c28ecc39d1958d98ad9cfa8e41f3nd notwendig, die Voreinstellung dieser Direktiven zu &auml;ndern. Die
7e68fce3cbd2246164e045a51ecd77f9f26680ednd maximale Anzahl Clients, die gleichzeitig bedient werden kann (d.h.
7e68fce3cbd2246164e045a51ecd77f9f26680ednd die maximale Gesamtzahl der Threads in allen Prozessen), wird mit der
7e68fce3cbd2246164e045a51ecd77f9f26680ednd Direktive <directive module="mpm_common">MaxClients</directive>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd festgelegt, w&auml;hrend die maximale Anzahl Prozesse, die gestartet
e5343521634b71f10f0e88374d88bd5a45f75f68nd werden kann, von der Direktive <directive
7e68fce3cbd2246164e045a51ecd77f9f26680ednd module="mpm_common">ServerLimit</directive> bestimmt wird. <directive
bdbf46e4950b6f633073f803486962e82c2f086and module="mpm_common">ServerLimit</directive> multipliziert mit <directive
7e68fce3cbd2246164e045a51ecd77f9f26680ednd module="mpm_common">ThreadsPerChild</directive> muss gr&ouml;&szlig;er
7e68fce3cbd2246164e045a51ecd77f9f26680ednd oder gleich <directive module="mpm_common">MaxClients</directive>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele sein.</p>
11c3b428f0fc9b03f353ed9b66347c5deb567052nd
11c3b428f0fc9b03f353ed9b66347c5deb567052nd <p>Eine typische Konfiguration der Prozess-Thread-Steuerung f&uuml;r
11c3b428f0fc9b03f353ed9b66347c5deb567052nd das MPM <module>worker</module> k&ouml;nnte wie folgt aussehen:</p>
11c3b428f0fc9b03f353ed9b66347c5deb567052nd
11c3b428f0fc9b03f353ed9b66347c5deb567052nd <example>
11c3b428f0fc9b03f353ed9b66347c5deb567052nd StartServers 2<br />
11c3b428f0fc9b03f353ed9b66347c5deb567052nd MaxClients 150<br />
11c3b428f0fc9b03f353ed9b66347c5deb567052nd MinSpareThreads 25<br />
11c3b428f0fc9b03f353ed9b66347c5deb567052nd MaxSpareThreads 75<br />
11c3b428f0fc9b03f353ed9b66347c5deb567052nd ThreadsPerChild 25<br />
11c3b428f0fc9b03f353ed9b66347c5deb567052nd ServerLimit 16
7e68fce3cbd2246164e045a51ecd77f9f26680ednd </example>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <p>W&auml;hrend der Elternprozess unter Unix normalerweise als
3726777f47ac4bba3e21b075905959bbea47e72eerikabele <code>root</code> gestartet wird, um sich an Port 80 binden zu k&ouml;nnen,
7e68fce3cbd2246164e045a51ecd77f9f26680ednd werden die Kindprozesse und Threads unter einem weniger privilegierten
7e68fce3cbd2246164e045a51ecd77f9f26680ednd Benutzer gestartet. Die Direktiven <directive
7e68fce3cbd2246164e045a51ecd77f9f26680ednd module="mpm_common">User</directive> und <directive
7e68fce3cbd2246164e045a51ecd77f9f26680ednd module="mpm_common">Group</directive> werden dazu verwendet, die
7e68fce3cbd2246164e045a51ecd77f9f26680ednd Privilegien der Apache-Kindprozesse festzulegen. Die Kindprozesse
7e68fce3cbd2246164e045a51ecd77f9f26680ednd m&uuml;ssen in der Lage sein, alle Inhalte zu lesen, die sie ausliefern
7e68fce3cbd2246164e045a51ecd77f9f26680ednd sollen, sollten dar&uuml;ber hinaus jedoch so wenig wie m&ouml;glich Rechte
e5343521634b71f10f0e88374d88bd5a45f75f68nd besitzen. Zus&auml;tzlich, solange nicht <a
bdbf46e4950b6f633073f803486962e82c2f086and href="/suexec.html">suexec</a> verwendet wird, legen diese
bdbf46e4950b6f633073f803486962e82c2f086and Direktiven auch die Privilegien fest, die von CGI-Skripts
7e68fce3cbd2246164e045a51ecd77f9f26680ednd geerbt werden.</p>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd <p><directive module="mpm_common">MaxRequestsPerChild</directive>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd bestimmt, wie h&auml;ufig der Server Prozesse erneuert, indem er alte
7e68fce3cbd2246164e045a51ecd77f9f26680ednd beendet und neue startet.</p>
fd46b0fed4351924170b4db5859dc35b771ee16dnd</section>
fd46b0fed4351924170b4db5859dc35b771ee16dnd
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>AcceptMutex</name>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</directivesynopsis>
fd46b0fed4351924170b4db5859dc35b771ee16dnd<directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name>
fd46b0fed4351924170b4db5859dc35b771ee16dnd</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>Group</name>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</directivesynopsis>
fd46b0fed4351924170b4db5859dc35b771ee16dnd<directivesynopsis location="mpm_common"><name>PidFile</name>
fd46b0fed4351924170b4db5859dc35b771ee16dnd</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>Listen</name>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>ListenBacklog</name>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>LockFile</name>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>MaxClients</name>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>MaxMemFree</name>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>MaxRequestsPerChild</name>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>MaxSpareThreads</name>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>MinSpareThreads</name>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele</directivesynopsis>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele<directivesynopsis location="mpm_common"><name>ScoreBoardFile</name>
3726777f47ac4bba3e21b075905959bbea47e72eerikabele</directivesynopsis>
66e48875fca2df6669dab4f2690ee36c6913c0ffnd<directivesynopsis location="mpm_common"><name>SendBufferSize</name>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</directivesynopsis>
d3cd98e7839dd1c737c18d42a916ed20860a50e1nd<directivesynopsis location="mpm_common"><name>ServerLimit</name>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>StartServers</name>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd</directivesynopsis>
bdbf46e4950b6f633073f803486962e82c2f086and<directivesynopsis location="mpm_common"><name>ThreadLimit</name>
bdbf46e4950b6f633073f803486962e82c2f086and</directivesynopsis>
7e68fce3cbd2246164e045a51ecd77f9f26680ednd<directivesynopsis location="mpm_common"><name>ThreadsPerChild</name>
e5343521634b71f10f0e88374d88bd5a45f75f68nd</directivesynopsis>
e5343521634b71f10f0e88374d88bd5a45f75f68nd<directivesynopsis location="mpm_common"><name>User</name>
e5343521634b71f10f0e88374d88bd5a45f75f68nd</directivesynopsis>
e5343521634b71f10f0e88374d88bd5a45f75f68nd
e5343521634b71f10f0e88374d88bd5a45f75f68nd</modulesynopsis>
e5343521634b71f10f0e88374d88bd5a45f75f68nd