Skip to content

Xcache, dopez votre serveur web !

par billux le 9 mai 2010
xcache-tortue-rockette

Vous trouvez votre serveur web lent, votre site comporte beaucoup de PHP ? Alors voici la solution qu’il vous faut : un cache opcode PHP. Plusieurs caches opcodes (aussi appelés accélérateurs PHP) existent, comme Eaccelerator, phpa… mais j’ai choisi Xcache, qui à l’avantage d’être stable et de supporter les dernières versions de PHP.

Comment cela fonctionne ?

Expliqué rapidement, le cache permet de garder en mémoire une version précompilé (appelé opcode) du code PHP. Ansi, on économise toute la phase d’interprétation du code php dès la seconde requête sur une page PHP, le module PHP ira chercher directement la page précompilée en mémoire et l’exécutera.

C’est efficace ?

Carrément ! Il est actuellement en place sur mon serveur, et les pages WordPress (donc énormément de PHP dedans) s’affichent beaucoup plus rapidement qu’avant. La charge CPU est également moins importante, ce qui permet de servir plus de requêtes par seconde. Malheureusement, je n’ai pas eu le temps de faire des benchs, mais vous pouvez jeter un œil ici, ou les faire vous même avec un Apache Bench ou un Siege.

En moyenne, d’après ce que j’ai trouvé sur Internet, le gain est environ de 3 (les pages s’affichent 3 fois plus vite). Mais il n’est pas rare d’avoir des gains bien meilleur, cela dépend aussi de l’application php exécutée (Moteurs de blogs, CMS, frameworks divers…).

Passons à la configuration

Xcache se trouve dans les dépôts Debian Lenny :

apt-get install php5-xcache

Xcache se charge en tant qu’extension PHP, vous trouverez donc sa configuration dans /etc/php5/conf.d/xcache.ini.
Les directives que vous avez intérêt à modifier son :

  • xcache.size : la taille totale du cache. Plus celle ci est grande, plus Xcache pourra garder de page précompilée. Personnellement, je l’ai mis à 128 Mo, ayant 2 Go de RAM, c’est très largement suffisant pour un WordPress plus un RoundCube plus un DokuWiki. Il faut voir à l’usage ;
  • xcache.count : en combien de morceaux la mémoire réservée au cache doit être divisée. C’est utile pour les processeurs multicores. Les développeurs de Xcache recommandent de mettre cette valeur à (Nb de processeurs)+1 ;
  • xcache.ttl : le durée de vie des pages en cache. S’il n’y a pas foule sur votre site, je vous conseille de la mettre à 0 (durée de vie infinie), ou au pire à une très grande valeur, pour éviter de régénérer les pages cachées trop souvent.

Pour les autres directives, je vous laisse lire le wiki de Xcache.

Xcache dispose d’une interface web permettant de voir diverses statistiques (taux de remplissage du cache, fichiers cachés, etc…).
Son activation se fait dans le même fichier de configuration, en définissant les directives xcache.admin.user et xcache.admin.pass (attention, mot de passe à mettre hashé en md5).
Vous devez ensuite créer un alias dans la configuration de votre serveur web :

  • Pour Lighttpd :
    alias.url += ( "/xcache-admin" => "/usr/share/xcache/admin/" )
  • Pour Apache :
    Alias /xcache-admin /usr/share/xcache/admin

Aperçu de l’interface web

 

Interface d'administration de Xcache - Taux de remplissage du cache

Taux de remplissage du cache


Interface d'administration de Xcache - liste des pages PHP cachées

Liste des pages cachées

2 Commentaires
  1. Seebz, le 18 mai 2010 à 12 h 26 min (permalien)

    Merci pour cet article intéressant, le gain est de 5 pour nos sites avec 60M de cache.

    L’installation n’a pas été aussi facile (il a fallut compiler les sources) mais le résultat est non négligeable ^^

  2. billux, le 18 mai 2010 à 14 h 03 min (permalien)

    Merci pour ce retour d’expérience :)

    Effectivement, en compilant les sources c’est moins simple, par curiosité pourquoi es tu passé par là (le paquet n’était pas disponible dans les dépôts de ta distrib ?)

    Au passage, sympa ton blog ;)

Poster une réponse

NB : Le XHTML est autorisé. Votre adresse email ne sera jamais publiée ou partagée.

S'abonner au flux RSS des commentaires