Avant la mise en production il est indispensable de faire des benchmarks des différents services fonctionnants sur la machine. Voici ici quelques outils pour faire des tests de charge/performance rapides de votre infrastructure. Nous nous focaliserons sur les serveurs web. Les outils présentés ici ne sont en aucun cas suffisant pour de bon test pré-prod mais utiles pour un premier jet !
I. Benchmark machine physique
Les tests présentés ci-dessous ont été effectués sur un Cloud server de chez Rackspace sous la distribution Debian Squeeze.
I.1. Performances en écriture
Pour cela nous allons simplement utiliser 2 commandes natives sous Linux:
time
dd
root@server:~# time dd if=/dev/zero of=32gb bs=1024k count=16384 32768+0 records in 32768+0 records out 34359738368 bytes (34 GB) copied, 127.562 s, 269 MB/s real 2m7.566s user 0m0.020s sys 1m25.710s
I.2. Performances en lecture
root@server:~# time dd if=16gb of=/dev/null bs=1024k count=16384 32768+0 records in 32768+0 records out 34359738368 bytes (34 GB) copied, 152.927 s, 425 MB/s real 1m32.975s user 0m0.020s sys 0m31.880s
I.3. Performances en effacement
root@server:~# time rm 16gb real 0m1.667s user 0m0.000s sys 0m1.510s
I.4. Performances des I/O
Ici on utilise un script Python de Benjamin Schweizer. Merci à lui.
On télécharge le script et on l’exécute:
-d , interval entre chaque requêtes utilisateurs en seconde
-r , nombre de requêtes envoyées
-c , nombre d’utilisateurs simultanés
II.2. Apache Bench
###II.2.1. Installation
AB vient avec le package apache-utils, une dépendance d’Apache. Si Apache n’est pas installé:
root@server:~# apt-get install apache2-utils
###II.2.2. Let’s bench!
root@server:~# ab -n5000 -c50 http://50-57-47-119.static.cloud-ips.com.:80/ 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 50-57-47-119.static.cloud-ips.com. (be patient) Completed 500 requests Completed 1000 requests Completed 1500 requests Completed 2000 requests Completed 2500 requests Completed 3000 requests Completed 3500 requests Completed 4000 requests Completed 4500 requests Completed 5000 requests Finished 5000 requests Server Software: Varnish Server Hostname: 50-57-47-119.static.cloud-ips.com. Server Port: 80 Document Path: / Document Length: 0 bytes Concurrency Level: 50 Time taken for tests: 272.637 seconds Complete requests: 5000 Failed requests: 0 Write errors: 0 Non-2xx responses: 5000 Total transferred: 3160000 bytes HTML transferred: 0 bytes Requests per second: 18.34 [#/sec] (mean) Time per request: 2726.371 [ms] (mean) Time per request: 54.527 [ms] (mean, across all concurrent requests) Transfer rate: 11.32 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 40 44 0.2 44 51 Processing: 263 2677 194.4 2673 3925 Waiting: 263 2677 194.4 2673 3925 Total: 307 2721 194.4 2717 3969 Percentage of the requests served within a certain time (ms) 50% 2717 66% 2757 75% 2786 80% 2803 90% 2863 95% 2931 98% 3127 99% 3371 100% 3969 (longest request)
Détail des options utilisées:
-n , nombre total de requêtes envoyées
-c , nombre de requêtes envoyées en parallèle
Ces petits outils peuvent bien aider pour nous offrir quelque indicateurs, ils ne sont en revanche absolument pas suffisant pour décider d’une mise en production. On se tournera dans ce cas là vers des sites spécialisés comme loadimpact.com ou blitz.io, on pourra encore utiliser J-Meter pour bien bencher sa plateforme.
Comments