Comment faire un benchmark d’un serveur MySql?
il exite plusieurs outils à ma connaissance, comme mysqlslap, supersmack et sysbench
Chacun a ses avantages et inconvénients, dans cet article nous allons voir l’utilisation, par des exemples, de sysbench
démonstration réalisée sur un serveur:
HP proliant ML110G7
Intel® Xeon® E3
RAM:4Go
OS: Debian 6 Squeeze, version MySql-server 5.1
fichier de conf my.cnf d’origine
Installationde sysbench
apt-get install sysbench
Création d’une base de test
On commence par ce connecter à notre serveur MySql
mysql -u root -pMONSUPERMOTDEPASS ... mysql>
Nous allons créer une base de teste:
mysql>create database dbtest; Query OK, 1 row affected (0.00 sec)
puis on quitte MySql
mysql>exit; Bye
Préparation de la base de test
sysbench --test=oltp --mysql-user=root --mysql-password=MONSUPERMOTDEPASS --mysql-db=dbtest --mysql-host=localhost --db-driver=mysql --mysql-table-engine=innodb prepare
ce qui donne
sysbench 0.4.12: multi-threaded system evaluation benchmark Creating table 'dbtest'... Creating 10000 records in table 'dbtest'...
Test en lecture
sysbench --test=oltp --num-threads=4 --mysql-host=localhost --mysql-user=root --db-driver=mysql --mysql-password=MONSUPERMOTDEPASS --mysql-db=dbtest --max-time=60 --max-requests=0 --oltp-read-only=on run
Voici le résultat:
....
OLTP test statistics:
queries performed:
read: 5452412
write: 0
other: 778916
total: 6231328
transactions: 389458 (6490.93 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 5452412 (90873.00 per sec.)
other operations: 778916 (12981.86 per sec.)
Test execution summary:
total time: 60.0004s
total number of events: 389458
total time taken by event execution: 238.6152
per-request statistics:
min: 0.31ms
avg: 0.61ms
max: 28.23ms
approx. 95 percentile: 0.97ms
Threads fairness:
events (avg/stddev): 97364.5000/208.63
execution time (avg/stddev): 59.6538/0.00
Test en écriture
sysbench --test=oltp --num-threads=4 --mysql-host=localhost --mysql-user=root --db-driver=mysql --mysql-password=MONSUPERMOTDEPASS --mysql-db=dbtest --max-time=60 --max-requests=0 --oltp-read-only=off run
Voici le résultat:
OLTP test statistics:
queries performed:
read: 167440
write: 59794
other: 23918
total: 251152
transactions: 11958 (199.24 per sec.)
deadlocks: 2 (0.03 per sec.)
read/write requests: 227234 (3786.18 per sec.)
other operations: 23918 (398.52 per sec.)
Test execution summary:
total time: 60.0167s
total number of events: 11958
total time taken by event execution: 239.9577
per-request statistics:
min: 14.00ms
avg: 20.07ms
max: 488.78ms
approx. 95 percentile: 33.33ms
Threads fairness:
events (avg/stddev): 2989.5000/6.80
execution time (avg/stddev): 59.9894/0.00
ceci sont des résultats bruts sans optimisation du serveur MySql, il reste à faire des tests comparatifs en modifiant le fichier de conf de MySql
pour plus d’infos sur sysbench, je vois invite à vous rendre là: http://www.linuxcertif.com/man/1/sysbench/
ou alors faire un man
man sysbench