date: 09 May 2010 title: Xcache, dopez votre serveur web ! tags: php, planet-libre, xcache 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](http://2bits.com/articles/benchmarking-drupal-with-php-op-code-caches-apc- eaccelerator-and-xcache-compared.html), 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](http://xcache.lighttpd.net/wiki/XcacheIni). 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 [caption id="attachment_436" align="alignleft" width="250" caption="Taux de remplissage du cache"][![Interface d'administration de Xcache - Taux de remplissage du cache](http://univers-libre.net/wp-content/uploads/2010/05/xcache-admin-stats-25 0x151.png)](http://univers-libre.net/index.php/2010/05/xcache-dopez-votre-serveu r-web/xcache-admin-stats/)[/caption] [caption id="attachment_435" align="alignnone" width="250" caption="Liste des pages cachées"][![Interface d'administration de Xcache - liste des pages PHP cachées](http://univers-libre.net/wp-content/uploads/2010/05/xcache-admin-pages -250x151.png)](http://univers-libre.net/index.php/2010/05/xcache-dopez-votre-ser veur-web/xcache-admin-pages/)[/caption]