|
|
Software version |
2.3 |
Operating System |
Ubuntu 12.10 |
Website |
Apache Website |
Last Update |
16/01/2013 |
Others |
Server : Debian 7 |
1 Introduction
Il est utile de savoir combien de connexion son serveur web est capable de délivrer. Il est important de pouvoir voir comment se comporte votre serveur sous la charge. C'est pourquoi il est nécessaire de le benchmarker. Nous allons voir ici comment le benchmarker, puis nous verrons quelques différences lorsque l'on utilise des serveurs de cache.
Pour mes tests, je suis parti avec un serveur Nginx, puis j'ai rajouté un serveur Varnish en frontal.
2 Installation
Pour bencher, il existe la commande ab (Apache Benchmark). Pour l'installer :
|
aptitude install apache2-utils
|
3 Lancement des benchs
Voici comment utiliser la commande ab :
ab
|
ab -c <occurences> -t <time> <site_web>
|
- occurences : permet de définir le nombre de requêtes effectuées en parallèle
- time : le temps (en secondes) que les tests doivent durer
- site_web : le site web à bencher (utilisez une adresse complète, comme par exemple sur un index.php ou index.html)
Les tests proposés ci dessous sont fait entre un serveur avec une bande passante d'1Gb/s et côté client 100Mb/s à travers Internet. Pourtant, il est important de comprendre que la source de vos lancement de tests est extrêmement importante.
Effectivement, un réseau local ou loopback sera bien plus parlant en terme de benchs qu'un réseau Internet.
Notes
|
Je vous conseil donc de faire vos benchs sur du loopback si vous en avez la possibilité
|
3.1 Wordpress
Voici la commande que j'ai utilisé pour benché mon blog :
ab
|
> ab -c 5 -t 30 http://blog.deimos.fr/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 blog.deimos.fr (be patient)
Completed 5000 requests
Completed 10000 requests
Finished 11072 requests
Server Software: nginx
Server Hostname: blog.deimos.fr
Server Port: 80
Document Path: /index.php
Document Length: 0 bytes
Concurrency Level: 5
Time taken for tests: 30.003 seconds
Complete requests: 11072
Failed requests: 0
Write errors: 0
Non-2xx responses: 11072
Total transferred: 2911936 bytes
HTML transferred: 0 bytes
Requests per second: 369.03 [#/sec] (mean)Time per request: 13.549 [ms] (mean)
Time per request: 2.710 [ms] (mean, across all concurrent requests)
Transfer rate: 94.78 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 6 3.5 6 109
Processing: 4 7 12.6 7 388
Waiting: 4 7 12.6 7 388
Total: 9 14 13.1 13 395
Percentage of the requests served within a certain time (ms)
50% 13
66% 13
75% 14
80% 14
90% 14
95% 14
98% 15
99% 16
100% 395 (longest request)
|
Ici, le serveur est capable de prendre 369 requêtes par secondes. Ce qui est pas mal, mais le CPU côté serveur était proche des 80%.
Maintenant, ajoutons un serveur de cache tel que Varnish, puis relançons les benchs :
ab
|
> ab -c 5 -t 30 http://blog.deimos.fr/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 blog.deimos.fr (be patient)
Completed 5000 requests
Completed 10000 requests
Finished 12541 requests
Server Software: nginx
Server Hostname: blog.deimos.fr
Server Port: 80
Document Path: /index.php
Document Length: 0 bytes
Concurrency Level: 5
Time taken for tests: 30.000 seconds
Complete requests: 12541
Failed requests: 0
Write errors: 0
Non-2xx responses: 12541
Total transferred: 4548468 bytes
HTML transferred: 0 bytes
Requests per second: 418.03 [#/sec] (mean)Time per request: 11.961 [ms] (mean)
Time per request: 2.392 [ms] (mean, across all concurrent requests)
Transfer rate: 148.06 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 3 5 8.1 5 390
Processing: 4 7 8.6 6 390
Waiting: 4 6 8.6 6 390
Total: 8 12 11.9 11 396
Percentage of the requests served within a certain time (ms)
50% 11
66% 12
75% 12
80% 12
90% 13
95% 13
98% 14
99% 14
100% 396 (longest request)
|
Nous obtenons un gain correct, la grosse différence est que le CPU est en dessous des 20% avec Varnish !
3.2 Mediawiki
J'ai également benché le wiki. Là encore le CPU était surchargé sans serveur de cache et les informations parlent d'elles même :
ab
|
> ab -c 5 -t 30 http://wiki.deimos.fr/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 wiki.deimos.fr (be patient)
Finished 2442 requests
Server Software: nginx
Server Hostname: wiki.deimos.fr
Server Port: 80
Document Path: /index.php
Document Length: 0 bytes
Concurrency Level: 5
Time taken for tests: 30.000 seconds
Complete requests: 2442
Failed requests: 0
Write errors: 0
Non-2xx responses: 2442
Total transferred: 1015872 bytes
HTML transferred: 0 bytes
Requests per second: 81.40 [#/sec] (mean)
Time per request: 61.425 [ms] (mean)
Time per request: 12.285 [ms] (mean, across all concurrent requests)Transfer rate: 33.07 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 3 6 9.2 5 352
Processing: 19 56 32.0 54 410
Waiting: 19 56 32.0 54 409
Total: 26 61 34.8 59 761
Percentage of the requests served within a certain time (ms)
50% 59
66% 61
75% 62
80% 63
90% 65
95% 69
98% 94
99% 166
100% 761 (longest request)
|
Et avec Varnish :
ab
|
> ab -c 5 -t 30 http://wiki.deimos.fr/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 wiki.deimos.fr (be patient)
Completed 5000 requests
Completed 10000 requests
Finished 10691 requests
Server Software: nginx
Server Hostname: wiki.deimos.fr
Server Port: 80
Document Path: /index.php
Document Length: 0 bytes
Concurrency Level: 5
Time taken for tests: 30.002 seconds
Complete requests: 10691
Failed requests: 0
Write errors: 0
Non-2xx responses: 10691
Total transferred: 5149681 bytes
HTML transferred: 0 bytes
Requests per second: 356.34 [#/sec] (mean)Time per request: 14.032 [ms] (mean)
Time per request: 2.806 [ms] (mean, across all concurrent requests)
Transfer rate: 167.62 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 6 11.9 6 391
Processing: 5 8 10.9 7 391
Waiting: 5 7 10.9 7 391
Total: 10 14 16.2 13 398
Percentage of the requests served within a certain time (ms)
50% 13
66% 13
75% 14
80% 14
90% 14
95% 15
98% 16
99% 16
100% 398 (longest request)
|