Tester les performances d'Apache
Par LePiaf le mercredi, février 23 2011, 12:11 - Réseaux - Lien permanent
Le serveur est tout prêt, tout monté, le site est en fonctionnement. Comment être sur que le serveur va tenir la charge?
Apache fourni un outil de test disponible avec la commande "ab". Son utilisation est très simple.
ab -k -n 100 -c 5 URL A TESTER
L'option -k permet de tester en mode keep alive. -n est le nombre de requête à envoyer. Et enfin -c est le nombre de connexion simultané.
user@client-host:~# ab -k -n 100 -c 5 http://www.lepiaf-blog.com/index.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.lepiaf-blog.com (be patient).....done
Server Software: Apache
Server Hostname: www.lepiaf-blog.com
Server Port: 80
Document Path: /index.php
Document Length: 115360 bytes
Concurrency Level: 5
Time taken for tests: 319.676 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Keep-Alive requests: 100
Total transferred: 11569805 bytes
HTML transferred: 11536000 bytes
Requests per second: 0.31 [#/sec] (mean)
Time per request: 15983.807 [ms] (mean)
Time per request: 3196.761 [ms] (mean, across all concurrent requests)
Transfer rate: 35.34 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 6.4 0 30
Processing: 6822 15874 3335.1 16415 21244
Waiting: 3409 11918 2140.3 12698 15284
Total: 6822 15875 3337.1 16415 21244
Percentage of the requests served within a certain time (ms)
50% 16415
66% 18055
75% 18380
80% 18477
90% 20294
95% 20539
98% 20918
99% 21244
100% 21244 (longest request)
Nous pouvons voir que les performances sont... nuls
Le test à durée 317 sec, chaque requête a pris en moyenne 15 875 ms. Ce qui est énorme ! 
Le remède, mettre du cache. Du cache partout partout, dans le moteur TPL, dans la compilation du code PHP (cache OPCode), au niveau du server apache, ajouter le module de compression gzip, ...
Après ça, relancer le test
user@client-host:~# ab -k -n 100 -c 5 http://www.lepiaf-blog.com/index.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.lepiaf-blog.com (be patient).....done
Server Software: Apache
Server Hostname: www.lepiaf-blog.com
Server Port: 80
Document Path: /index.php
Document Length: 57686 bytes
Concurrency Level: 5
Time taken for tests: 135.849 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Keep-Alive requests: 100
Total transferred: 5798705 bytes
HTML transferred: 5768600 bytes
Requests per second: 0.74 [#/sec] (mean)
Time per request: 6792.474 [ms] (mean)
Time per request: 1358.495 [ms] (mean, across all concurrent requests)
Transfer rate: 41.68 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 6.7 0 33
Processing: 1965 6784 1780.5 7546 8564
Waiting: 1190 4717 1224.5 5258 5769
Total: 1965 6786 1782.0 7546 8593
Percentage of the requests served within a certain time (ms)
50% 7546
66% 7941
75% 8060
80% 8125
90% 8313
95% 8537
98% 8593
99% 8593
100% 8593 (longest request)
C'est beaucoup mieux
Le test à duré 135 sec, et chaque requête a mis en moyenne 6 786ms., soit un gain d'environ 60% de performance. Ce qui n'est pas négligeable 
Il est possible de faire un export en CVS pour consulter les données ultérieurement.
ab -k -n 100 -c 5 -e lepiaf-blog-perf.cvs http://www.lepiaf-blog.com/index.php

Source: cyberciti.biz


Derniers commentaires