1. Articles from Le blog technique de
Laurent Besson
Accélérer l’affichage de vos pages PHP avec
eAccelerator sous Debian Squeeze
2011-08-18 10:08:59 admin
-: Modifié le 20-08-2011 :-
Introduction
Nous avons tous connu les affres de l’affichage de certaines pages plus lent que ce
que l’on pourrait s’y attendre ! En effet certaines pages sont délivrées par PHP et
demandent quelques requêtes SQL… l’affichage est lent. Pourtant cette page
depuis sa création n’a pas changée… alors ?
Plusieurs solutions sont à votre portée !
Nous allons voir une solution qui consiste à installer : eAccelerator.
Installation de eAccelerator
Il faut aller télécharger l’archive eaccelerator :
http://sourceforge.net/projects/eaccelerator/files/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-
0.9.6.1.zip
Là cela demande un peu de manipulation et d’attention.
Il faut installer deux paquets supplémentaires : apt-get install php5-dev checkinstall
Il faut dés-archiver ce fichier : unzip eaccelerator-0.9.6.1.zip
Il faut se rendre dans le répertoire ainsi créé : cd eaccelerator-0.9.6.1
Puis tapez les commandes suivantes :
Code Source
# checkinstall
Installez le paquet créé :
Code Source
# dpkg -i eaccelerator_0.9.6.1-1_i386.deb
# mkdir /var/cache/eaccelerator
# chown www-data: /var/cache/eaccelerator
Créez un fichier :/etc/php5/conf.d/zend.ini
Code Source
zend_extension="/usr/lib/php5/XXXXXXX/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
2. eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
Vérifiez la bonne intégration de eAccelerator à PHP :
Code Source
# php -v
PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 13:13:26)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
Vous pouvez redémarrer apache : service apache2 restart
Vous devriez ressentir une certaine augmentation de vitesse d’affichage…
Souci rencontré : limite de la mémoire partagée
(shmmax)
Attention tout de même, la valeur de » eaccelerator.shm_size = 16″ doit être
inférieure ou égale à la valeur indiquée par :
Code Source
# cat /proc/sys/kernel/shmmax
Sinon toute les pages envoyées par apache seront inaccessibles !
Deux méthodes peuvent-être utilisées afin de mettre en conformité ces deux
variables :
- echo
- sysctl
Avec la commande : echo « $valeur » > /proc/sys/kernel/shmmax
Vous indiquez que la mémoire partagée utilise telle ou telle valeur. Initialement la
taille indiquée pour la mémoire partagée était de « 33554432″ soit 32Mo.
Désirant indiquer que pour eAccelerator nous pouvions utiliser 64Mo je me suis
retrouvé avec des page lors de leur consultation en « page réinitialisée » !
Ainsi il faut augmenter la mémoire partagée possible : 64Mo = 67108864 o, je vais
donc mettre 128Mo soit le double !
avec un :
Code Source
# echo "134217728" > /proc/sys/kernel/shmmax
Mais si votre serveur redémarre cette valeur sera perdue…
J’ai donc choisit d’éditer le fichier : /etc/sysctl.conf
et de placer les instructions suivantes :
Code Source
kernel.shmall = 134217728
kernel.shmmax = 134217728
Puis j’ai appliqué les changements :
3. Code Source
# sysctl -p
Voilà…
Ajout du 20-08-2011
Si vous désirez -voir comment se comporte eAccelerator, mettez ceci dans
/etc/php5/conf.d/zend.ini
Code Source
[eaccelerator]
zend_extension ="/usr/lib/php5/20090626+lfs/eaccelerator.so"
eaccelerator.shm_size ="64"
eaccelerator.cache_dir ="/var/cache/eaccelerator"
eaccelerator.enable ="1"
eaccelerator.optimizer ="1"
eaccelerator.check_mtime ="1"
eaccelerator.debug ="1"
eaccelerator.filter =""
eaccelerator.shm_max ="0"
eaccelerator.shm_ttl ="0"
eaccelerator.shm_prune_period ="0"
eaccelerator.shm_only ="0"
eaccelerator.compress ="1"
eaccelerator.compress_level ="9"
eaccelerator.log_file = "/var/log/apache2/eaccelerator.log"
eaccelerator.allowed_admin_path = "/var/www/eaccelerator/"
Cela vous permettra de suivre les hit et la mise en cache par eAccelerator !
Sinon pour suivre le cache de eAccelerator une page est présente dans le répertoire
: control.php
Nous allons créer un répertoire accueillant cette page :
Code Source
mkdir /var/www/eaccelerator
chmod 777 /var/www/eaccelerator
cp control.php /var/www/eaccelerator
Il faut modifier le fichier afin de changer l’accès à cette page :
Code Source
$pw = "xxxxxxxxxxxxxxxxxxxx";
On obtient en se rendant sur la page :
4. Accélérez bien !
Pas trop, attention aux radars en période estivale !
Je vous conseille par ailleurs de jeter un œil à la page :
http://blog-dev.net/technique/serveurs/monter-une-partition-en-memoire-avec-
tmpfs/003
Cela vous donnera peut-être l’idée de monter en RAM /var/cache/eaccelerator ?
Mettre en RAM le cache de eAccelerator
Le répertoire du cache de eAccelerator est /var/cache/eaccelerator et je le déclare
dans fstab comme répertoire tmpfs
ce qui donne :
Code Source
tmpfs /var/cache/eaccelerator/ tmpfs size=64m 0 0
Faites un
Code Source
mount -a
ou un
Code Source
mount -o remount -a
ou un reboot… Et voilà !
———————————————
Webographie :
http://www.debianiste.org/?post/2011/03/Installation-d-eAccelerator-avec-
Apache-sous-Debian
http://docs.postgresqlfr.org/7.4/kernel-resources.html