konfiguriert wurde. Sie aktiviert einen Hook, der es externen Modulen
erlaubt, sich dort einzuhängen und nach dem Absturz eines
Kindprozesses noch Aktionen durchzuführen.</
p>
<
p>Es existieren bereits zwei Module, <
code>mod_whatkilledus</
code> und
<
code>mod_backtrace</
code>, welche diesen Hook verwenden. Weitere
Informationen hierzu finden Sie auf Jeff Trawicks <
a >EnableExceptionHook-Seite</
a>.</
p>
<
description>Benutzergruppe, unter welcher der Server Anfragen
beantwortet</
description>
<
syntax>Group <
var>Unix-Gruppe</
var></
syntax>
<
default>Group #-1</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>mpmt_os2</
module><
module>perchild</
module><
module>prefork</
module>
<
module>threadpool</
module><
module>worker</
module></
modulelist>
<
compatibility>Seit Apache 2.0 nur in der globalen Server-Konfiguration
gültig</
compatibility>
<
p>Die Direktive <
directive>Group</
directive> bestimmt die
Benutzergruppe, unter welcher der Server Anfragen beantwortet.
Um diese Direktive zu verwenden, muss der Server als <
code>root</
code> gestartet
werden. Wenn Sie den Server unter einem nicht-root-Benutzer starten,
wird er nicht zur angegebenen Gruppe wechseln können und statt
dessen weiter mit der Gruppe des ursprünglichen Benutzers
laufen. <
var>Unix-Gruppe</
var> kann sein:</
p>
<
dd>Verweist auf die durch den Namen angegebene Gruppe.</
dd>
<
dt><
code>#</
code> gefolgt von einer Gruppennummer.</
dt>
<
dd>Verweist auf die durch ihre Nummer angegebene Gruppe.</
dd>
<
example><
title>Beispiel</
title>
<
p>Es wird empfohlen, dass Sie eine neue Gruppe speziell zum Betrieb
des Servers erstellen. Einige Administratoren verwenden den Benutzer
<
code>nobody</
code>. Dies ist jedoch nicht immer möglich
<
note type="warning"><
title>Sicherheit</
title>
<
p>Setzen Sie <
directive>Group</
directive> (oder <
directive module="mpm_common">User</
directive>) nicht auf <
code>root</
code>,
solange Sie nicht ganz genau wissen, was Sie tun und welche Gefahren
<
p>Wichtiger Hinweis: Die Verwendung der Direktive innerhalb von
<
directive module="core" type="section">VirtualHost</
directive>
wird nicht länger unterstützt. Benutzen Sie <
directive module="mod_suexec">SuexecUserGroup</
directive> um Ihren Server
für <
program>suexec</
program> einzurichten.</
p>
<
note><
title>Anmerkung</
title>
<
p>Obwohl die Direktive <
directive>Group</
directive> in den MPMs
<
module>beos</
module> und <
module>mpmt_os2</
module> existiert, ist
sie dort tatsächlich eine Leeranweisung und exisitert nur
aus Kompatibilitätsgründen.</
p>
<
description>Datei, in welcher der Server die Prozess-ID des Daemons
<
syntax>PidFile <
var>Dateiname</
var></
syntax>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>mpm_winnt</
module><
module>mpmt_os2</
module>
<
module>perchild</
module><
module>prefork</
module>
<
module>threadpool</
module><
module>worker</
module></
modulelist>
<
p>Die Direktive <
directive>PidFile</
directive> bestimmt die Datei,
in welcher der Server die Prozess-ID des Daemons ablegt. Wenn der
Dateiname nicht absolut angegeben wird, wird er relativ zu
<
directive module="core">ServerRoot</
directive> interpretiert.</
p>
<
example><
title>Beispiel</
title>
<
p>Es ist oft hilfreich, dem Server ein Signal senden zu können,
damit er seine <
directive module="core">ErrorLog</
directive>s und
<
directive module="mod_log_config">TransferLog</
directive>s
schließt und dann neu öffnet und seine
Konfigurationsdateien neu einliest. Dies kann durch Senden eines
SIGHUP-Signals (kill -1) an die Prozess-ID geschehen, die im
<
directive>PidFile</
directive> eingetragen ist.</
p>
<
p>Die <
directive>PidFile</
directive>-Datei unterliegt den
gleichen Warnungen über die Ablage von Protokolldateien
<
note><
title>Anmerkung</
title>
<
p>Ab Apache 2 wird empfohlen, nur das Skript <
program>
apachectl</
program> zum (Neu-)Starten und Stoppen des Servers zu
<
description>IP-Adressen und Ports, an denen der Server lauscht</
description>
<
syntax>Listen [<
var>IP-Addresse</
var>:]<
var>Port</
var></
syntax>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>mpm_netware</
module><
module>mpm_winnt</
module>
<
module>mpmt_os2</
module><
module>perchild</
module>
<
module>prefork</
module><
module>threadpool</
module><
module>worker</
module>
<
compatibility>Seit Apache 2.0 vorgeschrieben</
compatibility>
<
p>Die Direktive <
directive>Listen</
directive> weist den Apache an,
nur an den angegebenen IP-Adressen oder Ports zu lauschen.
Standardmäßig antwortet er auf alle Anfragen an allen
IP-Interfaces. <
directive>Listen</
directive> ist nun eine notwendige
Anweisung. Wenn sie nicht in der Konfigurationsdatei enthalten ist,
wird der Server-Start fehlschlagen. Dies ist eine Änderung
gegenüber früheren Versionen des Apache.</
p>
<
p>Die Direktive <
directive>Listen</
directive> weist den Server an,
ankommende Anfragen am angegebenen Port oder der
Kombination aus Adresse und Port entgegenzunehmen. Wenn nur eine Portnummer
angegeben ist, dann lauscht der Server am angegebenen Port an allen
Interfaces. Wenn sowohl eine IP-Adresse als auch ein Port angegeben
sind, dann lauscht der Server am angegeben Port und Interface.</
p>
<
p>Es können mehrere <
directive>Listen</
directive>-Anweisungen
verwendet werden, um eine Reihe von Adressen und Port anzugeben, an
denen gelauscht werden soll. Der Server antwortet auf Anfragen von
jedem der aufgeführten Adressen und Ports.</
p>
<
p>Um beispielsweise den Server Verbindungen an den beiden Ports 80 und
8000 annehmen zu lassen, verwenden Sie:</
p>
<
p>Um den Server Verbindungen an zwei angegebenen Interfaces und Ports
annehmen zu lassen, verwenden Sie:</
p>
Listen 192.170.2.1:80<
br />
<
p>IPv6-Adressen müssen wie in dem folgenden Beispiel in eckige
Klammern eingeschlossen werden:</
p>
Listen [2001:db8::a00:20ff:fea7:ccea]:80
<
note><
title>Fehlermöglichkeit</
title>
Mehrere <
directive>Listen</
directive>-Direktiven für gleiche
IP-Adresse und Port führen zur Fehlermeldung
<
code>Address already in use</
code> <
transnote>Adresse schon in
<
seealso><
a href="/bind.html">Bestimmen, welche Adressen und Ports der
Apache verwendet</
a></
seealso>
<
name>ListenBackLog</
name>
<
description>Maximale Länge der Warteschlange schwebender
Verbindungen</
description>
<
syntax>ListenBacklog <
var>backlog</
var></
syntax>
<
default>ListenBacklog 511</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>mpm_netware</
module><
module>mpm_winnt</
module>
<
module>mpmt_os2</
module><
module>perchild</
module><
module>prefork</
module>
<
module>threadpool</
module><
module>worker</
module></
modulelist>
<
p>Die maximale Länge der Warteschlange schwebender Verbindungen.
Üblicherweise ist keine Feineinstellung notwendig oder sinnvoll,
auf einigen System kann es jedoch gewünscht sein, diesen Wert bei
TCP-SYN-Angriffen zu erhöhen. Beachten Sie auch die Beschreibung des
backlog-Parameters der Systemfunktion <
code>listen(2)</
code>.</
p>
<
p>Der Wert wird vom Betriebssystem oft auf eine niedrigere
Einstellung begrenzt. Dies variiert von Betriebssystem zu Betriebssystem.
Beachten Sie auch, dass viele Betriebssyteme nicht genau beachten,
was für backlog angegeben ist, jedoch einen Wert basierend auf der
Angabe (normalerweiseweise jedoch größer als diese) verwenden.</
p>
<
description>Ablageort der Lock-Datei für die Serialisierung von
entgegengenommenen Anfragen</
description>
<
syntax>LockFile <
var>Dateiname</
var></
syntax>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>leader</
module><
module>perchild</
module>
<
module>prefork</
module><
module>threadpool</
module><
module>worker</
module>
<
p>Die Direktive <
directive>LockFile</
directive> legt den Pfad zur
Lock-Datei fest, die verwendet wird, wenn der Apache mit einer der
<
directive module="mpm_common">AcceptMutex</
directive>-Einstellungen
<
code>fcntl</
code> oder <
code>flock</
code> verwendet wird. Die Anweisung
sollte normalerweise bei der Voreinstellung belassen werden.
Der Hauptgrund, sie zu ändern, ist, wenn das
<
code>logs</
code>-Verzeichnis auf einem per NFS-eingebundenen Laufwerk
liegt, da <
strong>die Lock-Datei auf einer lokalen Platte abgelegt sein
muss</
strong>. Die PID <
transnote>Prozess-ID</
transnote> des
Hauptserverprozesses wird automatisch an den Dateinamen angehängt.</
p>
<
note type="warning"><
title>Sicherheit</
title>
<
p>Es ist am besten, die Ablage in einem allgemein <
transnote>für
jedermann</
transnote> beschreibbaren
Verzeichnis wie <
code>/
var/
tmp</
code> <
em>zu vermeiden</
em>, da
ein Denial-of-Servide-Angriff gestartet werden könnte und der
Server am Start gehindert werden könnte, indem eine Lock-Datei
mit dem gleichen Namen erstellt wird, wie der Server sie zu erstellen
versuchen würde.</
p>
<
seealso><
directive module="mpm_common">AcceptMutex</
directive></
seealso>
<
description>Maximale Anzahl der Kindprozesse, die zur Bedienung von Anfragen
gestartet wird</
description>
<
syntax>MaxClients <
var>Anzahl</
var></
syntax>
<
default>Für Details siehe Beschreibung</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>prefork</
module><
module>threadpool</
module><
module>worker</
module>
<
p>Die Direktive <
directive>MaxClients</
directive> setzt die Grenze
für die Anzahl gleichzeitig bedienter Anfragen. Jeder
Verbindungsversuch oberhalb der <
directive >MaxClients</
directive>-Begrenzung wird üblicherweise in eine
Warteschlange gestellt, bis zu einer Anzahl basierend auf der
<
directive module="mpm_common">ListenBacklog</
directive>-Anweisung.
Sobald ein Kindprozess am Ende einer anderen Anfrage freigegeben wird,
wird die Verbindung bedient.</
p>
<
p>Für Server ohne Thread-Unterstützung (<
em>
z.B.</
em>
<
module>prefork</
module>) wird <
directive>MaxClients</
directive> als
maximale Anzahl der Kindprozesse verstanden, die zur Bedienung von
Anfragen gestartet werden. Die Voreinstellung ist <
code>256</
code>. Um
diesen Wert zu erhöhen, muss auch <
directive module="mpm_common">ServerLimit</
directive> angehoben werden.</
p>
<
p>Bei Servern mit Thread-Unterstützung und bei Hybrid-Servern
(<
em>
z.B.</
em> <
module>beos</
module> oder <
module>worker</
module>)
begrenzt <
directive>MaxClients</
directive> die Gesamtzahl der Threads,
die für die Bedienung von Anfragen verfügbar sind.
Die Voreinstellung für <
module>beos</
module> ist <
code>50</
code>.
Bei Hybrid-MPMs ist die Voreinstellung <
code>16</
code> (<
directive module="mpm_common">ServerLimit</
directive>) multipliziert mit
dem Wert <
code>25</
code> (<
directive module="mpm_common" >ThreadsPerChild</
directive>). Um <
directive>MaxClients</
directive>
auf einen Wert zu erhöhen, der mehr als 16 Prozesse erfordert,
müssen Sie daher auch <
directive module="mpm_common" >ServerLimit</
directive> anheben.</
p>
<
description>Maximale Menge des Arbeitsspeichers, den die
Haupt-Zuteilungsroutine verwalten darf, ohne <
code>free()</
code>
<
syntax>MaxMemFree <
var>KBytes</
var></
syntax>
<
default>MaxMemFree 0</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>mpm_netware</
module><
module>prefork</
module>
<
module>threadpool</
module><
module>worker</
module><
module>mpm_winnt</
module></
modulelist>
<
p>Die Direktive <
directive>MaxMemFree</
directive> gibt die maximale
Menge freier Kilobytes an, welche die Haupt-Zuteilungsroutine verwalten
darf, ohne <
code>free()</
code> aufzurufen. Wenn keine Angabe gemacht wird,
oder Null angegeben ist, wird dieser Wert nicht eingeschränkt.</
p>
<
name>MaxRequestsPerChild</
name>
<
description>Obergrenze für die Anzahl von Anfragen, die ein einzelner
Kindprozess während seines Lebens bearbeitet</
description>
<
syntax>MaxRequestsPerChild <
var>number</
var></
syntax>
<
default>MaxRequestsPerChild 10000</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>leader</
module><
module>mpm_netware</
module>
<
module>mpm_winnt</
module><
module>mpmt_os2</
module>
<
module>perchild</
module><
module>prefork</
module>
<
module>threadpool</
module><
module>worker</
module></
modulelist>
<
p>Die Direktive <
directive>MaxRequestsPerChild</
directive> legt die
Grenze für die Anzahl von Anfragen fest, die ein einzelner
Kinprozess während seines Lebens bearbeitet. Nach
<
directive>MaxRequestsPerChild</
directive> Anfragen stirbt der
Kindprozess. Wenn <
directive>MaxRequestsPerChild</
directive>
<
code>0</
code> ist, endet der Prozess niemals.</
p>
<
note><
title>Abweichende Voreinstellungen</
title>
<
p>Die Voreinstellung für <
module>mpm_netware</
module> und
<
module>mpm_winnt</
module> ist <
code>0</
code>.</
p>
<
p>Die Begrenzung von <
directive>MaxRequestsPerChild</
directive> auf einen
Wert ungleich Null hat zwei vorteilhafte Auswirkungen:</
p>
<
li>sie begrenzt die Menge an Arbeitsspeicher, die ein Prozess
durch (versehentliche) Speicherlecks verbrauchen kann.</
li>
<
li>das Festlegen einer endlichen Lebensdauer von Prozessen hilft, die
Anzahl von Prozessen zu reduzieren, wenn die Serverlast
<
note><
title>Anmerkung</
title>
<
p>Bei <
directive module="core">KeepAlive</
directive>-Anfragen
wird nur die erste Anfrage für diese begrenzung gezählt.
Eigentlich wird nur die Begrenzung für die Anzahl der
<
em>Verbindungen</
em> pro Kindprozess geändert.</
p>
<
name>MaxSpareThreads</
name>
<
description>Maximale Anzahl unbeschäftigter Threads</
description>
<
syntax>MaxSpareThreads <
var>Anzahl</
var></
syntax>
<
default>Für Details siehe Beschreibung</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>mpm_netware</
module><
module>mpmt_os2</
module>
<
module>perchild</
module><
module>threadpool</
module><
module>worker</
module>
<
p>Maximale Anzahl unbeschäftigter Threads. Die verschiedenen MPMs
behandeln diese Anweisung unterschiedlich.</
p>
<
p>Die Voreinstellung für <
module>perchild</
module> ist
<
code>MaxSpareThreads 10</
code>. Das MPM überwacht die Anzahl der
unbeschäftigten Threads auf der Basis einzelner Kindprozesse. Wenn
zu viele unbeschäftigte Threads in einem Kindprozess existieren,
beendet der Server Threads innerhalb dieses Kindprozesses.</
p>
<
p>Die Voreinstellung für <
module>worker</
module>,
<
module>leader</
module> und <
module>threadpool</
module> ist
<
code>MaxSpareThreads 250</
code>. Diese MPMs behandeln Threads
auf einer serverweiten Basis. Wenn zu viele unbeschäftigte Threads
im Server existieren, dann werden solange Kindprozesse beendet, bis
die Anzahl der unbeschäftigten Threads kleiner als der
<
p>Die Voreinstellung für <
module>mpm_netware</
module> ist
<
code>MaxSpareThreads 100</
code>. Da dieses MPM nur einen einzigen
Prozess ausführt, ist die Zählung überschüssiger
Threads ebenfalls serverweit.</
p>
<
p><
module>beos</
module> and <
module>mpmt_os2</
module> arbeiten
ähnlich wie <
module>mpm_netware</
module>. Die Voreinstellung
für <
module>beos</
module> ist <
code>MaxSpareThreads 50</
code>.
Die Voreinstellung für <
module>mpmt_os2</
module> ist
<
note><
title>Restriktionen</
title>
<
p>Der Wertebereich von <
directive>MaxSpareThreads</
directive>
ist eingeschränkt. Apache korrigiert den angegebenen Wert
automatisch gemäß den folgenden Regeln:</
p>
<
li><
module>perchild</
module> verlangt, dass <
directive >MaxSpareThreads</
directive> kleiner oder gleich <
directive module="mpm_common">ThreadLimit</
directive> ist.</
li>
<
li><
module>mpm_netware</
module> verlangt einen Wert größer
als <
directive module="mpm_common">MinSpareThreads</
directive>.</
li>
<
li>Bei <
module>leader</
module>, <
module>threadpool</
module> und
<
module>worker</
module> muss der Wert größer oder gleich
module="mpm_common">MinSpareThreads</
directive> und
<
directive module="mpm_common">ThreadsPerChild</
directive> sein.</
li>
<
seealso><
directive module="mpm_common">MinSpareThreads</
directive></
seealso>
<
seealso><
directive module="mpm_common">StartServers</
directive></
seealso>
<
name>MinSpareThreads</
name>
<
description>Minimale Anzahl unbeschäftigter Threads, die zur
Bedienung von Anfragespitzen zur Verfügung stehen</
description>
<
syntax>MinSpareThreads <
var>Anzahl</
var></
syntax>
<
default>Für Details siehe Beschreibung</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>mpm_netware</
module><
module>mpmt_os2</
module>
<
module>perchild</
module><
module>threadpool</
module><
module>worker</
module>
<
p>Minimale Anzahl unbeschäftigter Threads, um Anfragespitzen
zu bedienen. Die verschiedenen MPMs behandeln die Anweisung
<
p><
module>perchild</
module> verwendet die Voreinstellung
<
code>MinSpareThreads 5</
code> und überwacht die Anzahl der
unbeschäftigten Threads auf der Basis einzelner Kindprozesse. Wenn
in einem Kindprozess nicht genügend unbeschäftigte
Threads vorhanden sind, erstellt der Server neue Threads innerhalb
dieses Kindprozesses. Wenn Sie also <
directive module="perchild" >NumServers</
directive> auf <
code>10</
code> und <
directive >MinSpareThreads</
directive> auf einen Wert von <
code>5</
code> setzen,
haben Sie mindestens 50 unbeschäftigte Threads auf Ihrem
<
p><
module>worker</
module>, <
module>leader</
module> und
<
module>threadpool</
module> verwenden eine Voreinstellung von
<
code>MinSpareThreads 75</
code> und behandeln unbeschäftigte
Threads auf serverweiter Basis. Wenn nicht genügend
unbeschäftigte Threads im Server vorhanden sind, dann
werden solange Kindprozesse erzeugt, bis die Anzahl unbeschäftigter
Threads größer als der angegebene Wert ist.</
p>
<
p><
module>mpm_netware</
module> verwendet die Voreinstellung
<
code>MinSpareThreads 10</
code> und verfolgt dies serverweit, da
es ein Einzelprozess-MPM ist.</
p>
<
p><
module>beos</
module> und <
module>mpmt_os2</
module> arbeiten
ähnlich wie <
module>mpm_netware</
module>. Die Voreinstellung
für <
module>beos</
module> ist <
code>MinSpareThreads 1</
code>.
Die Voreinstellung für <
module>mpmt_os2</
module> ist
<
seealso><
directive module="mpm_common">MaxSpareThreads</
directive></
seealso>
<
seealso><
directive module="mpm_common">StartServers</
directive></
seealso>
<
name>ScoreBoardFile</
name>
<
description>Ablageort der Datei, die zur Speicherung von Daten zur
Koordinierung der Kindprozesse verwendet wird</
description>
<
syntax>ScoreBoardFile <
var>Dateipfad</
var></
syntax>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>mpm_winnt</
module><
module>perchild</
module><
module>prefork</
module>
<
module>threadpool</
module><
module>worker</
module></
modulelist>
<
p>Apache verwendet ein Scoreboard zur Kommunikation zwischen
seinen Eltern- und Kindprozessen. Einige Architekturen erfordern
eine Datei zur Unterstützung der Kommunikation. Wenn die Datei
undefiniert bleibt, versucht der Apache zuerst, das Scoreboard im
Arbeitsspeicher zu erstellen (Verwendung von anonymem Shared-Memory),
und versucht bei einem Fehlschlag anschließend die Datei auf
der Festplatte zu erstellen (Verwendung von Datei-basiertem
Shared-Memory). Die Angabe dieser Direktive veranlaßt den
Apache stets, die Datei auf der Festplatte zu erstellen.</
p>
<
example><
title>Beispiel</
title>
<
p>Datei-basiertes Shared-Memory ist für Applikationen von
Drittanbietern hilfreich, die direkten Zugriff auf das Scoreboard
<
p>Wenn Sie eine <
directive>ScoreBoardFile</
directive>-Anweisung
verwenden, erreichen Sie eventuell eine höhere Geschwindigkeit, wenn
Sie die Datei auf einer RAM-Disk ablegen. Achten Sie darauf, die
gleichen Warnungen wie über die Ablage von Protokolldateien und
<
name>SendBufferSize</
name>
<
description>Größe des TCP-Puffers</
description>
<
syntax>SendBufferSize <
var>Bytes</
var></
syntax>
<
default>SendBufferSize 0</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>leader</
module>
<
module>mpm_netware</
module><
module>mpm_winnt</
module>
<
module>mpmt_os2</
module><
module>perchild</
module><
module>prefork</
module>
<
module>threadpool</
module><
module>worker</
module></
modulelist>
<
p>Der Server setzt die Größe des TCP-Puffers auf die
angegebene Anzahl Bytes. Dies ist sehr hilfreich, um Voreinstellungen
alter Standardbetriebssysteme für Hochgeschwindigkeitsverbindungen
mit hoher Latenzzeit anzuheben (<
em>
d.h.</
em> 100ms oder so, wie bei
Interkontinentalverbindungen).</
p>
<
p>Wird der Wert auf <
code>0</
code> gesetzt, dann verwendet der Server
die Voreinstellung des Betriebssystems.</
p>
<
description>Obergrenze für die konfigurierbare Anzahl von
<
syntax>ServerLimit <
var>Anzahl</
var></
syntax>
<
default>Für Details siehe Beschreibung</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>leader</
module><
module>perchild</
module>
<
module>prefork</
module><
module>threadpool</
module><
module>worker</
module>
<
p>Bei dem MPM <
module>prefork</
module> bestimmt die Direktive
den während der Lebensdauer des Apache-Prozesses maximal
einstellbaren Wert für <
directive module="mpm_common">MaxClients</
directive>. Beim MPM
<
module>worker</
module> bestimmt die Direktive in Verbindung mit
<
directive module="mpm_common">ThreadLimit</
directive> den Maximalwert
für <
directive module="mpm_common">MaxClients</
directive>
für die Lebensdauer des Apache-Prozesses. Jeder Versuch, diese
Anweisung während eines Neustarts zu ändern, wird ignoriert.
<
directive module="mpm_common">MaxClients</
directive> kann jedoch
während eines Neustarts geändert werden.</
p>
<
p>Lassen Sie besondere Vorsicht bei der Verwendung dieser Direktive
walten. Wenn <
directive>ServerLimit</
directive> auf einen Wert deutlich
höher als notwendig gesetzt wird, wird zusätzliches,
unbenutztes Shared-Memory belegt. Wenn sowohl
<
directive>ServerLimit</
directive> als auch <
directive module="mpm_common">MaxClients</
directive> auf Werte gesetzt werden, die
größer sind, als das System sie handhaben kann, dann kann
der Apache möglicherweise nicht starten, oder das System kann
<
p>Verwenden Sie die Direktive bei dem MPM <
module>prefork</
module>
nur, wenn Sie <
directive module="mpm_common">MaxClients</
directive>
auf mehr als 256 (Voreinstellung) setzen müssen. Setzen Sie den
Wert nicht höher als den Wert, den Sie für <
directive module="mpm_common">MaxClients</
directive> angeben möchten.</
p>
<
p>Verwenden Sie die Direktive bei <
module>worker</
module>,
<
module>leader</
module> und <
module>threadpool</
module> nur, wenn Ihre
<
directive module="mpm_common">MaxClients</
directive>- und
<
directive module="mpm_common">ThreadsPerChild</
directive>-Einstellungen
mehr als 16 Serverprozesse (Voreinstellung) erfordern. Setzen Sie den
Wert dieser Direktive nicht höher, als die Anzahl der Serverprozesse,
die dafür erforderlich ist, was Sie bei <
directive module="mpm_common">MaxClients</
directive> und
<
directive module="mpm_common">ThreadsPerChild</
directive> angeben
<
p>Verwenden Sie die Direktive beim MPM <
module>perchild</
module> nur,
wenn Sie <
directive module="perchild">NumServers</
directive> auf einen
Wert größer als 8 (Voreinstellung) setzen müssen.</
p>
<
note><
title>Anmerkung</
title>
<
p>Eine feste Begrenzung von <
code>ServerLimit 20000</
code> ist in den
Server einkompiliert (bei dem MPM <
module>prefork</
module> 200000).
Dies soll unangenehme Effekte durch Tippfehler verhindern.</
p>
<
name>StartServers</
name>
<
description>Anzahl der Kindprozesse des Servers, die beim Start erstellt
<
syntax>StartServers <
var>Anzahl</
var></
syntax>
<
default>Für Details siehe Beschreibung</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>leader</
module><
module>mpmt_os2</
module>
<
module>prefork</
module><
module>threadpool</
module><
module>worker</
module>
<
p>Die Direktive <
directive>StartServers</
directive> bestimmt
die Anzahl der Kindprozesse des Servers, die beim Start erstellt
werden. Da die Anzahl der Prozesse abhängig von der Last
dynamisch kontrolliert wird, besteht normalerweise wenig
Grund für eine Änderung dieses Parameters.</
p>
<
p>Die Voreinstellung unterscheidet sich von MPM zu MPM. Bei
<
module>leader</
module>, <
module>threadpool</
module> und
<
module>worker</
module> ist die Voreinstellung
<
code>StartServers 3</
code>. Die Voreinstellung bei
<
module>prefork</
module> ist <
code>5</
code> und bei
<
module>mpmt_os2</
module> <
code>2</
code>.</
p>
<
name>StartThreads</
name>
<
description>Anzahl der Threads, die beim Start erstellt werden</
description>
<
syntax>StartThreads <
var>Anzahl</
var></
syntax>
<
default>Für Details siehe Beschreibung</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>beos</
module><
module>mpm_netware</
module>
<
module>perchild</
module></
modulelist>
<
p>Anzahl der Threads, die beim Start erstellt werden. Da die Anzahl
der Threads abhängig von der Last dynamisch kontrolliert wird,
besteht normalerweise wenig Grund für eine Änderung
<
p>Die Voreinstellung für <
module>perchild</
module> ist
<
code>StartThreads 5</
code>. Die Direktive setzt während des
Starts die Anzahl der Threads pro Prozess.</
p>
<
p>Die Voreinstellung bei <
module>mpm_netware</
module> ist
<
code>StartThreads 50</
code>. Da hier lediglich ein einzelner Prozess
existiert, ist dies die Gesamtzahl der Threads, die beim Start
erstellt wird, um Anfragen zu bedienen.</
p>
<
p>Die Voreinstellung für <
module>beos</
module> ist <
code>StartThreads
10</
code>. Die Einstellung reflektiert ebenfalls die Gesamtzahl der Threads, die
beim Start erstellt werden, um Anfragen zu bedienen.</
p>
<
description>Bestimmt die Obergrenze der konfigurierbaren Anzahl von Threads
pro Kindprozess</
description>
<
syntax>ThreadLimit <
var>Anzahl</
var></
syntax>
<
default>Für Details siehe Beschreibung</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>leader</
module><
module>mpm_winnt</
module>
<
module>perchild</
module><
module>threadpool</
module><
module>worker</
module>
<
compatibility>Verfügbar für <
module>mpm_winnt</
module> ab
Apache 2.0.41</
compatibility>
<
p>Die Direktive bestimmt den während der Lebensdauer des
Apache-Prozesses maximal einstellbaren Wert für
<
directive module="mpm_common">ThreadsPerChild</
directive>. Jeder
Versuch, diese Direktive während eines Neustarts zu ändern,
wird ignoriert. <
directive module="mpm_common">ThreadsPerChild</
directive>
kann jedoch während eines Neustarts modifiziert werden bis zu dem
Wert dieser Anweisung.</
p>
<
p>Lassen Sie besondere Vorsicht bei der Verwendung dieser Direktive
walten. Wenn <
directive>ThreadLimit</
directive> auf einen Wert
deutlich höher als <
directive module="mpm_common">ThreadsPerChild</
directive> gesetzt wird, wird
zusätzliches, ungenutztes Shared-Memory belegt. Wenn sowohl
<
directive>ThreadLimit</
directive> als auch <
directive module="mpm_common">ThreadsPerChild</
directive> auf Werte gesetzt werden,
die größer sind, als das System sie handhaben kann, dann kann
der Apache möglicherweise nicht starten oder das System kann
instabil werden. Setzen Sie den Wert dieser Direktive nicht höher
als Ihre größte erwartete Einstellung für
<
directive module="mpm_common">ThreadsPerChild</
directive>
während der aktuellen Ausführung des Apache.</
p>
<
p>Die Voreinstellung für <
directive>ThreadLimit</
directive> ist
<
code>1920</
code> wenn sie zusammen mit <
module>mpm_winnt</
module>
verwendet wird, und <
code>64</
code> bei der Verwendung mit anderen
<
note><
title>Anmerkung</
title>
<
p>Eine feste Begrenzung von <
code>ThreadLimit 20000</
code>
(oder <
code>ThreadLimit 15000</
code> bei <
module>mpm_winnt</
module>)
ist in den Server einkompiliert. Dies soll unangenehme Effekte durch
Tippfehler verhindern.</
p>
<
name>ThreadsPerChild</
name>
<
description>Anzahl der Threads, die mit jedem Kindprozess gestartet
<
syntax>ThreadsPerChild <
var>Anzahl</
var></
syntax>
<
default>Für Details siehe Beschreibung</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>leader</
module><
module>mpm_winnt</
module>
<
module>threadpool</
module><
module>worker</
module></
modulelist>
<
p>Die Direktive legt die Anzahl der Threads fest, die mit jedem
Kindprozess gestartet werden. Der Kindprozess erstellt diese Threads
beim Start und erstellt später keine weiteren mehr. Wenn Sie ein
MPM wie <
module>mpm_winnt</
module> verwenden, wo nur ein
Kindprozess existiert, dann sollte diese Angabe hoch genug sein,
die gesamte Last des Servers zu bewältigen. Wenn Sie ein MPM
wie <
module>worker</
module> verwenden, wo mehrere Kindprozesse
existieren, dann sollte die <
em>Gesamt</
em>zahl der Thread groß
genug sein, die übliche Last auf dem Server zu bewältigen.</
p>
<
p>Die Voreinstellung für <
directive>ThreadsPerChild</
directive> ist
<
code>64</
code>, wenn <
module>mpm_winnt</
module> verwendet wird, und
<
code>25</
code> bei der Verwendung der anderen MPMs.</
p>
<
name>ThreadStackSize</
name>
<
description>Die Größe des Stacks in Bytes, der von Threads
verwendet wird, die Client-Verbindungen bearbeiten.</
description>
<
syntax>ThreadStackSize <
var>size</
var></
syntax>
<
default>65536 unter NetWare; variiert bei anderen Betriebssystemen.</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>leader</
module><
module>mpm_netware</
module>
<
module>mpm_winnt</
module><
module>perchild</
module>
<
module>threadpool</
module><
module>worker</
module>
<
compatibility>Verfügbar seit Version 2.1</
compatibility>
<
p>Die Direktive <
directive>ThreadStackSize</
directive> legt die
Größe des Stacks (für Autodaten) der Threads fest, die
Client-Verbindungen bearbeiten und Module aufrufen, welche bei der
Verarbeitung dieser Verbindungen helfen. In den meisten Fällen ist die
Voreinstellung des Betriebssystems angemessen, doch unter bestimmten
Umständen kann es sinnvoll sein, den Wert anzupassen:</
p>
<
li>Auf Plattformen mit einer relativ kleinen Voreingestellung für
die Größe des Thread-Stacks (
z.B. HP-UX) kann der Apache bei
der Verwendung einiger Drittanbietermodule, die einen relativ hohen Bedarf
an Speicherplatz haben, abstürzen. Ebendiese Module arbeiten
möglicherweise problemlos auf anderen Plattformen, wo der
voreingestellte Thread-Stack größer ist. Derartige
Abstürze können Sie vermeiden, indem Sie
<
directive>ThreadStackSize</
directive> auf einen höheren Wert als die
Betriebssystemvoreinstellung setzen. Eine solche Anpassung ist nur
notwendig, wenn es vom Anbieter des Moduls so spezifiziert wurde oder die
Diagnose eines Apache-Absturzes ergeben hat, das die
Thread-Stackgröße zu klein war.</
li>
<
li>Auf Plattformen, wo die voreingestellte Thread-Stackgröße
für die Webserverkonfiguration deutlich größer als
notwendig ist, kann eine größere Anzahl von Threads pro
Kindprozess erreicht werden, wenn <
directive>ThreadStackSize</
directive>
auf einen Wert kleiner als die Betriebssystemvoreinstellung gesetzt wird.
Da es einzelne Anfragen geben kann, die mehr Stack zur Verarbeitung
benötigen, sollte eine derartige Korrektur ausschließlich in
Testumgebungen zum Einsatz kommen, auf denen die gesamte
Webserververarbeitung ausprobiert werden kann. Eine Änderung der
Webserverkonfiguration kann den aktuellen Wert der
<
directive>ThreadStackSize</
directive> ungültig machen.</
li>
<
description>Die Benutzerkennung, unter welcher der Server Anfragen
beantwortet</
description>
<
syntax>User <
var>Unix-User-ID</
var></
syntax>
<
default>User #-1</
default>
<
contextlist><
context>server config</
context></
contextlist>
<
modulelist><
module>leader</
module><
module>perchild</
module>
<
module>prefork</
module><
module>threadpool</
module><
module>worker</
module>
<
compatibility>Seit Apache 2.0 nur in der globalen Server-Konfiguration
gültig</
compatibility>
<
p>Die Direktive <
directive>User</
directive> legt die Benutzerkennung
fest, mit der der Server Anfragen beantwortet. Um diese Anweisung
zu verwenden, muss der Server als <
code>root</
code> gestartet werden.
Wenn Sie den Server unter einem nicht-root-Benutzer starten, kann
er nicht zu dem minder privilegierten Benutzer wechseln und wird statt
dessen weiter mit der ursprünglichen Benutzerkennung laufen.
Wenn Sie den Server als <
code>root</
code> starten, dann ist es normal,
dass der Elternprozess als root weiterläuft.
<
var>Unix-User-ID</
var> kann sein:</
p>
<
dt>Ein Benutzername</
dt>
<
dd>Verweist auf den durch Namen angegebenen Benutzer.</
dd>
<
dt># gefolgt von einer Benutzernummer.</
dt>
<
dd>Verweist auf einen durch eine Nummer angegebenen Benutzer.</
dd>
<
p>Der Benutzer sollte keine Rechte besitzen, die dazu führen,
dass er in der Lage ist, auf Dateien zuzugreifen, die nicht dafür
bestimmt sind, für die Außenwelt sichtbar zu sein.
Gleichermaßen sollte der Benutzer nicht in der Lage sein,
Code auszuführen, der nicht für HTTP-Anfragen bestimmt ist.
Es wird empfohlen, einen neuen Benutzer und eine neue Gruppe speziell
zur Ausführung des Servers zu erstellen. Einige Administratoren
verwenden den Benutzer <
code>nobody</
code>. Dies ist jedoch nicht
immer wünschenswert, da der Benuter <
code>nobody</
code> andere
Rechte auf dem System besitzen kann.</
p>
<
note type="warning"><
title>Sicherheit</
title>
<
p>Setzen Sie <
directive>User</
directive> (oder <
directive module="mpm_common">Group</
directive>) nicht auf <
code>root</
code>,
solange Sie nicht genau wissen, was Sie tun, und welches die Gefahren
<
p>Beim MPM <
module>perchild</
module>, das dafür gedacht ist,
virtuelle Hosts unter verschiedenen Benutzerkennungen auszuführen,
bestimmt die Direktive <
directive>User</
directive> die
Benutzerkennung für den Hauptserver und bildet den Rückfallwert
für <
directive type="section" module="core">VirtualHost</
directive>-Abschnitte ohne eine
<
directive module="perchild">AssignUserID</
directive>-Anweisung.</
p>
<
p>Wichtiger Hinweis: Die Verwendung dieser Direktive innerhalb von
<
directive module="core" type="section">VirtualHost</
directive> wird
nicht mehr unterstützt. Benutzen Sie <
directive module="mod_suexec">SuexecUserGroup</
directive>, um Ihren Server
für <
program>suexec</
program> einzurichten.</
p>
<
note><
title>Anmerkung</
title>
<
p>Obwohl die Direktive <
directive>User</
directive> in den MPMs
<
module>beos</
module> und <
module>mpmt_os2</
module> existiert, ist
sie dort tatsächlich eine Leeranweisung und exisitert nur
aus Kompatibilitätsgründen.</
p>