GoldZone Web Hosting

Rédigé par Gaëtan Trellu (goldyfruit)

Outils pour utilisateurs

Outils du site


configuration_et_optimisations

Configuration et optimisations.

Je vais passer à la vitesse supérieure, je vais vous indiquer quelques options à modifier ou à ajouter dans votre fichier de configuration.
Apache sera configuré pour fonctionner avec des virtualhosts basiques, je vous expliquerai leurs fonctionnement dans la prochaine section.

Sous Debian, Apache se configure à l'aide du fichier /etc/apache2/apache2.conf.

Je mets à disposition le fichier apache2.conf d'origine.

  • Information :
    • Processus père Apache = Processus numéro 1 d'Apache, celui créé lors du lancement du serveur.
    • Processus enfant Apache = Processus numéro autre que 1, ces processus sont créés après le lancement du serveur par l'accès aux pages.

Utilisez votre éditeur de texte préféré puis appliquez les modifications suivantes :

ServerName

ServerName "localhost"

Cette option évitera le message d'erreur suivant si vous avez changé de hostname :

Reloading web server config...apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
done.

Servertokens

Servertokens permet de choisir la signature de votre serveur web, il y a plusieurs choix :

Prod

Servertokens Prod

Résultat :

Apache Server at www.goldzoneweb.info Port 80

Min

Servertokens Min

Résultat :

Apache/2.2.10 Server at www.goldzoneweb.info Port 80

OS

Servertokens OS

Résultat :

Apache/2.2.10 (Debian GNU/Linux) Server at www.goldzoneweb.info Port 80

Full

Servertokens Full

Résultat :

Apache/2.2.10 (Debian GNU/Linux) PHP/5.2.6 mod_ssl/2.2.10 OpenSSL/0.9.8g Server at www.goldzoneweb.info Port 80

Je vous conseille le Servertokens Prod qui révèle le moins de chose sur votre serveur web.

ServerSignature

Cette option affiche la signature du serveur web, passez la valeur à Off pour ne pas avoir de signature.

ServerSignature On

Timeout

Le timeout permet de définir une valeur en seconde avant que le serveur considère un script ou une page PHP timeout.
Par défaut la valeur est à 300 mais celle-ci est trop élevée (à mon goût).

Je passe donc cette valeur à 45 qui me semble correcte, vous pouvez augmenter cette valeur suivant les critères de vos scripts mais je vous invite plutôt à revoir vos scripts plutôt qu'à augmenter cette valeur.

Timeout 45

MaxKeepAliveRequests

MaxKeepAliveRequests définie le nombre de requêtes maximales par client.
Je vous conseille de laisser cette valeur à 100, il est aussi possible de l'augmenter suivant vos besoins.
En passant cette valeur en dessous de 100 vous risquez de dégrader les performances de votre serveur, cette directive diminue aussi les dégâts suite à une attaques de type DoS.

MaxKeepAliveRequests 100

KeepAliveTimeout

Option qui définie un délai d'attente avant la prochaine connexion du même client.
Par défaut la valeur est à 15, suivant la fréquentation de votre serveur il est bon de diminuer cette valeur pour éviter que des processus enfants Apache attendent inutilement.

KeepAliveTimeout 5

StartServers

Modifier cette valeur pour la partie prefork.

Avec cette directive vous décidez du nombre de processus enfant Apache qui seront lancés au démarrage du serveur.
Si la fréquentation de votre serveur est élevée et seulement si Apache est relancé souvent alors placez cette valeur assez haute car cela évite à Apache de créer un nouveau processus ce qui demande plus de temps.

Pour ma part j'ai cette valeur à 5.

StartServers 5

MinSpareServers

Modifier cette valeur pour la partie prefork.

MinSpareServers détermine le nombre de processus enfants Apache qui doivent rester en attendant une requête.
Le nombre de processus enfants ne peut pas descendre en dessus la valeur définie à StartServers.

J'ai mis la valeur est à 5.

MinSpareServers 5

MaxSpareServers

Modifier cette valeur pour la partie prefork.

Comme la précédente options, celle-ci définie une limite pour les processus enfants Apache mais celle-ci est destinée à la valeur maximale des processus enfants.
Mettre une valeur élevée risque de dégrader les performances plus qu'autre chose, en effet si elle est trop haute une consommation de mémoire inutile sera de mise (et oui même un processus inactif utilise de la mémoire).

J'ai mis cette valeur à 10.

MaxSpareServers 10

MaxClients

Modifier cette valeur pour la partie prefork.

MaxClients permet de définir le nombre de requêtes simultanées maximales.
L'une des valeurs les plus importantes à mon goût. En effet si cette valeur est mal réglée elle peut provoquer un effet néfaste sur le serveur.

Je m'explique, si vous placez une valeur trop basse alors que votre serveur possède une forte fréquentation, les processus seront mis en attentes et suivant cette file d'attente un timeout surviendra ou la page s'affichera plusieurs secondes après la demande (si vous n'êtes pas victime du timeout avant ^^).

Si le MaxClients est trop élevé votre système risque de swapper, de base la valeur est à 20.
La valeur maximale est 246 mais votre système doit au minimum avoir 1Go de RAM, pour outrepasser cette limite vous devez recompiler Apache.

  • La taille d'un processus enfant PHP (dynamique) pèse environ 17Mo (je vois gros hein).
  • La taille d'un processus enfant HTML (statique) pèse environ 5Mo (pareil je vois large).

Pour avoir une idée de la taille d'un processus :

$ ps -ylC apache2

Résultat :

0:41 cartman@serveur ~% ps -ylC apache2
S   UID   PID  PPID  C PRI  NI   RSS    SZ WCHAN  TTY          TIME CMD
S     0  2746     1  0  76   0  9872 15300 -      ?        00:01:28 apache2
S  5500 22855  2746  0  85   0  5700 16341 -      ?        00:00:05 apache2
S  5500 23672  2746  0  75   0  5460 16399 flock_ ?        00:00:00 apache2
S  5500 23675  2746  0  75   0  5728 16155 flock_ ?        00:00:01 apache2

La taille se trouve dans la colonne RSS (en octets).

J'ai mis cette valeur à 200.

MaxClients 200

MaxRequestsPerChild

Modifier cette valeur pour la partie prefork.

MaxRequestsPerChild permet de définir le nombre de requêtes maximales par processus enfants Apache.
Au bout de 1000 requêtes par exemple, le processus enfant sera tué ce qui fait que la mémoire ne se remplira pas continuellement. Si cette valeur est à 0 alors les processus enfants ne seront pas tués et votre mémoire se remplira petit à petit.

Si la valeur de MaxRequestsPerChild n'est pas assez élevée alors Apache créera un nouveau processus enfant, dans ce cas il est préférable de passer une valeur supérieure pour éviter la création d'un nouveau processus qui demandera plus de temps.

J'ai mis cette valeur à 500.

MaxRequestsPerChild 500
configuration_et_optimisations.txt · Dernière modification: 2011/01/05 16:05 (modification externe)