Benchmarker son site web

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search
Apache

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 :

Command
aptitude install apache2-utils

3 Lancement des benchs

Voici comment utiliser la commande ab :

Command 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 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 :

Command 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 :

Command 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 :

Command 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 :

Command 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)