Apache HTTP Server Version 2.0
Allgemeine Direktiven der Apache-MPMs
Beschreibung: | Eine Sammlung von Direktiven, die in mehr als einem Multi-Processing-Modul (MPM) implementiert sind. |
---|---|
Status: | MPM |
AcceptMutex-Direktive
Beschreibung: | Vom Apache verwendete Methode zur Serialisierung mehrerer Kindprozesse, die Anfragen an Netzwerk-Sockets entgegennehmen. |
---|---|
Syntax: | AcceptMutex Default|Methode |
Voreinstellung: | AcceptMutex Default |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | leader , perchild , prefork , threadpool , worker |
Die Direktive AcceptMutex
bestimmt die
Methode, die der Apache zur Serialisierung mehrerer Kindprozesse
verwendet, welche Anfragen an Netzwerk-Sockets entgegennehmen. Vor
Apache 2.0 war diese Methode nur zur Kompilierungszeit einstellbar.
Die optimale Methode ist sehr stark von der Architektur und
Plattform abhängig. Lesen Sie bitte Perfomance-Hinweise für
weitere Details.
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
- verwendet die Systemfunktion
flock(2)
, um die durch dieLockFile
-Direktive definierte Datei zu sperren. fcntl
- verwendet die Systemfunktion
fcntl(2)
, um die durch dieLockFile
-Direktive definierte Datei zu sperren. posixsem
- verwendet POSIX-kompatible Semaphore, um den Mutex zu implementieren.
pthread
- verwendet gemäß der POSIX-Thread-Spezifikation implementierte POSIX-Mutexe.
sysvsem
- verwendet Semaphoren des SysV-Typs, um den Mutex zu implementieren.
Um die bei der Kompilierung gewählte Voreinstellung für
Ihr System herauszufinden, können Sie Ihr LogLevel
auf debug
setzen. Dann wird der
voreingestellte AcceptMutex
ins ErrorLog
geschrieben.
BS2000Account-Direktive
Beschreibung: | Bestimmt den nicht-privilegierten Account auf BS2000-Maschinen |
---|---|
Syntax: | BS2000Account Account |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | perchild , prefork |
Kompatibilität: | Nur für BS2000-Maschinen verfügbar |
Die Direktive BS2000Account
ist nur
für BS2000-Hosts verfügbar. Sie muss dazu verwendet werden,
den Account für den nicht-privilegierten Apache-Server-Benutzer
(der durch die Direktive User
eingestellt wird) zu bestimmen. Dies wird vom BS2000-POSIX-Subsystem
benötigt (um die zugrundeliegende BS2000-Anwendungsumgebung
mittels eines Sub-LOGONs zu wechseln), um zu verhindern, dass
CGI-Skripte auf Ressourcen des privilegierten Accounts zugreifen, der
den Server gestartet hat, üblicherweise SYSROOT
.
Anmerkung
Es kann nur eine BS2000Account
-Direktive verwendet
werden.
Siehe auch
CoreDumpDirectory-Direktive
Beschreibung: | Verzeichnis, in das der Apache zu wechseln versucht, bevor er einen Hauptspeicherauszug erstellt |
---|---|
Syntax: | CoreDumpDirectory Verzeichnis |
Voreinstellung: | Für die Voreinstellung siehe Beschreibung |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_winnt , perchild , prefork , threadpool , worker |
Dies beeinflusst das Verzeichnis, in welches der Apache zu wechseln
versucht, bevor er einen Hauptspeicherauszug (Anm.d.Ü.: einen
so genannten Core-Dump) erstellt. Die Voreinstellung ist das
ServerRoot
-Verzeichnis. Da dieses
jedoch nicht für den Benutzer beschreibbar sein soll, unter dem
der Server läuft, werden normalerweise keine
Hauptspeicherauszüge geschrieben. Wenn Sie zum Debuggen
einen Hauptspeicherauszug haben möchten, können Sie
ihn mit dieser Direktive an einem anderen Ort ablegen lassen.
Hauptspeicherauszüge unter Linux
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
CoreDumpDirectory
konfigurieren.
EnableExceptionHook-Direktive
Beschreibung: | Aktiviert einen Hook, der nach einem Absturz noch Ausnahmefehler behandeln lassen kann |
---|---|
Syntax: | EnableExceptionHook On|Off |
Voreinstellung: | EnableExceptionHook Off |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | leader , perchild , prefork , threadpool , worker |
Kompatibilität: | Verfügbar seit Version 2.0.49 |
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.
Group-Direktive
Beschreibung: | Benutzergruppe, unter welcher der Server Anfragen beantwortet |
---|---|
Syntax: | Group Unix-Gruppe |
Voreinstellung: | Group #-1 |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpmt_os2 , perchild , prefork , threadpool , worker |
Kompatibilität: | Seit Apache 2.0 nur in der globalen Server-Konfiguration gültig |
Die Direktive Group
bestimmt die
Benutzergruppe, unter welcher der Server Anfragen beantwortet.
Um diese Direktive zu verwenden, muss der Server als 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:
- Ein Gruppenname
- Verweist auf die durch den Namen angegebene Gruppe.
#
gefolgt von einer Gruppennummer.- Verweist auf die durch ihre Nummer angegebene Gruppe.
Beispiel
Group www-group
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.
Sicherheit
Setzen Sie Group
(oder User
) nicht auf root
,
solange Sie nicht ganz genau wissen, was Sie tun und welche Gefahren
Sie eingehen.
Wichtiger Hinweis: Die Verwendung der Direktive innerhalb von
<VirtualHost>
wird nicht länger unterstützt. Benutzen Sie SuexecUserGroup
um Ihren Server
für suexec
einzurichten.
Listen-Direktive
Beschreibung: | IP-Adressen und Ports, an denen der Server lauscht |
---|---|
Syntax: | Listen [IP-Addresse:]Port |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
Kompatibilität: | Seit Apache 2.0 vorgeschrieben |
Die Direktive Listen
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. Listen
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.
Die Direktive Listen
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.
Es können mehrere Listen
-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.
Um beispielsweise den Server Verbindungen an den beiden Ports 80 und 8000 annehmen zu lassen, verwenden Sie:
Listen 80
Listen 8000
Um den Server Verbindungen an zwei angegebenen Interfaces und Ports annehmen zu lassen, verwenden Sie:
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
IPv6-Adressen müssen wie in dem folgenden Beispiel in eckige Klammern eingeschlossen werden:
Listen [2001:db8::a00:20ff:fea7:ccea]:80
Fehlermöglichkeit
MehrereListen
-Direktiven für gleiche
IP-Adresse und Port führen zur Fehlermeldung
Address already in use
(Anm.d.Ü.: Adresse schon in
Benutzung).
Siehe auch
ListenBackLog-Direktive
Beschreibung: | Maximale Länge der Warteschlange schwebender Verbindungen |
---|---|
Syntax: | ListenBacklog backlog |
Voreinstellung: | ListenBacklog 511 |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
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.
LockFile-Direktive
Beschreibung: | Ablageort der Lock-Datei für die Serialisierung von entgegengenommenen Anfragen |
---|---|
Syntax: | LockFile Dateiname |
Voreinstellung: | LockFile logs/accept.lock |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | leader , perchild , prefork , threadpool , worker |
Die Direktive LockFile
legt den Pfad zur
Lock-Datei fest, die verwendet wird, wenn der Apache mit einer der
AcceptMutex
-Einstellungen
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 (Anm.d.Ü.: Prozess-ID) des
Hauptserverprozesses wird automatisch an den Dateinamen angehängt.
Sicherheit
Es ist am besten, die Ablage in einem allgemein (Anm.d.Ü.: für
jedermann) beschreibbaren
Verzeichnis wie /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.
Siehe auch
MaxClients-Direktive
Beschreibung: | Maximale Anzahl der Kindprozesse, die zur Bedienung von Anfragen gestartet wird |
---|---|
Syntax: | MaxClients Anzahl |
Voreinstellung: | Für Details siehe Beschreibung |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , prefork , threadpool , worker |
Die Direktive MaxClients
setzt die Grenze
für die Anzahl gleichzeitig bedienter Anfragen. Jeder
Verbindungsversuch oberhalb der MaxClients
-Begrenzung wird üblicherweise in eine
Warteschlange gestellt, bis zu einer Anzahl basierend auf der
ListenBacklog
-Anweisung.
Sobald ein Kindprozess am Ende einer anderen Anfrage freigegeben wird,
wird die Verbindung bedient.
Für Server ohne Thread-Unterstützung (z.B.
prefork
) wird MaxClients
als
maximale Anzahl der Kindprozesse verstanden, die zur Bedienung von
Anfragen gestartet werden. Die Voreinstellung ist 256
. Um
diesen Wert zu erhöhen, muss auch ServerLimit
angehoben werden.
Bei Servern mit Thread-Unterstützung und bei Hybrid-Servern
(z.B. beos
oder worker
)
begrenzt MaxClients
die Gesamtzahl der Threads,
die für die Bedienung von Anfragen verfügbar sind.
Die Voreinstellung für beos
ist 50
.
Bei Hybrid-MPMs ist die Voreinstellung 16
(ServerLimit
) multipliziert mit
dem Wert 25
(ThreadsPerChild
). Um MaxClients
auf einen Wert zu erhöhen, der mehr als 16 Prozesse erfordert,
müssen Sie daher auch ServerLimit
anheben.
MaxMemFree-Direktive
Beschreibung: | Maximale Menge des Arbeitsspeichers, den die
Haupt-Zuteilungsroutine verwalten darf, ohne free()
aufzurufen |
---|---|
Syntax: | MaxMemFree KBytes |
Voreinstellung: | MaxMemFree 0 |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_netware , prefork , threadpool , worker , mpm_winnt |
Die Direktive MaxMemFree
gibt die maximale
Menge freier Kilobytes an, welche die Haupt-Zuteilungsroutine verwalten
darf, ohne free()
aufzurufen. Wenn keine Angabe gemacht wird,
oder Null angegeben ist, wird dieser Wert nicht eingeschränkt.
MaxRequestsPerChild-Direktive
Beschreibung: | Obergrenze für die Anzahl von Anfragen, die ein einzelner Kindprozess während seines Lebens bearbeitet |
---|---|
Syntax: | MaxRequestsPerChild number |
Voreinstellung: | MaxRequestsPerChild 10000 |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
Die Direktive MaxRequestsPerChild
legt die
Grenze für die Anzahl von Anfragen fest, die ein einzelner
Kinprozess während seines Lebens bearbeitet. Nach
MaxRequestsPerChild
Anfragen stirbt der
Kindprozess. Wenn MaxRequestsPerChild
0
ist, endet der Prozess niemals.
Abweichende Voreinstellungen
Die Voreinstellung für mpm_netware
und
mpm_winnt
ist 0
.
Die Begrenzung von MaxRequestsPerChild
auf einen
Wert ungleich Null hat zwei vorteilhafte Auswirkungen:
- sie begrenzt die Menge an Arbeitsspeicher, die ein Prozess durch (versehentliche) Speicherlecks verbrauchen kann.
- das Festlegen einer endlichen Lebensdauer von Prozessen hilft, die Anzahl von Prozessen zu reduzieren, wenn die Serverlast zurückgeht.
Anmerkung
Bei KeepAlive
-Anfragen
wird nur die erste Anfrage für diese begrenzung gezählt.
Eigentlich wird nur die Begrenzung für die Anzahl der
Verbindungen pro Kindprozess geändert.
MaxSpareThreads-Direktive
Beschreibung: | Maximale Anzahl unbeschäftigter Threads |
---|---|
Syntax: | MaxSpareThreads Anzahl |
Voreinstellung: | Für Details siehe Beschreibung |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_netware , mpmt_os2 , perchild , threadpool , worker |
Maximale Anzahl unbeschäftigter Threads. Die verschiedenen MPMs behandeln diese Anweisung unterschiedlich.
Die Voreinstellung für perchild
ist
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 worker
,
leader
und threadpool
ist
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 mpm_netware
ist
MaxSpareThreads 100
. Da dieses MPM nur einen einzigen
Prozess ausführt, ist die Zählung überschüssiger
Threads ebenfalls serverweit.
beos
and mpmt_os2
arbeiten
ähnlich wie mpm_netware
. Die Voreinstellung
für beos
ist MaxSpareThreads 50
.
Die Voreinstellung für mpmt_os2
ist
10
.
Restriktionen
Der Wertebereich von MaxSpareThreads
ist eingeschränkt. Apache korrigiert den angegebenen Wert
automatisch gemäß den folgenden Regeln:
perchild
verlangt, dassMaxSpareThreads
kleiner oder gleichThreadLimit
ist.mpm_netware
verlangt einen Wert größer alsMinSpareThreads
.- Bei
leader
,threadpool
undworker
muss der Wert größer oder gleich der Summe ausMinSpareThreads
undThreadsPerChild
sein.
Siehe auch
MinSpareThreads-Direktive
Beschreibung: | Minimale Anzahl unbeschäftigter Threads, die zur Bedienung von Anfragespitzen zur Verfügung stehen |
---|---|
Syntax: | MinSpareThreads Anzahl |
Voreinstellung: | Für Details siehe Beschreibung |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_netware , mpmt_os2 , perchild , threadpool , worker |
Minimale Anzahl unbeschäftigter Threads, um Anfragespitzen zu bedienen. Die verschiedenen MPMs behandeln die Anweisung unterschiedlich.
perchild
verwendet die Voreinstellung
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 NumServers
auf 10
und MinSpareThreads
auf einen Wert von 5
setzen,
haben Sie mindestens 50 unbeschäftigte Threads auf Ihrem
System.
worker
, leader
und
threadpool
verwenden eine Voreinstellung von
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.
mpm_netware
verwendet die Voreinstellung
MinSpareThreads 10
und verfolgt dies serverweit, da
es ein Einzelprozess-MPM ist.
beos
und mpmt_os2
arbeiten
ähnlich wie mpm_netware
. Die Voreinstellung
für beos
ist MinSpareThreads 1
.
Die Voreinstellung für mpmt_os2
ist
5
.
Siehe auch
PidFile-Direktive
Beschreibung: | Datei, in welcher der Server die Prozess-ID des Daemons ablegt |
---|---|
Syntax: | PidFile Dateiname |
Voreinstellung: | PidFile logs/httpd.pid |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
Die Direktive PidFile
bestimmt die Datei,
in welcher der Server die Prozess-ID des Daemons ablegt. Wenn der
Dateiname nicht absolut angegeben wird, wird er relativ zu
ServerRoot
interpretiert.
Beispiel
PidFile /var/run/apache.pid
Es ist oft hilfreich, dem Server ein Signal senden zu können,
damit er seine ErrorLog
s und
TransferLog
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
PidFile
eingetragen ist.
Die PidFile
-Datei unterliegt den
gleichen Warnungen über die Ablage von Protokolldateien
und Sicherheit.
Anmerkung
Ab Apache 2 wird empfohlen, nur das Skript apachectl
zum (Neu-)Starten
und Stoppen des Servers zu verwenden.
ReceiveBufferSize-Direktive
Beschreibung: | Größe des TCP-Empfangspuffers |
---|---|
Syntax: | ReceiveBufferSize Bytes |
Voreinstellung: | ReceiveBufferSize 0 |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
Der Server setzt die Größe des TCP-Empfangspuffers auf die angegebene Anzahl Bytes.
Wird der Wert auf 0
gesetzt, dann verwendet der Server
die Voreinstellung des Betriebssystems.
ScoreBoardFile-Direktive
Beschreibung: | Ablageort der Datei, die zur Speicherung von Daten zur Koordinierung der Kindprozesse verwendet wird |
---|---|
Syntax: | ScoreBoardFile Dateipfad |
Voreinstellung: | ScoreBoardFile logs/apache_status |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_winnt , perchild , prefork , threadpool , worker |
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.
Beispiel
ScoreBoardFile /var/run/apache_status
Datei-basiertes Shared-Memory ist für Applikationen von Drittanbietern hilfreich, die direkten Zugriff auf das Scoreboard benötigen.
Wenn Sie eine ScoreBoardFile
-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
Sicherheit zu beherzigen.
Siehe auch
SendBufferSize-Direktive
Beschreibung: | Größe des TCP-Sendepuffers |
---|---|
Syntax: | SendBufferSize Bytes |
Voreinstellung: | SendBufferSize 0 |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , leader , mpm_netware , mpm_winnt , mpmt_os2 , perchild , prefork , threadpool , worker |
Der Server setzt die Größe des TCP-Sendepuffers 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.
ServerLimit-Direktive
Beschreibung: | Obergrenze für die konfigurierbare Anzahl von Prozessen |
---|---|
Syntax: | ServerLimit Anzahl |
Voreinstellung: | Für Details siehe Beschreibung |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | leader , perchild , prefork , threadpool , worker |
Bei dem MPM prefork
bestimmt die Direktive
den während der Lebensdauer des Apache-Prozesses maximal
einstellbaren Wert für MaxClients
. Beim MPM
worker
bestimmt die Direktive in Verbindung mit
ThreadLimit
den Maximalwert
für MaxClients
für die Lebensdauer des Apache-Prozesses. Jeder Versuch, diese
Anweisung während eines Neustarts zu ändern, wird ignoriert.
MaxClients
kann jedoch
während eines Neustarts geändert werden.
Lassen Sie besondere Vorsicht bei der Verwendung dieser Direktive
walten. Wenn ServerLimit
auf einen Wert deutlich
höher als notwendig gesetzt wird, wird zusätzliches,
unbenutztes Shared-Memory belegt. Wenn sowohl
ServerLimit
als auch MaxClients
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.
Verwenden Sie die Direktive bei dem MPM prefork
nur, wenn Sie MaxClients
auf mehr als 256 (Voreinstellung) setzen müssen. Setzen Sie den
Wert nicht höher als den Wert, den Sie für MaxClients
angeben möchten.
Verwenden Sie die Direktive bei worker
,
leader
und threadpool
nur, wenn Ihre
MaxClients
- und
ThreadsPerChild
-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 MaxClients
und
ThreadsPerChild
angeben
möchten.
Verwenden Sie die Direktive beim MPM perchild
nur,
wenn Sie NumServers
auf einen
Wert größer als 8 (Voreinstellung) setzen müssen.
Anmerkung
Eine feste Begrenzung von ServerLimit 20000
ist in den
Server einkompiliert. Dies soll unangenehme Effekte durch Tippfehler
verhindern.
Siehe auch
StartServers-Direktive
Beschreibung: | Anzahl der Kindprozesse des Servers, die beim Start erstellt werden |
---|---|
Syntax: | StartServers Anzahl |
Voreinstellung: | Für Details siehe Beschreibung |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | leader , mpmt_os2 , prefork , threadpool , worker |
Die Direktive StartServers
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.
Die Voreinstellung unterscheidet sich von MPM zu MPM. Bei
leader
, threadpool
und
worker
ist die Voreinstellung
StartServers 3
. Die Voreinstellung bei
prefork
ist 5
und bei
mpmt_os2
2
.
StartThreads-Direktive
Beschreibung: | Anzahl der Threads, die beim Start erstellt werden |
---|---|
Syntax: | StartThreads Anzahl |
Voreinstellung: | Für Details siehe Beschreibung |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | beos , mpm_netware , perchild |
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 perchild
ist
StartThreads 5
. Die Direktive setzt während des
Starts die Anzahl der Threads pro Prozess.
Die Voreinstellung bei mpm_netware
ist
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 beos
ist StartThreads
10
. Die Einstellung reflektiert ebenfalls die Gesamtzahl der Threads, die
beim Start erstellt werden, um Anfragen zu bedienen.
ThreadLimit-Direktive
Beschreibung: | Bestimmt die Obergrenze der konfigurierbaren Anzahl von Threads pro Kindprozess |
---|---|
Syntax: | ThreadLimit Anzahl |
Voreinstellung: | Für Details siehe Beschreibung |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | leader , mpm_winnt , perchild , threadpool , worker |
Kompatibilität: | Verfügbar für mpm_winnt ab
Apache 2.0.41 |
Die Direktive bestimmt den während der Lebensdauer des
Apache-Prozesses maximal einstellbaren Wert für
ThreadsPerChild
. Jeder
Versuch, diese Direktive während eines Neustarts zu ändern,
wird ignoriert. ThreadsPerChild
kann jedoch während eines Neustarts modifiziert werden bis zu dem
Wert dieser Anweisung.
Lassen Sie besondere Vorsicht bei der Verwendung dieser Direktive
walten. Wenn ThreadLimit
auf einen Wert
deutlich höher als ThreadsPerChild
gesetzt wird, wird
zusätzliches, ungenutztes Shared-Memory belegt. Wenn sowohl
ThreadLimit
als auch ThreadsPerChild
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
ThreadsPerChild
während der aktuellen Ausführung des Apache.
Die Voreinstellung für ThreadLimit
ist
1920
wenn sie zusammen mit mpm_winnt
verwendet wird, und 64
bei der Verwendung mit anderen
MPMs.
Anmerkung
Eine feste Begrenzung von ThreadLimit 20000
(oder ThreadLimit 15000
bei mpm_winnt
)
ist in den Server einkompiliert. Dies soll unangenehme Effekte durch
Tippfehler verhindern.
ThreadsPerChild-Direktive
Beschreibung: | Anzahl der Threads, die mit jedem Kindprozess gestartet werden |
---|---|
Syntax: | ThreadsPerChild Anzahl |
Voreinstellung: | Für Details siehe Beschreibung |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | leader , mpm_winnt , threadpool , worker |
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 mpm_winnt
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 worker
verwenden, wo mehrere Kindprozesse
existieren, dann sollte die Gesamtzahl der Thread groß
genug sein, die übliche Last auf dem Server zu bewältigen.
Die Voreinstellung für ThreadsPerChild
ist
64
, wenn mpm_winnt
verwendet wird, und
25
bei der Verwendung der anderen MPMs.
User-Direktive
Beschreibung: | Die Benutzerkennung, unter welcher der Server Anfragen beantwortet |
---|---|
Syntax: | User Unix-User-ID |
Voreinstellung: | User #-1 |
Kontext: | Serverkonfiguration |
Status: | MPM |
Modul: | leader , perchild , prefork , threadpool , worker |
Kompatibilität: | Seit Apache 2.0 nur in der globalen Server-Konfiguration gültig |
Die Direktive User
legt die Benutzerkennung
fest, mit der der Server Anfragen beantwortet. Um diese Anweisung
zu verwenden, muss der Server als 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:
- Ein Benutzername
- Verweist auf den durch Namen angegebenen Benutzer.
- # gefolgt von einer Benutzernummer.
- Verweist auf einen durch eine Nummer angegebenen Benutzer.
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.
Sicherheit
Setzen Sie User
(oder Group
) nicht auf root
,
solange Sie nicht genau wissen, was Sie tun, und welches die Gefahren
sind.
Beim MPM perchild
, das dafür gedacht ist,
virtuelle Hosts unter verschiedenen Benutzerkennungen auszuführen,
bestimmt die Direktive User
die
Benutzerkennung für den Hauptserver und bildet den Rückfallwert
für <VirtualHost>
-Abschnitte ohne eine
AssignUserID
-Anweisung.
Wichtiger Hinweis: Die Verwendung dieser Direktive innerhalb von
<VirtualHost>
wird
nicht mehr unterstützt. Benutzen Sie SuexecUserGroup
, um Ihren Server
für suexec
einzurichten.