Utiliser un cache en ram pour WordPress

11 décembre 2008 - 15 commentaires

Je sais, c’est du bien barbu comme sujet, mais bon on ne se refait pas et je trouve le bousin efficace donc je vous livre l’info cela peut en intéresser certain(e)s

Si vous voulez héberger un blog WordPress avec votre propre serveur et sans que cela vous coûte un bras, vous avez surement jeté un oeil aux offres de type RPS (real private server)

Il s’agit de petits serveurs économiques ayant pour principal point faible l’absence de disque dur intégré: Ils partagent un disque réseau avec les autres serveurs du même type.
Dès qu’il y a un peu de monde sur un blog il est recommandé de mettre en œuvre un système de cache (super cache par ex)
Malheureusement le gain habituel du cache est (quasi) perdu par le temps d’accès au disque réseau du serveur RPS.

Voici comment on peut contourner le problème et s’offrir un blog qui dépote bien pour ~10€ par mois:
Une fois le blog installé et fonctionnel,

- installez un serveur memcached sur le serveur RPS:
« apt-get install memcached » (commande Debian)

- placez ces deux fichiers dans le répertoire wp-content de votre blog.

- démarrez le serveur memcached (si cela n’est pas déjà le cas) :
« /etc/init.d/memcached start »

Et voilà !
Désormais le cache de votre blog se trouve en mémoire vive (RAM) et ne demande plus d’accès au très lent disque réseau de votre serveur RPS.

2 tips :
- Memcached demande de temps en temps un redémarrage « /etc/init.d/memcached restart » (cela videra le contenu du cache)
- Lors d’une mise à jour de WordPress faites gaffe à ne pas écraser les 2 fichiers de cette méthode + redémarrez memcache car la version de WP y est stockée: du coup WP est persuadé que la maj n’est pas effective.

PS: Je viens d’effectuer la mise à jour vers WordPress 2.7 et cela semble parfaitement fonctionner.

blog-ram-memcached

Discussion:

  • Gonzague dit :

    Hmmmh … mais combien de mémoire ça mange et surtout .. jusque quel trafic ça tient ?

    Par exemple sur un site avec 7000 visites jour, est-ce ça va pas commencer à faire mal ? ^^

  • mrboo dit :

    Gonzague> en fait le serveur memcached se contigure: tu lui indique quel quantité de ram tu souhaites lui allouer, lorsque cette limite arrive les plus vielles pages sortent du cache.
    Pour info il me semble avoir lu que facebook utilise une ferme de 600 serveurs dédiés uniquement à memcached: ça peut tenir pas mal à mon avis ;)

  • fx dit :

    Comme le tribulateur Pfioouuuu :-) , je vais me laisser pousser la barbe et je reviens lire le billet dans une semaine…
    ça me rappelle une discussion avec un pro du web qui me disait que selon lui pour gagner sa vie sur le net il fallait absolument savoir « tout faire »… déjà que le PHP je limite juste la casse, alors les serveurs…

  • Al-Kanz dit :

    Si je me peux me permettre et avec l’autorisation du Tribulateur : Pfiouuu, itou :)

  • Ray Dacteur dit :

    (si je peux me permettre) Pfiouuu aussi.

  • ophise dit :

    Bon j’ai rien compris mais le sujet me permet de poser une question qui me taraude (carrément). Si (et je dis bien « si » parce que les trucs de barbus bon bref) je me lancais dans un blog sous WordPress (j’ai bien compris que je devais télécharger le truc, avoir un hébergeur – j’ai – etc…) est-ce qu’il est envisageable d’être à plusieurs auteurs, depuis plusieurs postes informatiques, plusieurs lieux dont des web-cafés, sur ce blog ???
    Parce que c’est bien pour cela que les « plate-formes » (gratuites ou payantes) marchent si bien : possibilité d’accéder de n’importe où, sans locigiel particulier, etc…
    Je suis HS mais… même pas honte :) !!!!

  • jrome dit :

    @ophise: de ce que je sens dans tes propos, je te conseille vivement d’ouvrir un blog sur http://www.wordpress.com. Ca te prend 10 secondes, accessible de partout, multi auteurs si tu veux, rien à gérer, rien à installer.
    Pour MrBoo c’est différent, il a des besoins de grand blogueur ;) , il doit maîtriser sa plateforme, donc il l’a installée « chez lui », mais si je sens bien les choses, tu cherches un truc pratique. Tout ce dont il parle concerne les gens qui héberge leur blog sur un espace web à eux. Ca demande un peu plus de connaissances en informatique.

  • Tuxyroots dit :

    Tu t’en doutais bien François que j’allais débarquer dans les commentaires :)
    Pour la petite histoire, memcached à été developpé pour le site LiveJournal qui à l’époque desservait 20 millions de page dynamiques par jour … (la suite à lire sur le site officiel de memcached)
    Coté charge, ça tient le coup et ça dépote ! (même si je maintiens qu’il faut coupler ça avec un cache php comme eaccelerator + mod deflate ou gzip pour un maximum de gain et de réactivité).
    Au niveau de memcached, pas besoin de le redémarrer pour le vider au contraire. S’il y a une bonne gestion du cache côté soft, les données sont stockées avec une « date de validité ». Passé cette date, la donnée n’est plus valide, elle est donc à nouveau récupérée (par exemple dans la base de données) et mise en cache avec un « numéro de version » incrémenté. L’ancienne donnée n’est pas effacée, mais comme son numéro de version est plus ancien elle n’est plus utilisée. Lorsque le cache est plein, les données les plus anciennes sont écrasées au profit de nouvelles données plus fraiches. Il n’y a donc pas besoin de redémarrer le cache afin de le vider (encore une fois, en partant du principe que la partie soft à une bonne gestion du cache).
    Le module memcache pour php est vraiment bien fait, et on peut créer un pool de serveurs très facilement, le module sait exactement sur quel serveur se trouve une donnée en particulier. Quand un serveur tombe, memcache s’adapte.
    Pour un site à fort trafic j’avais mis en place un pool de 6 serveurs avec chacun 1GB dédié à memcached (en soutien à MySQL) et c’est que du bonheur puisque le nombre de requêtes/s à pu être baissé de plus de 80% ! (je n’exagère pas)

    Gonzague > avec 7000 vu/j ça ne peut que faire du bien ! Parfois il suffit d’un petit cache de 128MB pour soulager le serveur de base de données et redonner du « peps » à tout un site.

    mrboo > « Memcache::getStats » fourni une flopée d’infos sur l’utilisation du cache, c’est intéressant d’y jeter un oeil (enfin je doute que ça intéresse tout le monde, mais toi sans doute ;) )

    Cette année encore je n’ai pas mis de rasoir sur ma liste de cadeaux de Noël … ma barbe, je la garde !

  • Gonzague dit :

    tiens aussi y aurait pas un fichier à personnaliser ( je ne sais où ) quand on a plusieurs blogs qui doivent utiliser memcache ? ^^

  • Gonzague dit :

    ahh et apparemment il est mieux de l’installer ainsi: http://www.lullabot.com/articles/how_install_memcache_debian_etch

    je n’ai pas encore essayé ^^

  • mrboo dit :

    Vu la différence de complexité entre la version en 3 lignes de commande et la version « je m’amuse à compiler le serveur memcached + je fais joujou avec Pecl » il faudra vraiment que le gain soit significatif pour choisir cette voie.
    Mais clairement la méthode que tu indique est plus pro, ne serai-ce que le fait d’utiliser une extension Pecl c’est toujours beaucoup plus performant que de passer par du script.
    Merci pour le lien.

  • Gonzague dit :

    oh et je me suis aussi installé un petit truc : une page qui fait dashboard pour memcached , qui fait un état des lieux du ou des serveurs memcached en route

  • mrboo dit :

    Gonzague> fais gaffe ça fini par créer une dépendance ;)

  • ophise dit :

    Merci Jrome : vais faire ce que tu dis de ce pas !!! (j’avais compris que c’était compliqué mais si WordPress est « une plate-forme » comme les autres… ça ira à ma blonditude kinder :) )

  • Comments closed