La boîte à outils des utilisateurs de Magento : ressources, analyses, trucs et astuces, dossiers, extensions, tests

Purger les sessions Magento, c’est utile !

Magento dispose d’un outil d’installation rapide, simple et efficace, mais une fois que vous avez passé les 5 minutes de cette opération basique, il reste 99,99 % du travail à faire avant d’ouvrir le site au public.

Parmi les petits trucs qu’il vaut mieux ne pas oublier sur un serveur à fort trafic, il y a la purge des sessions Magento. Si vous choisissez de stocker les sessions utilisateurs dans des fichiers (l’autre option étant de les stocker dans la base de données), ils viendront s’ajouter les uns après les autres dans le dossier var/session de Magento, sans jamais être supprimés.

Le problème, c’est qu’un serveur, même puissant et bien optimisé, accepte mal plusieurs millions de fichiers dans un seul dossier. Il devient même impossible de faire une simple commande ls pour lister son contenu : le serveur vous rendra la main plusieurs heures après… s’il y parvient !

Il faut donc purger les fichiers de sessions régulièrement. Les plus pressés feront un simple rm -rf du dossier session. C’est basique mais un peu brutal. Les utilisateurs et clients connectés ne vont pas forcément apprécier la perte de leur session et des commandes en cours…

J’ai eu le cas aujourd’hui sur un serveur dont la purge n’avait pas été mise en place. Avant de l’ajouter, j’ai vérifié que je pouvais gagner les longues minutes de purge de plus d’un millions de fichiers en supprimant directement le dossier session. Un rapide contrôle du trafic, des sessions et des commandes en cours : aïe, il y a trop de monde. Environ 200 sessions probables (selon temps de visite moyen) avec un taux de transformation de 6% et un panier moyen de 90€, ça me donne… 1080 € de pertes pour une simple commande rm -rf ! Un peu cher, je trouve. J’exécute donc une purge par date de fichiers et je laisse faire le serveur :

find . -atime +1 | xargs rm -f

90 minutes plus tard, tous les fichiers non utilisés depuis 48h sont supprimés (oui, +1 donne bien 2 jours, et non 1…). Je n’en ai plus « que » quelques milliers. Il reste à automatiser cette commande via crontab (en ajoutant les chemins absolus, bien entendu) et le tour est joué.

Sauf qu’il y a encore moyen d’améliorer tout ça, comme par exemple monter le dossier var de Magento en RAM. On gagne énormément en performances sur la gestions des sessions et du cache. Mais c’est une autre histoire…

Au passage , cette petite anecdote montre aussi qu’il ne faut jamais perdre de vue le métier de son client ou employeur. Certaines opérations menées sans réflexion et sans contrôle peuvent rapidement coûter très cher sur un site e-commerce. Il faut avoir en permanence le réflex d’évaluer la perte d’exploitation liée à une opération, même minime. En fin de mois, le cumul peut représenter bien plus que le salaire perçu…

Vous pouvez suivre les réponses grâce au flux RSS 2.0.