De l’interêt d’un peu d’opcode cache quand on utilise un langage interpreté

Les utilisateurs l’oublient souvent, php c’est bien beau et pratique, mais c’est un langage interprété à chaque utilisation .. Ce qui donne des résultats catastrophiques en termes de performance ..

D’où l’apparation d’outils tels qu’apc, eaccelerator, xcache ..

Personnellement, je n’ai pas constaté à ce jour de grosse différence entre les deux premiers et trouve le dernier un peu moins pratique à l’utilisation .. Je vous laisse comparer par vous même ;)

Installation et attribution de 512mo de ram pour le cache:

apt-get install php-apc
echo "apc.enabled=1" >> /etc/php5/conf.d/apc.ini
echo "apc.shm_size=512" >> /etc/php5/conf.d/apc.ini

Pour en revenir à l’intérêt de notre opcode, sur cette page, nous avions vu qu’un lamp sans configuration/optimisation pouvait nous renvoyer 23 pages par seconde.

Voyons voir maintenant :

guillaume@mars:~ # ab -n1000 -c 23 http://test-joomla.domaine.com/
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/
Benchmarking test-joomla.domaine.com (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.16
Server Hostname:        test-joomla.domaine.com
Server Port:            80
Document Path:          /
Document Length:        15155 bytes
Concurrency Level:      23
Time taken for tests:   26.154066 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      15543000 bytes
HTML transferred:       15155000 bytes
Requests per second:    38.23 [#/sec] (mean)
Time per request:       601.544 [ms] (mean)
Time per request:       26.154 [ms] (mean, across all concurrent requests)
Transfer rate:          580.33 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        4   34 298.6      4    3004
Processing:   250  561  83.7    580     724
Waiting:      213  527  78.3    544     666
Total:        254  595 313.5    584    3675
Percentage of the requests served within a certain time (ms)
  50%    584
  66%    599
  75%    611
  80%    619
  90%    639
  95%    657
  98%    689
  99%   3536
 100%   3675 (longest request)

Et bien, on a réussi à faire descendre le temps par requête de 42 à 26ms, et on peut dorénavant servir jusqu’à 38 requêtes en simultané. Plutôt pas mal l’opcode non ? ;)

Comments are closed.