Die Direktive
Wenn die Direktive auf Default
eingestellt ist, dann
wird die zur Kompilierungszeit gewählte Voreinstellung verwendet.
Weitere mögliche Methoden sind unten angegeben. Beachten Sie, dass
nicht alle Methoden auf allen Plattformen verfügbar sind. Wird
eine Methode angegeben, die nicht verfügbar ist, dann wird
eine Nachricht in das Fehlerprotokoll geschrieben, welche die
verfügbaren Methoden auflistet.
flock
flock(2)
, um die
durch die fcntl
fcntl(2)
, um die
durch die posixsem
pthread
sysvsem
Um die bei der Kompilierung gewählte Voreinstellung für
Ihr System herauszufinden, können Sie Ihr debug
setzen. Dann wird der
voreingestellte
Auf den meisten Systemen stoppt der Server mit der Beantwortung von
Anfragen, wenn die Option pthread
ausgewählt wurde und
ein Kindprozess unkontrolliert endet während er den
AcceptCntl
-Mutex hält. In diesem Fall muss der Server
manuell neu gestartet werden, um wieder weiter zu arbeiten.
Eine Ausnahme stellt Solaris dar, da es einen Mechanismus anbietet, den der Apache verwendet und der üblicherweise die Freigabe des Mutex erlaubt, nachdem ein Kindprozess, der gerade einen Mutex hält, abgestürzt ist.
Wenn Ihr System die Funktion
pthread_mutexattr_setrobust_np()
bereitstellt, können
Sie wahrscheinlich die Option pthread
problemlos
verwenden.
Dies beeinflusst das Verzeichnis, in welches der Apache zu wechseln
versucht, bevor er einen Hauptspeicherauszug
Wenn Apache als root
startet und zu einem anderen Benutzer
wechselt, deaktiviert der Linux-Kernel Hauptspeicherauszüge
auch dann, wenn der Prozess in dem Verzeichnis schreiben darf. Ab Linux
2.4 reaktiviert Apache (ab 2.0.46) Hauptspeicherauszüge wieder,
jedoch nur dann, wenn Sie explizit
Diese Direktive ist aus Sicherheitsgründen nur verfügbar,
wenn der Server mit der Option --enable-exception-hook
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.
Es existieren bereits zwei Module, mod_whatkilledus
und
mod_backtrace
, welche diesen Hook verwenden. Weitere
Informationen hierzu finden Sie auf Jeff Trawicks EnableExceptionHook-Seite.
Die Direktive root
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. Unix-Gruppe kann sein:
#
gefolgt von einer Gruppennummer.Es wird empfohlen, dass Sie eine neue Gruppe speziell zum Betrieb
des Servers erstellen. Einige Administratoren verwenden den Benutzer
nobody
. Dies ist jedoch nicht immer möglich
oder gewünscht.
Setzen Sie root
,
solange Sie nicht ganz genau wissen, was Sie tun und welche Gefahren
Sie eingehen.
Wichtiger Hinweis: Die Verwendung der Direktive innerhalb von
Obwohl die Direktive
Die Direktive
Es ist oft hilfreich, dem Server ein Signal senden zu können,
damit er seine
Die
Ab Apache 2 wird empfohlen, nur das Skript
Die Direktive
Die Direktive
Es können mehrere
Um beispielsweise den Server Verbindungen an den beiden Ports 80 und 8000 annehmen zu lassen, verwenden Sie:
Um den Server Verbindungen an zwei angegebenen Interfaces und Ports annehmen zu lassen, verwenden Sie:
IPv6-Adressen müssen wie in dem folgenden Beispiel in eckige Klammern eingeschlossen werden:
Address already in use
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 listen(2)
.
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.
Die Direktive fcntl
oder flock
verwendet wird. Die Anweisung
sollte normalerweise bei der Voreinstellung belassen werden.
Der Hauptgrund, sie zu ändern, ist, wenn das
logs
-Verzeichnis auf einem per NFS-eingebundenen Laufwerk
liegt, da die Lock-Datei auf einer lokalen Platte abgelegt sein
muss. Die PID
Es ist am besten, die Ablage in einem allgemein /var/tmp
zu vermeiden, 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.
Die Direktive
Für Server ohne Thread-Unterstützung (z.B.
256
. Um
diesen Wert zu erhöhen, muss auch
Bei Servern mit Thread-Unterstützung und bei Hybrid-Servern
(z.B. 50
.
Bei Hybrid-MPMs ist die Voreinstellung 16
(25
(
free()
aufzurufenDie Direktive free()
aufzurufen. Wenn keine Angabe gemacht wird,
oder Null angegeben ist, wird dieser Wert nicht eingeschränkt.
Die Direktive 0
ist, endet der Prozess niemals.
Die Voreinstellung für 0
.
Die Begrenzung von
Bei
Maximale Anzahl unbeschäftigter Threads. Die verschiedenen MPMs behandeln diese Anweisung unterschiedlich.
Die Voreinstellung für MaxSpareThreads 10
. 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.
Die Voreinstellung für MaxSpareThreads 250
. 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
angegebene Wert ist.
Die Voreinstellung für MaxSpareThreads 100
. Da dieses MPM nur einen einzigen
Prozess ausführt, ist die Zählung überschüssiger
Threads ebenfalls serverweit.
MaxSpareThreads 50
.
Die Voreinstellung für 10
.
Der Wertebereich von
Minimale Anzahl unbeschäftigter Threads, um Anfragespitzen zu bedienen. Die verschiedenen MPMs behandeln die Anweisung unterschiedlich.
MinSpareThreads 5
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 10
und 5
setzen,
haben Sie mindestens 50 unbeschäftigte Threads auf Ihrem
System.
MinSpareThreads 75
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.
MinSpareThreads 10
und verfolgt dies serverweit, da
es ein Einzelprozess-MPM ist.
MinSpareThreads 1
.
Die Voreinstellung für 5
.
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.
Datei-basiertes Shared-Memory ist für Applikationen von Drittanbietern hilfreich, die direkten Zugriff auf das Scoreboard benötigen.
Wenn Sie eine
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 (d.h. 100ms oder so, wie bei Interkontinentalverbindungen).
Wird der Wert auf 0
gesetzt, dann verwendet der Server
die Voreinstellung des Betriebssystems.
Bei dem MPM
Lassen Sie besondere Vorsicht bei der Verwendung dieser Direktive
walten. Wenn
Verwenden Sie die Direktive bei dem MPM
Verwenden Sie die Direktive bei
Verwenden Sie die Direktive beim MPM
Eine feste Begrenzung von ServerLimit 20000
ist in den
Server einkompiliert (bei dem MPM
Die Direktive
Die Voreinstellung unterscheidet sich von MPM zu MPM. Bei
StartServers 3
. Die Voreinstellung bei
5
und bei
2
.
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 dieses Parameters.
Die Voreinstellung für StartThreads 5
. Die Direktive setzt während des
Starts die Anzahl der Threads pro Prozess.
Die Voreinstellung bei StartThreads 50
. Da hier lediglich ein einzelner Prozess
existiert, ist dies die Gesamtzahl der Threads, die beim Start
erstellt wird, um Anfragen zu bedienen.
Die Voreinstellung für StartThreads
10
. Die Einstellung reflektiert ebenfalls die Gesamtzahl der Threads, die
beim Start erstellt werden, um Anfragen zu bedienen.
Die Direktive bestimmt den während der Lebensdauer des
Apache-Prozesses maximal einstellbaren Wert für
Lassen Sie besondere Vorsicht bei der Verwendung dieser Direktive
walten. Wenn
Die Voreinstellung für 1920
wenn sie zusammen mit 64
bei der Verwendung mit anderen
MPMs.
Eine feste Begrenzung von ThreadLimit 20000
(oder ThreadLimit 15000
bei
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
Die Voreinstellung für 64
, wenn 25
bei der Verwendung der anderen MPMs.
Die Direktive
Die Direktive root
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 root
starten, dann ist es normal,
dass der Elternprozess als root weiterläuft.
Unix-User-ID kann sein:
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 nobody
. Dies ist jedoch nicht
immer wünschenswert, da der Benuter nobody
andere
Rechte auf dem System besitzen kann.
Setzen Sie root
,
solange Sie nicht genau wissen, was Sie tun, und welches die Gefahren
sind.
Beim MPM
Wichtiger Hinweis: Die Verwendung dieser Direktive innerhalb von
Obwohl die Direktive