←back to Blog

WordPress, Memcached et PECL Memcache : La solution pour les blogs a gros trafic !

Votre blog WordPress rame sur votre gros serveur dédié? Voici quelques éléments de réponses…

En effet, j’ai eu l’occasion de tester différents caches (et "optimiseur") OPCode avec une grosse installation de WordPress :

Note: Les plugins permettent à WordPress d’utiliser les caches des utilitaires en lieu et place du système de fichiers (bien plus lent)

Alors, non il n’y aura aucun bench à l’appui de mon discours, juste un retour d’expérience…

APC, XCache et eAccelerator possèdent tous les 3 un point commun. Ceux sont des extensions pour PHP. De ce fait, leur installation est très simple, une ligne en plus dans le fichier php.ini et tout fonctionne ! (ou presque)

A contrario, Memcached n’est pas spécifique à PHP, il peut être utilisé par n’importe quel type de langages… C’est une technologie de cache générique. De ce fait, il est nécessaire d’installer un service sur votre serveur, et une extension à PHP. Autre différence, Memcached n’optimise pas le traitement PHP, il ne fait que de la mise en cache.

Revenons à des choses plus générales…

A quoi sert à ces outils ? A réduire la charge serveur non ?

Donc pour réduire la charge serveur, il faut optimiser l’exécution de PHP pour que ce dernier passe moins de temps sur chaque traitement.

Chose que font a merveille APC, eAccelerator et Xcache avec leur optimisation et cache interne.

Cool ? Non pas vraiment…

Ces outils ont tendance à être plus gourmand en consommation processeur, du coup, le traitement est optimise, plus court probablement, mais la consommation CPU de votre serveur augmente… Donc votre serveur est plus lent…

L’effet recherché n’est pas la…

Que faire alors ?

Que faire alors ?

Et bah contrairement à nos 3 gugusses, Memcached ne gère que la mise en cache, et il le fait très bien, et il le fait surtout de manière économique pour le processeur… Du coup, l’utilisation de Memcached est bien plus efficace.

Alors maintenant, la charge du serveur a baissée… mais les pages mettent toujours 2 secondes pour s’afficher, vu que le code PHP de WordPress n’est pas optimisé…

Un casse tête ? Pas vraiment…

eAccelerator et Memcached fonctionne très bien à 2…

  • eAccelerator optimise le code PHP
  • Memcached met en cache les résultats et diverses variables PHP

Et voila le duo gagnant, vos page sont rapides, et la charge de votre serveur est correcte…

Quelques chiffres… sur une journée (24h):

  • eAccelerator seul :  0.8 (consommation CPU moyenne)
  • Memcached seul : 0.6
  • eAccelerator + Memcached  : 0.4

Le choix coule de source…

Maintenant quelques ressources

Un tutorial pour installer une version récente de Memcached sur une Debian Etch

Il existe un plugin WordPress pour memcache, mais ce dernier utilise une classe d’émulation à la place de l’extension PHP. Cela va s’en dire que les performances sont moindres… vu que le code PHP est plus lent que l’extension en C…

Je mets donc à disposition une classe de cache exploitant l’extension PECL:Memcache et Memcached pour WordPress !

Cette classe est théoriquement compatible avec WPmu, mais je n’ai pas encore testé.

Ryan, un des développeurs de WP, donne quelques infos sur sa version de memcache.

Et contrairement à lui, la méthodologie pour ajouter vos serveurs Memcached à mon plugin est la suivante:

$memcached_servers[] = array( ‘host’ => ‘127.0.0.1’, ‘port’ => 11211, ‘persistant’ => true );

C’est un point que je n’aborde pas, mais Memcached peut être répandu sur des clusters de serveurs… c’est la méthode WordPress.com !

Dernier point

Je base cet article sur mon expérience de différents serveurs, 3 différents. Le raisonnement est vérifié sur ces 3 serveurs.

Si vous avez d’autres techniques… je suis preneur :)

15 réponses à “WordPress, Memcached et PECL Memcache : La solution pour les blogs a gros trafic !”

  1. Avatar de Amaury
    Amaury

    Bah c'est mignon… mais ça inclut perte de fonctionnalités (compteur de vues, votes, etc.)

    Pas franchement convaincu !

  2. Avatar de Ally
    Ally

    Non non ce n'était pas pour te convaincre :-)) mais pour avoir un avis éclairé :-) merci, quelle réactivité !

  3. Avatar de IBuzzyou
    IBuzzyou

    Très bon article, plein de bons conseils pour l’optimisation du cache, memcached a toujours un problème sur les serveurs hébergeant plusieurs blogs wordpress ?

  4. Avatar de Djibs
    Djibs

    salut,

    je voulais savoir si ton article est tjs d’actualité avec les différentes mis à jorus qu’il y a pu avoir.

    Est ce que ton script pour memcache est tjs mieux que la version actuelle du plugin ?
    https://wordpress.org/extend/plugins/memcached/

  5. Avatar de Amaury
    Amaury

    Tu peux désormais utiliser la version du référentielle qui a été actualisée depuis !

  6. Avatar de Djib's
    Djib’s

    merci de m’avoir répondu.

    juste une dernière question.

    il vaut mieux que j’utilise memcache tout seul sur mon wordpress

    ou memcahe+eAccelerator?

    (j’utilise wp-supercahe pour le cache)

  7. Avatar de Amaury
    Amaury

    eAccelerator est trop ancien, peu actualisé. IL est préférable d’utiliser les « optimisateurs » APC ou Xcache.

    Memcache permet uniquement de faire du cache objet, donc l’utiliser en plus de WP-SUPER-Cache risque de ne pas être très efficace. (sauf très gros site)

  8. Avatar de Djib's
    Djib’s

    je tourne sur du wordpress mais avec 2 millions d’utilisateurs, memchache est utile ?

  9. Avatar de Amaury
    Amaury

    Memcache sera utile s’il y a beaucoup de contenu, et de fait beaucoup de page à mettre en cache.

    S’il y a relativement peu de contenu, WP-Super-Cache sera largement sollicité et suffira.

    Ça dépend le nombre de posts ;)

  10. Avatar de Djib's
    Djib’s

    nous somme à peu prêt à 6500 posts (+10-15 par jour) avec environ 120 000 commentaires.

    j’ai mis un cache de 10h ( avec réactualisation de la page si nouveau commentaire ou mise à jour du post)

    d’après ce que j’ai pus lire apc ou xcache sont de alternatives à memcache, donc ne serat-ce pas initule d’installer un des deux en plus de memcache?

    si je devais en installer un en plus de memcache lequel me conseillerais- tu?

  11. Avatar de Amaury
    Amaury

    APC et Xcache font 2 choses accélérer PHP + Cache
    Memcache ne fait que Cache

    Si tu es sur un environnement monoserveur, configure effectivement APC et Xcache sur ton serveur.

    Par ailleurs, tu devrais considérer W3 Total Cache pour gérer ce type de cache, il permet de stocker dans APC/Xcache/Memcache, le cache statique, le cache objet, le cache SQL, etc.

  12. Avatar de Djib's
    Djib’s

    merci pour ces précisons

  13. Avatar de gotcha5832
    gotcha5832

    Merci pour votre article mais je me pose deux questiopn.
    Etant en VDS avec prestashop + WP,
    J'hésite à installer memcached sur le serveur, cependant :
    – si je sais que prestashop fonctionnera nativement, est ce que le WP continura à foinctionner sans rien faire?

    Si memcached fais diminuer la charge CPU, n'augmente t il pas la 'utilisation CPU?