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 ?