Cette directive permet de définir le répertoire dans lequel
Apache httpd va tenter de se positionner avant d'effectuer un vidage
mémoire sur disque.
Si votre système d'exploitation est configuré pour créer des
fichiers de vidage mémoire dans le répertoire de travail des
processus qui se sont crashés,
Si vous avez besoin d'un vidage mémoire pour le débogage, vous pouvez utiliser cette directive pour le placer à un endroit différent. Cette directive n'a aucun effet si votre système d'exploitation n'est pas configuré pour créer des fichiers de vidage mémoire dans le répertoire de travail des processus qui se sont crashés.
Utiliser cette directive sous Linux peut permettre aux autres processus
du système s'exécutant avec les même privilèges (comme les scripts CGI) de
se rattacher aux processus httpd enfants via l'appel système
ptrace
. La protection contre certaines attaques engageant la
sécurité peut s'en trouver affectée. Il est par conséquent déconseillé
d'utiliser cette directive sur les systèmes en production.
Si Apache httpd est démarré sous l'utilisateur root puis bascule vers
un autre utilisateur, le noyau Linux désactive les
vidages mémoire, même si le répertoire est accessible en écriture au
processus. Apache httpd (versions 2.0.46 et supérieures) réactive les
vidages mémoire sous Linux 2.4 et au delà, mais seulement si vous
définissez une directive
Pour activer le vidage mémoire des exécutables suid sur les
systèmes de style BSD (comme FreeBSD), définissez
kern.sugid_coredump
à 1.
Sur certains systèmes d'exploitation, SIGQUIT provoque aussi un
vidage mémoire, mais n'est pas traité par les directives
Pour des raisons de sécurité, cette directive n'est disponible
que si la compilation du serveur a été configurée avec l'option
--enable-exception-hook
. Elle permet d'activer un hook
("point d'accrochage logiciel")
qui autorise certains modules externes à effectuer un branchement et
accomplir telle ou telle action après le crash d'un processus
enfant.
Deux modules, mod_whatkilledus
et
mod_backtrace
utilisent ce hook. Veuillez vous
référer à la page EnableExceptionHook de Jeff Trawick pour plus
d'informations à leur sujet.
La directive
Définir cette valeur à zéro signifie au serveur d'attendre jusqu'à ce que toutes les requêtes en cours aient été traitées.
La directive
Il est souvent utile de pouvoir envoyer un signal au
serveur afin qu'il ferme et ouvre à nouveau ses journaux
d'
La directive
Depuis la version 2 du serveur HTTP Apache, nous recommandons de n'utiliser
que le script
options=
est disponible à
partir de la version 2.5.1 du serveur HTTP Apache.La directive
La directive
On peut utiliser autant de directives
Par exemple, pour que le serveur accepte les connexions sur les ports 80 et 8000, utilisez :
Pour que le serveur accepte les connexions sur deux interfaces et ports particuliers, spécifiez :
Les adressee IPv6 doivent être entourées de crochets, comme dans l'exemple suivant :
A partir de la version 2.5.1 de httpd, si la compilation a été effectuée
avec APR version 1.7.0 ou ultérieure, la directive
L'argument optionnel protocole n'est pas nécessaire
dans la plupart des configurations. S'il est absent,
https
est la valeur par défaut pour le port 443 et
http
l'est pour tous les autres ports. L'argument
protocole sert à déterminer quel module doit traiter une requête, et
à appliquer des optimisations spécifiques à certains protocoles à
l'aide de la directive
La spécification d'un protocole n'est nécessaire que si vous
utilisez des ports non standards. Par exemple, pour configurer un
site en https
sur le port 8443 :
L'argument optionnel options=flag,flag... permet de spécifier certaines options du socket pour le port d'écoute. Non nécessaires pour la plupart des configurations, ces options doivent être utilisées avec prudence. La disponibilité des différents drapeaux dépend du système d'exploitation. En voici la liste :
freebind
: l'option de socket IP_FREEBIND
est
activée ; elle permet de définir une directive Listen pour une adresse qui
n'est pas (encore) valide dans le système (disponible sous Linux
seulement).reuseport
: l'option de socket SO_REUSEPORT
est activée ; elle permet de définir une directive Listen pour un port
déjà utilisé par un autre processus.v6only
: le socket IPV6_V6ONLY
est activé, ce
qui permet à une directive Listen de spécifier une adresse IPv6 tout en
excluant les connexions en IPv4, ou entrant en conflit avec une directive
Listen utilisant une adresse IPv4 avec le même port (si le serveur a été
compilé en désactivant les adresses IPv4, il s'agit du comportement par
défaut et cette option n'a alors aucun effet).multipathtcp
: active l’utilisation de Multipath TCP (MPTCP) pour les sockets. Notez
que cette option n’est actuellement prise en charge que par Linux.
Address already in use
.
Address already in
use
, citant d'autres causes possibles.SO_REUSEPORT
, et distribuant uniformément les nouvelles
connexions aux sockets d'écoute des processus (ou threads) qui
l'utilisent (par exemple Linux versions 3.9 et ultérieures, mais pas
l'implémentation courante de SO_REUSEPORT
par les
plateformes de type BSD.Vous pouvez utiliser la directive
num_cpu_cores / ratio
segments d'écoute, chacun
contenant son propre socket d'écoute
Sous Linux et BSD, un coeur de CPU peut être activé ou désactivé si Hotplug
a été configuré ; la directive
La directive
Pour que cette fonctionnalité soit activée, le nombre de coeurs
de CPU doit être égal au moins au double du ratio
spécifié. Si vous spécifiez la valeur recommandée pour
ratio, à savoir 8
, le nombre minimum de
coeurs de processeurs disponibles sera alors de 16
. La valeur
optimale de ratio permettant d'obtenir des performances maximales
doit être calculée pour chaque système cible, en testant plusieurs valeurs
et en observant les résultats.
Cette directive influence le calcul des valeurs limites inférieures de
La définition de l'option SO_REUSEPORT
pour les sockets
d'écoute permet à plusieurs processus (partageant le même EUID
,
par exemple root
) de se rattacher à la même adresse IP et port,
sans obtenir l'erreur de rattachement que le système génère habituellement
lorsque ce cas se produit.
Cela signifie aussi que plusieurs instances d'Apache httpd configurées
avec le même IP:port
et avec une valeur
IP:port
pourrait alors être occulté).
Au sein d'une même instance, Apache httpd vérifie la présence de
directives
La longueur maximale de la liste d'attente des connexions. En
général, aucune modification n'est nécessaire, ni même souhaitable ;
cependant, sur certains systèmes, il peut être nécessaire
d'en augmenter la valeur en cas d'attaque TCP SYN flood (envoi en
masse de requêtes SYN pour saturer le serveur). Voir le paramètre
backlog de l'appel système listen(2)
.
En fait, l'argument backlog sera souvent limité à une valeur inférieure en fonction du système d'exploitation. Notez aussi que de nombreux systèmes d'exploitation ne tiennent pas vraiment compte de la valeur spécifiée pour l'argument backlog, mais s'en inspirent seulement (et choisissent en général une valeur supérieure).
La directive
Pour les serveurs non threadés (c'est à dire utilisant
256
; si
vous l'augmentez, vous devez aussi augmenter la valeur de la
directive
Pour les serveur threadés et hybrides (utilisant par
exemple 16
(directive 25
(directive
Le nom de la directive
free()
La directive free()
. Dans les MPMs
threadés, chaque thread possède son propre allocateur. Si elle est
définie à 0, la quantité de mémoire libre que peut conserver un
allocateur est illimitée.
MaxRequestsPerChild
est encore
supporté.La directive 0
, il n'y a plus aucune limite sur le nombre
de connexions que le processus pourra traiter.
Définir
C'est le nombre maximum de threads inactifs. Les MPMs utilisent cette directive de différentes manières.
Pour MaxSpareThreads 250
. Ce MPM gère les threads inactifs
au niveau du serveur. Si le serveur possède trop de threads
inactifs, des processus enfants seront arrêtés jusqu'à ce que le
nombre de threads inactifs repasse en dessous de cette limite. Des
processus/threads supplémentaires sont susceptibles d'être créés si
Pour MaxSpareThreads 100
. Comme ce MPM n'exécute qu'un seul
processus, le nombre de processus inactifs est surveillé au
niveau général du serveur.
10
.
La gamme de valeurs pour
C'est le nombre minimum de threads inactifs pour être en mesure de traiter les pics de requêtes. Les MPMs utilisent cette directive de différentes manières.
Avec MinSpareThreads 75
, et le nombre de threads inactifs
est surveillé au niveau du serveur. Si le serveur ne possède pas
assez de threads inactifs, des processus enfants sont créés jusqu'à
ce que le nombre de threads inactifs repasse au dessus de
nombre. Des processus/threads supplémentaires peuvent
être créés si
Avec MinSpareThreads 10
et, comme ce MPM n'exécute qu'un
seul processus, le nombre de threads est surveillé au niveau général du
serveur.
5
.
Le serveur HTTP Apache utilise un tableau de bord pour la communication entre le processus parent et les processus enfants. Pour faciliter cette communication, certaines architectures nécessitent un fichier. En l'absence de cette directive, donc si aucun nom de fichier n'est spécifié, Apache httpd tentera tout d'abord de créer un tableau uniquement en mémoire (en utilisant la mémoire partagée anonyme) ; et si il n'y parvient pas, il tentera de créer un fichier sur disque (en utilisant la mémoire partagée à base de fichier). Si cette directive est utilisée, Apache httpd créera systématiquement un fichier sur disque.
Si file-path n'est pas un chemin absolu, il sera relatif à la
valeur spécifiée par la directive
Une mémoire partagée sous forme de fichier est utile pour les applications tierces qui nécessitent un accès direct au tableau de bord des processus.
Si vous utilisez un
Le serveur va fixer la taille du tampon TCP en entrée au nombre d'octets spécifié.
Si la directive est définie à 0
, le serveur va
utiliser la valeur par défaut adoptée par le système
d'exploitation.
Définit la taille du tampon TCP en sortie avec le nombre d'octets spécifié. Ceci s'avère souvent très utile pour augmenter les valeurs par défaut standards du passé des systèmes d'exploitation pour les transmissions à grande vitesse et haute densité (c'est à dire de l'ordre de 100ms comme sur les liaisons rapides transcontinentales).
Si la directive est définie à 0
, le serveur va
utiliser la valeur par défaut adoptée par le système
d'exploitation.
L'amélioration des performances des connexions à grande vitesse et à temps de latence élevé, peut nécessiter une intervention au niveau de la configuration de votre système d'exploitation.
Sous certains systèmes d'exploitation, la modification du
comportement TCP via une augmentation de la valeur de
Avec le MPM
Cette directive doit être utilisée avec précaution. Si
Avec les MPMs
Avec
Avec le MPM
Il existe une limite de ServerLimit 20000
codée en
dur dans le serveur (200000 pour le MPM
La directive
La valeur par défaut diffère d'un MPM à l'autre. Pour
StartServers 3
; la valeur par défaut est
5
pour 2
pour
C'est le nombre de threads créés au démarrage du serveur. Comme
le nombre de threads est contrôlé dynamiquement
en fonction de la charge (voir
Pour StartThreads 50
et, comme il n'y a qu'un processus, il
s'agit du nombre total de threads créés au démarrage pour servir les
requêtes.
Cette directive permet de définir le nombre maximum que l'on peut
affecter à la directive
L'utilisation de cette directive doit faire l'objet de
précautions particulières. Si
La valeur par défaut de la directive
1920
avec
64
avec les autres
MPMs.
Il existe une limite de ThreadLimit 20000
(ou
ThreadLimit 100000
avec ThreadLimit 15000
avec
Cette directive permet de définir le nombre de threads que va
créer chaque processus enfant. Un processus enfant crée ces threads
au démarrage et n'en crée plus d'autres par la suite. Si l'on
utilise un MPM comme
La valeur par défaut de la directive
64
avec
25
avec les autres
MPMs.
La valeur de la directive
La directive
ulimit -s
(8Mo si aucune limite) qui est
utilisée comme taille de pile par défaut.La directive
Lorsque la directive