Résolution DNS : HostnameLookups

La directive HostnameLookups qui traduit les IPs en noms d'hôtes ajoute un temps certains de latence entre chaque requêtes. Je vous conseil très fortement de mettre la valeur de cet directive a Off.

HostnameLookups Off

Vous n'aurez plus la traduction en hôte dans les fichiers de logs, ce qui n'est pas cool pour l'analyse des logs avec des logiciels tel que webalizer ou awstats.

Je vous conseil d'ailleur d'analyser des logs, sur une autre machine, et vous pourrez dans probleme pre-traiter vos fichiers de logs afin d'y faire apparaitre les noms d'hote avec l'outil logresolve

Timeout

La directive Timeout fixe le temps (en ms) d'attente maximum du serveur d'une réponse à une requete envoyée à un programme extérieur (comme un gestionnaire de base de données)

Timeout 300

Les fichiers .htaccess : Allowoveride

La directive AllowOverride permet ou non de l'utilisation de fichiers .htaccess pour spécifier des directives supplémentaires.

Lorsque AllowOverride à pour valeur all apache recherche les fichiers .htaccess dans tous les dossiers accédés et cela rajoute bien-sûr une petite latence.

Je vous conseil donc de placer cette directive à None, et de mettre vos directives supplémentaires en dur dans le fichier de configuration du vhosts.

AllowOverride none

Requêtes persistantes : KeepAlive

La directive KeepAlive est utilisée dans le cas de requêtes persistantes. Cela sert pour des pages HTML avec beaucoup d'images. La surcharge causée par les connexions persistantes peut être supprimée en fixant KeepAlive à On.

Fixez de même une valeur basse à KeepAliveTimeout qui définit la durée (en seconde) d'attente de la prochaine requête, et une valeur moyenne à MaxKeepAliveRequests qui définit le nombre maximum de requetes pendant une connexion persistante.

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

Augmenter le nombre de clients définissable: ServerLimit

La directive ServerLimit permet d'overrider la valeur par default qui vous limite à 256 clients.

ServerLimit 400

Nombre de clients : MaxClients

La directive MaxClient permet de définire le nombre maximum de clients pouvant se connecter au serveur.

MaxClients 400

Il est possible que l'optimisation de ces paramètres ne soit pas la solution exact, car un serveur avec 256 Mo RAM ne pourra sans doute pas assumer une charge de 2048 MaxClient.

Processus enfants : MinSpareThreads, MaxSpareThreads, MaxRequestsPerChild

Les directives MinSpareThreads et MaxSpareThreads permettent de déterminer le nombre de processus enfants.

Attention de bien équilibrer le MinSpareThreads par rapport au MaxSpareThreads. On devrait avoir un ratio de 4 afin de ne pas générer plus de 4 enfants.

Si MinSpareThreads est trop bas apache génèrera trop de processus enfant et consommera beaucoup de mémoire ram.

La directive MaxRequestsPerChild permet de définir le nombre de requetes maximum pour chaque processus. N’hésitez pas à en mettre un certains nombre.

MinSpareThreads 70
MaxSpareThreads 300
MaxRequestsPerChild 4000

Récapitulatif

Voici un récapitulatif des explications ci-dessus.

HostnameLookups Off

Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
ServerLimit 400

<IfModule mpm_prefork_module>
   StartServers           5
   MinSpareServers       70
   MaxSpareServers      300
   MaxClients           400
   MaxRequestsPerChild 4000
</IfModule>

<IfModule mpm_worker_module>
   StartServers           5
   MaxClients           400
   MinSpareThreads       70
   MaxSpareThreads      300
   ThreadsPerChild        0
   MaxRequestsPerChild 4000
</IfModule>

Et dans vos fichiers de définition de Virtual Host n'oubliez pas de spécifier :

AllowOverride none