Optimisation Apache2
Par Yoann, vendredi 13 avril 2007 à 14:25 :: L1nuX and c0 :: #76 :: rss
Aujourd'hui, c'est changement de hardware (Bi-Xeon 3,2 Ghz) et nouvel OS (Debian Etch) pour le serveur Web de ma boite.
Je profite de ce changement, pour optimiser la configuration de apache2.2.
Bonne lecture, et surtout n'hesitez pas à faire des remarques, (je suis loin d'être un expert apache) 
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
Commentaires
1. Le mardi 8 mai 2007 à 12:25, par Jean-Philippe Tessier
2. Le mardi 19 juin 2007 à 01:24, par Maxime
3. Le jeudi 15 novembre 2007 à 11:45, par Courbe
4. Le vendredi 14 décembre 2007 à 09:23, par Spemen
Ajouter un commentaire