L’optimisation du cache avec Zend OPcache permet une exécution plus rapide de PHP. Il améliore les performances de PHP, et dans notre cas plus particulièrement de Jeedom en stockant dans la mémoire partagée le bytecode pré-compilé des scripts.
PHP 5.5 dispose en intégré de OPcache, mais pour les versions de PHP 5.4, il faut installer Zend OPcache pour améliorer les performance de notre serveur. Avec ce mini tutoriel, vous allez ainsi pouvoir Optimiser JEEDOM avec Zend OPcache, pour le plus grand plaisir des amoureux de la domotique.
Avant optimisation
Pour connaître votre version de PHP, c’est très simple :
$ sudo php -v PHP 5.4.39-0+deb7u1 (cli) (built: Mar 22 2015 16:53:32) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
Notre version de PHP est donc la 5.4.39-0+deb7ul
Installation
Si besoin, il faudra installer pecl via php-pear ainsi que les build dependencies.
$ sudo apt-get install -y php-pear $ sudo apt-get install -y build-essential php5-dev
Nous pouvons maintenant installer Zend OPcache avec pecl :
$ sudo pecl install zendopcache
Notez bien qu’à la fin de l’installation, le chemin où se trouve le module est donné, dans notre cas :
/usr/lib/php5/20100525+lfs/opcache.so
Dans le pire des cas, il existe un outil pratique pour retrouver des fichiers, il s’agit de la commande locate.
L’installation se fait comme ceci :
$ sudo apt-get install locate
La mise à jour de la base de données se fait avec la commande updatedb.
Et pour chercher un fichier, c’est un jeu d’enfant :
$ sudo locate opcache.so /usr/lib/php5/20100525+lfs/opcache.so
Configuration
Nous pouvons maintenant configurer PHP et OPcache. La convention Debian veut que le fichier soit dans /etc/php5/conf.d, fichier qui est en fait un lien symbolique depuis /etc/php5/mods-available.
Tout d’abord, il faut créer le fichier /etc/php5/mods-available/opcache.ini
Dans ce fichier, nous allons ajouter les lignes suivantes :
zend_extension=/usr/lib/php5/20100525/opcache.so # chemin complet où a été mis le fichier lors de l'install opcache.memory_consumption=256 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=1 opcache.fast_shutdown=1 opcache.enable_cli=1
Le fichier de configuration étant complet, nous pouvons créer le lien symbolique au bon endroit.
Pour cela, il existe la méthode manuelle ci-dessous :
$ sudo cd /etc/php5/conf.d/ $ sudo ln -s ../mods-available/opcache.ini 20-opcache.ini
Et la méthode tout aussi propre, mais avec les outils existant :
$ sudo php5enmod opcache
Application des modifications
Nous devons redémarrer php5-fpm pour que ces modifications soient prises en compte :
$ sudo service php5-fpm restart
Dans le cas où vous utiliseriez Apache, il faut aussi redémarrer le serveur Apache :
$ sudo service apache2 restart
Validation
Pour confirmer que vous avez bien mis en place l’OPcache, il faut relancer la commande suivante :
$ sudo php -v PHP 5.4.39-0+deb7u1 (cli) (built: Mar 22 2015 16:53:32) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.4, Copyright (c) 1999-2014, by Zend Technologies
Nous constatons que OPcache est bien installé (with Zend OPcache), c’est donc parfait !!!
Un peu de ménage
Pour finir notre installation, il faut faire un brin de ménage derrière nous en supprimant ce qui n’est plus utile :
$ sudo apt-get remove --purge build-essential php5-dev
Et voilà, un jeu d’enfant je disais.
Note: L’extension OPcache permet d’accélérer les applications PHP, mais aussi de réduire l’utilisation de la mémoire. Par exemple, lors de mes essais, la mémoire utilisée pour Jeedom a été réduite de 40%.
Pour aller plus loin
Vous pouvez utiliser des outils pour stresser vos sites web, notamment Siege. Ce dernier imite des clics aléatoires (basé sur un fichier sitemap.xml ou une liste d’URLs fournie).
$ sudo apt-get install siege $ siege -t 60s -i -f liste.urls.txt -c 50
Explications de la commande :
-t 60s : (time) exécuter le test sur une période de 60 secondes
–c 50 : (concurrent) pour une activité simultanée de 50 clients
–i : (internet) pour utiliser un délai aléatoire entre 2 exécutions (simulation de la lecture de la page par un client sur Internet)
–f liste.urls.txt : (file) fichier en entrée contenant la liste des URLs à tester.
Plus d’infos et d’exemples ici.
Est-ce que cette manip est utile dans le cas où php 5.5 est déjà installé, avec OPcache intégré normalement ?
Merci
Coucou Denis,
non, avec PHP 5.5 OPcache est effectivement déja installé :
PHP 5.5 dispose en intégré de OPcache, mais pour les versions de PHP 5.4, il faut installer Zend OPcache pour améliorer les performance de notre serveur.
Par contre, le tunning qu’on fait dans /etc/php5/mods-available/opcache.ini est effectivement à faire 🙂
Le fichier opcache.ini existe déjà et contient la ligne suivante :
zend_extension=opcache.so
Faut-il indiquer le chemin complet (/usr/lib/php5/20121212/opcache.so dans mon cas) ?
Merci
non, pas besoin !!!
De toute facon, si tu fais un « php -v » et que tu as OPcache, c’est que le module est chargé, donc trouvé.
Oui il est bien présent initialement.
Une fois le fichier opcache.ini mis à jour, on peut directement redémarrer le service (sudo service php5-fpm restart) ou faut-il passer par la manip du lien symbolique.
Je dirais non dans la mesure où le fichier opcache.ini est déjà créé, et je dirais, utilisé.
Merci
Exact. Tu as juste le tuning a faire puis redémarrer le service.
Bon c’est relancé.
Il n’y a plus qu’à constater le résultat.
Merci pour tout 😉