Optimisez les performances de votre site avec Memcached
Parmi toutes les optimisations possibles pour un blog, un site ou une application, on retrouve Memcached qui se positionne comme un système de cache d’objets distribué et non répliqué. Initialement développé par Danga pour Livejournal, c’est un outil open source qui est maintenant utilisé par de nombreux sites (Facebook, Youtube, mon blog, Flickr, etc.)
J’utilise Memcached sur le serveur de mon blog depuis quelques mois, et la différence avec/sans est assez flagrante.
Pour comprendre son utilité, je rappelle simplement que les temps d’accès à la mémoire vive d’un serveur sont nettement supérieurs à ceux d’un disque (nanosecondes VS millisecondes, cad un ratio compris entre 10 000 et 100 000).
C’est là que Memcached intervient. Il va créer des tableaux de données en RAM : cela va contribuer à réduire le nombre de fois qu’une même donnée stockée sur un périphérique de stockage mécanique est lue.
La principale chose à comprendre avec Memcached est qu’il s’agit d’un système d’usage général, et que les applications doivent être « conscientes » de sa présence. Ce n’est pas quelque chose de magique, qu’il suffit d’installer pour multiplier les performances par 10. Il faudra a minima installer un plugin si vous utilisez un CMS, voire repasser dans une partie du code.
Sous forme d’architecture client-serveur, Memcached se présente comme un démon qui écoute par défaut sur le port 11211. Le système créé des tableaux dont les clés de 250 octets pointent vers des valeurs qui peuvent avoir jusqu’à 1 Mo (mégaoctet). Si la quantité de mémoire allouée est pleine, les clés les plus anciennes sont supprimées (méthode Least Recently Used). Comme les données sont stockées en RAM, elles seront perdues si le serveur redémarre.
Il est possibles d’utiliser plusieurs instances Memcached. Par exemple, une application ABC peut mettre des données en cache sur 3 serveurs différents :
- memcached1.monappli.com
- memcached2.monappli.com
- memcached3.monappli.com
Chaque serveur sera autonome et ne communiquera pas avec ses voisins.
Il est possible de répliquer des instances Memcached, mais ceci est une autre histoire !
Un grand nombre de librairies clientes pour accéder à Memcached sont disponibles : C/C++, PHP, Java, Windows/.Net, Ruby, Perl, etc.
Performances : avec / sans Memcached sur un WordPress
Pour vérifier le gain de performances, j’ai utilisé un serveur de test, avec une installation de WordPress vierge. J’ai fait un test de charge avec ApacheBench, avec et sans Memcached activé.
Benchmark :
- WordPress sans Memcached : 8,75 requêtes / secondes,
- WordPress avec Memcached : 150 requêtes / secondes.
Nb : il s’agit d’une installation d’Apache2 avec un paramétrage par défaut sur une CentOS 5.5 32 bits, 1 vCPU 2 Ghz, 512 Mo de Ram.
En conclusion, Memcached est un élément non négligeable qu’il est bon d’intégrer dans la conception d’une application. Cependant, comme c’est une couche d’intégration supplémentaire, il faut faire en sorte que l’application soit consciente que système existe.
Je reviendrais plus tard sur l’installation de Memcached…
Commentaire by Nicolargo — 10 mars 2011 @ 13:46
Super billet d’introduction sur cette brique logicielle devenue très à la mode ces derniers temps.
A noter que NGinx (l’autre Apache) est livré près configuré avec un module pour s’interfacer avec MemCached, une combo à étudier
Commentaire by Ludovic — 13 mars 2011 @ 0:52
Il te manque un serveur Web en frontal qui va directement piocher dans le memcached
http://www.geeek.org/post/l-ar.....ormant-021
Commentaire by Romain — 13 mars 2011 @ 14:52
@Ludovic > Oui, j’ai déjà fait tout ça pour mon blog (http://www.woueb.net/2010/10/1.....woueb-net/).
Ici le but est plutôt de vulgariser pour les gens qui ne connaitraient pas, ou qui cherche des infos…
Ping by Surveillez vos serveurs Memcached « wOueb by Romain DECKER / Another IT Guy Blog — 18 mars 2011 @ 13:26
[...] un court article d’introduction sur Memcached, je reviens sur son [...]