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