3

piwik : optimiser le wait load time du fichier piwik.php

Toujours dans une optique d’optimisation des performances du temps d’affichage des pages de mon blog, pour offrir la meilleur expérience utilisateur possible, je me suis penché sur le cas de Piwik, qui de base n’est pas optimisé et peut augmenter le temps de chargement des pages inutilement.

Effectivement, en utilisant l’outil tools.pingdom.com je remarque un temps d’attente trop long du fichier piwik.php, qui peut atteindre la seconde par moment.

En me renseignant sur twitter, le compte @piwik m’a proposé d’essayer le plugin QueuedTracking :

piwik-twitter

Effectivement, une fois le plugin installé et configuré le « wait » est descendu en dessous de 20ms !

Attention, il se peut que le plugin fonctionne pas ou mal chez vous, c’est une version Beta.

Le plugin QueuedTracking pour Piwik

Ce plugin écrit toutes les demandes de suivi dans une instance Redis au lieu d’écrire directement dans la base de données. Ce qui permet de réduire les latences lorsque sur le site en question, le serveur ne peut traiter toutes les requêtes analytiques venant de tous les visiteurs. Le plugin va créer une file d’attente pour avec l’aide de Redis, qui seront ensuite envoyées en base de données pour traitement.
Ce plugin est actuellement en version BETA et peut causer certaines problèmes.

Mon serveur web

Pour rappel voici mon serveur web :

La doc d’installation du plugin précise les dépendances suivantes :

A savoir, je n’ai pas réussi à compiler phpredis avec PHP 7, mais ça fonctionne très bien en installant le paquet php-redis.

Installer redis-server et php-redis

apt install redis-server php-redis

Installer et configurer le plugin QueuedTracking dans l’interface de Piwik

A ce stade, tout ce qui suit va se passer dans l’interface web de Piwik.

Installer le plugin

Rien de compliquer pour installer le plugin, suivre ces étapes :

piwik-01

piwik-02

piwik-03

piwik-04

Configurer le plugin

Pour la configuration du plugin, cela dépend de la puissance du serveur pour les paramètres de « Number of queue workers » et « Number of requets are processed in one batch ». Il est possible d’augmenter les valeurs par défauts tout en faisant des tests… Voici les valeurs que j’ai renseigné :

queudtracking-piwik-plugin

Configuration du plugin QueuedTracking sur le serveur

Si pour une raison ou une autre, il est possible que l’option « Process during tracking request » ne fonctionne pas, dans ce cas il faut créer une tache planfiée, qui s’exécute toute le minute avec l’aide du crontab :

crontab -e
*/1 * * * * /var/www/piwik/console queuedtracking:process >/dev/null 2>&1
systemctl restart cron

Relance du serveur PHP et de Redis

Une fois tous les réglages et paramètres effectués, le serveur PHP et Redis vont être redémarrés :

systemctl restart redis-server
systemctl restart php7.0-fpm

Test du plugin sur le serveur

Voici la commande pour tester le bon fonctionnement du plugin sur le serveur :

/var/www/piwik/console queuedtracking:test

queuedtracking-test

Monitoring de QueuedTracking

Pour visualiser en temps réel le travail du plugin :

/var/www/piwik/console queuedtracking:monitor

piwik-monitor

Test du blog avec les outils GTmetrix et tools.pingdom.com

Pour commencer, je vais utliser le service en ligne tools.pingdom.com :

  • Avant la mise en place du plugin :
  • pingdom-memolinux-piwik-nooptimize

  • Après la mise en place du plugin :
  • piwik-pingdom-13ms

  • Et un p’tit tour sur Gtmetrix :
  • gtmetrix-memolinux

Sur mon serveur, ce petit plugin fonctionne parfaitement et m’a permis de réduire encore un peu le temps de chargement des pages du blog :-D

Partager l'article :





fred

"Dire que l'on s'en fiche du droit à la vie privée sous prétexte qu'on a rien à cacher, c'est comme déclarer que l'on se fiche du droit à la liberté d'expression sous prétexte qu'on a rien à dire." Edward Snowden

3 commentaires

  1. Pour info le paquet c’est soit php5-redis depuis les dépôts jessie soit php7.0-redis depuis dotdeb :)

    PS : je crois que la partie installer le plugin est vide… :p

Laisser un commentaire

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