Utiliser un cache en ram pour WordPress

le 11 décembre 2008 à 15:52 par mrboo

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

Tags: , ,

15 commentaires pour “Utiliser un cache en ram pour WordPress”

Aller au dernier commentaire | retourner à la racine du blog
  1. 1Le Tribulateur dit :

    Pfiouuuu…. :)

  2. 2Gonzague 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 ? ^^

  3. 3mrboo 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 ;)

  4. 4fx 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…

  5. 5Al-Kanz dit :

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

  6. 6Ray Dacteur dit :

    (si je peux me permettre) Pfiouuu aussi.

  7. 7ophise 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 :) !!!!

  8. 8jrome 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.

  9. 9Tuxyroots 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 !

  10. 10Gonzague dit :

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

  11. 11Gonzague 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é ^^

  12. 12mrboo 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.

  13. 13Gonzague 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

  14. 14mrboo dit :

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

  15. 15ophise 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 :) )

Vu sur Twitter

Voici quelques tweets qu'il me semble intéressant de relayer ici.

@w_a_s_t_e Comment vérifier que les contenus des serveurs d'une réplication MySQL sont bien synchronisés http://bit.ly/aEF10q
@Charles_Liebert My good deeds... HUGE: Facebook Lets Publishers Contact “Likers” http://bit.ly/d7OO3O
@nitot RT @shappy85, @TechCrunch: Firefox Just Perfected Tabbed Browsing. It’s Like Apple’s Expose + Spaces http://tcrn.ch/cBdFoZ
@yesibuzz RT @denismigot: Bjr,je suis à la recherche d'un poste de chef de projet web/print http://tiny.cc/9rk5c #emploi #job @cvdujour @mrboo
@denismigot Bjr,je suis à la recherche d'un poste de chef de projet web/print http://tiny.cc/9rk5c #emploi #job @cvdujour @mrboo
@Pome_Granate @cvdujour Voici mon cv... pour un poste d'assistante marketing en alternance dès sept 2010 http://www.doyoubuzz.com/esther-meranville
@Korben RT @FHDR: w0of! Didier Porte sa premiere chronique chez @SI : " Hess Val les pantins de l'Elysée" http://bit.ly/an0zM1 manif ce soir à 18h
@xuoan Analyse de la home de Basecamp et du parcours d'inscription : http://xu.tl/2Q Peu de hasard chez 37signals...
@LaFermeDuWeb Une classe PHP pour utiliser l'API Google Translate facilement: http://fdw.lu/aCb
@LaFermeDuWeb Un slider à l'effet 3D avec Mootools: http://fdw.lu/aCB
@BlouLapinou @mrboo C'est pas tout à fait le même, mais ça devrait aller: http://bit.ly/cOSz10
@jcfrog oh punaise, @loic parle français! ça m'a surpris :) http://goo.gl/mFeU keynote marques et réseaux sociaux
@Charles_Liebert My good deeds... Landing Pages That Convert | Chance Barnett http://bit.ly/a68k4s
@xuoan Chez Smashing, 10 outils pour déposer et gérer des noms de domaine : http://xu.tl/1l
@creaplume @cvdujour : chargée de communication et / ou infographiste polyvalente web et print - RA - mon cv : http://www.creaplume.net/mr2010.pdf
@EddyPierre http://www.doyoubuzz.com/eddy-pierre-larra : voici mon CV, je recherche un poste dans la traduction, pouvez-vous RT svp ?? merci beaucoup
@w_a_s_t_e Pour les germanophones (slides en anglais pour les autres), une leçon d'optimisation et de scaling MySQL http://tinyurl.com/28wccr7 #li
@w_a_s_t_e Vous pensez savoir ce qu'est le Load Average? Rien n'est moins sûr. http://tinyurl.com/mjtnx (article en plusieurs parties)
@w_a_s_t_e BigPipe, un procédé PHP+Javascript utilisé par Facebook pour découper & servir ses pages Web de façon performante http://tinyurl.com/2dk55xb
@adelivet #frenchmobile grapple "une application pour tous". Création d'appli mobile native pour tous les mobiles du marché. Résoud le pb des devices