blog:tuning_apache_et_php

Tuning Apache et PHP

Pour améliorer les réponses d'Apache, commencer par activer la compression ; avec Apache 2.2, cela passe par un filtre et mod_deflate :

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
</IfModule>

Ici on compresse (GZip) les types MIME listés, séparés par des espaces. Cette directive s'insère dans un hôte virtuel, dans un répertoire (bloc <Directory> ou <DirectoryMatch>) ou une URL (bloc <Location> ou <LocationMatch>) ou directement pour tout le serveur.

Ensuite, cacher en mémoire ce qui peut l'être (utile uniquement si on dispose de pas mal de mémoire, contre-productif sinon !) ; pour cela, utiliser mod_cache et mod_mem_cache :

  • au niveau du serveur :
<IfModule mod_mem_cache.c>
   MCacheSize 32768
   MCacheMaxObjectCount 4096
   MCacheMinObjectSize 1
   MCacheMaxObjectSize 2048
</IfModule>
  • au niveau du virtual host :
   <IfModule mod_mem_cache.c>
        CacheEnable mem /images/
        CacheEnable mem /_media/
        CacheEnable mem /_detail/
        CacheEnable mem /lib/exe/
        CacheEnable mem /lib/images/
        CacheEnable mem /lib/tpl/sidebar/
        CacheEnable mem /lib/plugins/
   </IfModule>

Ici, j'alloue 32 MB au cache (⇒ la taille des processus augmente), je cache au maximum 200 fichiers, entre 1 octet et 4 Kio. Au delà, c'est le cache du système de fichiers du système d'exploitation qui sera utilisé. Ces paramètres sont globaux à tout le serveur. Ensuite, au niveau de l'hôte virtuel j'indique quelques URLs de répertoires contenant de petits fichiers.

Ce DokuWiki repose sur PHP, utilisons eaccelerator : après installation, dans le fichier de configuration php.ini, ajouter les lignes :

extension=eaccelerator.so

puis ajouter une section :

[eaccelerator]
eaccelerator.enable    = 1
eaccelerator.optimizer = 1
eaccelerator.cache_dir = /var/www/doku-kabs
eaccelerator.shm_only  = 32
eaccelerator.debug     = 0
eaccelerator.keys      = "shm"
eaccelerator.sessions  = "shm"
eaccelerator.content   = "shm_and_disk"

Créer le répertoire avec les droits appropriés (seul le daemon Apache peut y lire et y écrire).

La documentation est là : http://eaccelerator.net/wiki/Settings

Après quelques tests rapides avec Apache Benchmark, il s'avère que parmi eaccelerator, xcache et apc, eaccelerator est le plus rapide (ils se tiennent dans un mouchoir à quelques millisecondes dans mon environnement).

La prochaine fois, nous jouerons avec la bande passante avec mod_cband… À suivre.

  • blog/tuning_apache_et_php.txt
  • Dernière modification : 2011/07/16 18:59
  • de pc