Serveur Apache HTTP Version 2.4
Quand de nombreux serveurs virtuels sont créés, Apache peut dépasser les limites en descripteurs de fichiers ('file descriptors', également appelés gestionnaires de fichiers) si chacun des serveurs virtuels utilise ses propres fichiers journaux. Le nombre total de descripteurs de fichiers utilisés par Apache est d'un par fichier journal, un pour chacune des autres directives de fichiers journaux, plus un nombre constant compris entre 10 et 20 pour son fonctionnement interne. Les systèmes d'exploitation Unix limitent le nombre de descripteurs de fichiers utilisables par processus ; une valeur courante pour cette limite est de 64, et cette valeur peut le plus souvent être augmentée.
Apache tente d'accroître cette valeur limite si nécessaire, mais sans y parvenir dans les cas suivants :
setrlimit()
.setrlimit(RLIMIT_NOFILE)
ne fonctionne pas
sur votre système d'exploitation (c'est le cas sous Solaris 2.3).En cas de problème, Vous pouvez :
<VirtualHost>
,
en donc en envoyant les informations aux fichiers journaux du
serveur principal (Voir Éclatement des
fichiers journaux ci-dessous pour plus d'informations sur
cette possibilité).
#!/bin/sh
ulimit -S -n 100
exec httpd
Lorsque vous choisissez d'enregistrer les informations émanant de plusieurs serveurs virtuels dans un même fichier journal, vous voudrez ensuite pouvoir scinder ces informations à des fins de statistiques, par exemple, sur les différents serveurs virtuels. Il est possible de procéder de la manière suivante :
Tout d'abord, vous devez ajouter le nom du serveur virtuel à chaque
entrée du journal. Ceci se paramètre au moyen de la directive
LogFormat
et de la
variable %v
. Ajoutez cette variable au début de la chaîne
de définition du format de journalisations :
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost CustomLog logs/multiple_vhost_log vhost
Cette configuration va provoquer la création d'un fichier de
journalisation au format standard (CLF : 'Common Log Format'), mais dont
chaque ligne débutera par le nom canonique du serveur virtuel (spécifié
par la directive ServerName
).
(Voir mod_log_config
pour d'autres informations sur la
personnalisation des fichiers journaux.)
Au moment de séparer les informations du fichier journal en un fichier
par serveur virtuel, le programme
split-logfile
peut être
utilisé. Ce programme peut être trouvé dans le répertoire
support
de la distribution d'Apache.
Exécutez ce programme au moyen de la commande :
split-logfile < /logs/multiple_vhost_log
Une fois exécuté avec le nom du fichier contenant tous les journaux,
ce programme va générer un fichier pour chacun des serveurs virtuels
qui apparaît dans le fichier d'entrée. Chaque fichier en sortie est
nommé nomduserveur.log
.