Dernièrement, j'ai été amené à installer XCache sur ma dedibox à la place d'eAccelerator qui est actuellement incompatible avec PHP 5.2.5.
XCache comme eAccelerator sont des caches opcode php. Pour rappel php est langage scripté, il est normalement interprété à la volée par le parseur php. Les caches opcode permettent d'éviter cette étape de parsing. Pour plus de détails sur l'opcode rendez-vous sur cette page wikipedia.
Voyons comment installer et configurer XCache dans la suite de cet article.
L'installation de XCache sur une dedibox sous debian est très simple. Commencez par installer le paquet avec cette commande :
~ apt-get install xcacheIl faut ensuite configurer votre fichier php.ini et y déclarer les lignes suivantes :
zend_extension = "/usr/lib/php5/20060613/xcache.so"
xcache.admin.user = "admin_user_name"
xcache.admin.pass = "md5_password"
xcache.cacher = On
xcache.size = 64M
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 0
xcache.var_slots = 8K
xcache.var_ttl = 300
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.readonly_protection = Off
xcache.stat = On
xcache.mmap_path = "/dev/zero"
xcache.optimizer = OffCes paramètres déclarent un cache opcode de 64Mo. Il s'agit de la configuration pour mon serveur, elle n'est donc pas forcement adaptée au votre. Pour plus de détails sur les différentes options, rendez-vous sur cette page.
La fonctionnalité sympathique qu'on ne trouve pas avec eAccelerator c'est l'interface d'administration.

Cette interface permet de voir l'état du cache et aussi contrôler son contenu.
Petit bémol, quand j'ai installé le paquet XCache, je n'ai pas réussi à trouver l'interface d'administration, elle n'est peut être pas dans le paquet. Je suis donc passé par un checkout de XCache :
~ $ mkdir ~/src
~ $ cd ~/src
~/src $ svn co svn://svn.lighttpd.net/xcache/trunk xcache-trunk
~/src $ cd xcache-trunk
~/src/xcache-trunk $ lsJ'ai ensuite recopié le répertoire 'admin' dans un emplacement accessible par apache.
Je me suis ensuite penché sur le côté performances d'XCache avec un bon vieux apache bench.
Résultats d'un apache bench sans XCache :
~ ab -n 1000 -c 10 http://www.bonvga.net/xcache-test.php
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking www.bonvga.net (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests
Server Software: Apache/2.2.3
Server Hostname: www.bonvga.net
Server Port: 80
Document Path: /xcache-test.php
Document Length: 11 bytes
Concurrency Level: 10
Time taken for tests: 20.389893 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 238000 bytes
HTML transferred: 11000 bytes
Requests per second: 49.04 [#/sec] (mean)
Time per request: 203.899 [ms] (mean)
Time per request: 20.390 [ms] (mean, across all concurrent requests)
Transfer rate: 11.38 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 3 26.4 0 401
Processing: 3 199 382.5 61 2017
Waiting: 0 196 382.9 60 2016
Total: 12 202 386.6 61 2017
Percentage of the requests served within a certain time (ms)
50% 61
66% 63
75% 65
80% 94
90% 1000
95% 1026
98% 1729
99% 2016
100% 2017 (longest request)Je note 49 requètes par secondes.
Voyons ce que ça donne avec XCache :
~ ab -n 1000 -c 10 http://www.bonvga.net/xcache-test.php
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking www.bonvga.net (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests
Server Software: Apache/2.2.3
Server Hostname: www.bonvga.net
Server Port: 80
Document Path: /xcache-test.php
Document Length: 11 bytes
Concurrency Level: 10
Time taken for tests: 11.271439 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 238000 bytes
HTML transferred: 11000 bytes
Requests per second: 88.72 [#/sec] (mean)
Time per request: 112.714 [ms] (mean)
Time per request: 11.271 [ms] (mean, across all concurrent requests)
Transfer rate: 20.58 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 1
Processing: 11 111 205.4 58 1185
Waiting: 11 111 205.5 58 1184
Total: 11 111 205.4 58 1185
Percentage of the requests served within a certain time (ms)
50% 58
66% 60
75% 63
80% 75
90% 148
95% 791
98% 1010
99% 1018
100% 1185 (longest request)Je note 88 requètes par secondes avec XCache, c'est presque 2 fois plus que sans le support XCache !
Je n'ai pas comparé les performances entre XCache et eAccelerator car celles-ci doivent être très proche, mais ce dernier ne supportant pas encore php 5.2.5, j'adopte donc XCache.
Voila ! Il fallait que tu te la pètes ! 
-----------------------------------------------------------------------------------
[BLOG] http://www.monsterfamily.fr
Merci pour l'info, combiné à memcache sur du joomla 1.5 ca a boosté énormément mes perfs