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 : wget http://www.debiantutorials.com/static/eaccelerator-0.9.6.1.tar.bz2
Là cela demande un peu de manipulation et d'attention.
Il faut installer deux paquets supplémentaires :
apt-get install php5-dev
Il faut dés-archiver ce fichier :
tar -xvjf eaccelerator-0.9.6.1.tar.bz2
Il faut se rendre dans le répertoire ainsi créé : cd eaccelerator-0.9.6.1
Puis tapez les commandes suivantes :
phpize ./configure make make install
Créez un fichier :/etc/php5/conf.d/zend.ini
[eaccelerator] 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" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
Vérifiez la bonne intégration de eAccelerator à PHP :
# 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 :
# 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 :
# 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 :
kernel.shmall = 134217728 kernel.shmmax = 134217728
Puis j'ai appliqué les changements :
# 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
[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 :
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 :
$pw = "xxxxxxxxxxxxxxxxxxxx";
On obtient en se rendant sur la page :
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 :
tmpfs /var/cache/eaccelerator/ tmpfs size=64m 0 0
Faites un
mount -a
ou un
mount -o remount -a
ou un reboot... 😉 Et voilà !
---------------------------------------------
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.