Here With Me

Le blog technique d'Amaury Balmer qui parle de technologies open-source, mais surtout de WordPress !

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

| 19 Commentaires

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

En effet, j’ai eu l’occasion de tester différents caches (et "optimiseur") 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 possèdent tous les 3 un point commun. Ceux sont des pour . 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 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 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 , 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 :)

19 Commentaires

  1. Pingback : Optimisation serveur et blog Wordpress, les Bases! » JaXX.org

  2. Pingback : mrboo - François de Rochebouët - Fondateur de Hellotipi.com » Archive du blog » Wordpress en mode turbo avec memcache et pecl

Laisser un commentaire

Champs Requis *.