Optimiser JEEDOM avec Zend OPcache

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.

A propos de Mehdi HAMIDA

Avec plus de 20 ans d’expérience dans la tech, je me suis spécialisé dans la gestion des données, le cloud (AWS, Snowflake) et l'architecture IT. Avant ça, j’étais expert technique et chef de projet sur des missions stratégiques. Je m'appelle Mehdi HAMIDA, et aujourd’hui, je partage simplement mes découvertes et connaissances à travers ce blog.

Lire aussi

Installer une VM Windows 11 sur Nutanix : guide pratique pour surmonter les obstacles

L’installation d’une VM Windows 11 sur Nutanix peut réserver quelques surprises, notamment des problèmes inattendus …

7 commentaires

  1. Denis Pacquier

    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 🙂

      • Denis Pacquier

        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é.

          • Denis Pacquier

            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.

          • Denis Pacquier

            Bon c’est relancé.
            Il n’y a plus qu’à constater le résultat.
            Merci pour tout 😉

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *