Afin d’optimiser les performances de notre site magento, nous allons mettre en place les optimisations suivantes :

  • stockage des sessions dans memcache
  • stockage du cache dans redis

Cette solution  est modulable et applicable à une configuration multi-serveurs.( En centralisant les sessions sur un serveur spécifique, dans ce cas il suffit de replacer l’ip 127.0.0.1, par l’ip du serveur )

Pour commencer il faut installer les services memcached et redis sur votre serveur si ce n’est pas déjà fait

sudo apt-get install redis-server
sudo apt-get install memcached

installer également les librairies memcache pour php

sudo apt-get install php5-memcached php5-memcache

vous pouvez ensuite configurer le fichier local.xml avec les informations suivantes :

Pour la gestion des sessions dans memcache :

<!-- Stockage des sessions dans memcache -->
<session_save><![CDATA[memcache]]></session_save>
<session_save_path><![CDATA[tcp://127.0.0.1:11211?persistent=1&weight=2&timeout=10&retry_interval=10]]></session_save_path>

Les avantages du stockage dans memcache des sessions sont les suivants :

  • accès très rapide aux informations car stockées dans la mémoire vive
  • partage des sessions facile entre plusieurs serveurs

Puis pour la gestion du cache dans Redis :

<!-- Stockage du cache dans redis -->
<cache>
<backend>Mage_Cache_Backend_Redis</backend>
<backend_options>
<server>127.0.0.1</server>              <!-- or absolute path to unix socket or ip -->
<port>6379</port>
<persistent></persistent>               <!-- Specify a unique string like "cache-db0" to enable persistent connections. -->
<database>0</database>
<password></password>
<force_standalone>0</force_standalone>  <!-- 0 for phpredis, 1 for standalone PHP -->
<connect_retries>1</connect_retries>    <!-- Reduces errors due to random connection failures -->
<read_timeout>10</read_timeout>         <!-- Set read timeout duration -->
<automatic_cleaning_factor>0</automatic_cleaning_factor> <!-- Disabled by default -->
<compress_data>1</compress_data>        <!-- 0-9 for compression level, recommended: 0 or 1 -->
<compress_tags>1</compress_tags>        <!-- 0-9 for compression level, recommended: 0 or 1 -->
<compress_threshold>20480</compress_threshold>  <!-- Strings below this size will not be compressed -->
<compression_lib>gzip</compression_lib> <!-- Supports gzip, lzf and snappy -->
</backend_options>
</cache>

Redis vous permets également de gagner en performances par rapport à un stockage standard du cache dans les fichiers.

Une fois ces solutions en place, votre instance de magento devrait tourner plus rapidement 🙂