home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F278419_worker.xml.de < prev    next >
Extensible Markup Language  |  2004-04-17  |  9KB  |  183 lines

  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.8.2.10 -->
  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ü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ützung. Durch die Verwendung
  33.     von Threads für die Bedienung von Anfragen ist er in der Lage,
  34.     eine große Anzahl von Anfragen mit weniger Systemressourcen als
  35.     ein Prozess-basierter Server zu bedienen. Er behält jedoch viel von
  36.     der Stabilität eines Prozess-basierten Servers bei, indem er
  37.     mehrere Prozesse verfügbar hä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ö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ü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ä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ährend des Betriebes, berechnet der Apache die Gesamtzahl
  66.     der unbeschä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 ä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ür die Anzahl der aktiven
  80.     Kindprozesse fest und können nur geä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ür
  83.     die Anzahl der aktiven Kindprozesse dar und muss größ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ür
  88.     die Anzahl der Server-Threads und muss größer oder gleich
  89.     <directive module="mpm_common">ThreadsPerChild</directive> sein. Sofern fü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öglicherweise noch
  94.     zusätzliche Kindprozesse, welche gerade beendet werden, wo allerdings
  95.     zumindest noch ein Server-Thread eine existierende Verbindung bearbeitet.
  96.     Obwohl die tatsächlich zu erwartende Anzahl deutlich kleiner ist,
  97.     können bis zu <directive module="mpm_common">MaxClients</directive>
  98.     solcher Prozesse auftreten. Dieses Verhalten kö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ür
  111.     das MPM <module>worker</module> kö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ährend der Elternprozess unter Unix normalerweise als
  123.     <code>root</code> gestartet wird, um sich an Port 80 binden zu kö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üssen in der Lage sein, alle Inhalte zu lesen, die sie ausliefern
  130.     sollen, sollten darüber hinaus jedoch so wenig wie möglich Rechte
  131.     besitzen. Zusä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ä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>User</name>
  180. </directivesynopsis>
  181.  
  182. </modulesynopsis>
  183.