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.