通过sysbench⼯具实现MySQL数据库的性能测试
vue网上商城模板1.背景
sysbench是⼀款压⼒测试⼯具,可以测试系统的硬件性能,也可以⽤来对数据库进⾏基准测试。sysbench ⽀持的测试有CPU运算性能测试、内存分配及传输速度测试、磁盘IO
性能测试、POSIX线程性能测试、互斥性测试测试、数据库性能测试(OLTP基准测试)。⽬前⽀持的数据库主要是MySQL数据库和PG数据库。
在新服务器上线时,建议对服务器的性能做⼀次测试,最好与既往的同类型的服务器的性能测试报表做⼀个横线⽐较,发现潜在问题。及新机器上线前,对服务器做⼀次体检。
对数据库⽽⾔,我们可以通过sysbench⼯具实现对数据库的基准测试。在现在的系统架构中,前端都⽐较容易弹性⽔平拓展,数据库相对较难,因此,基准测试对数据库具有很
重要的作⽤。⽽对数据库的基准测试的作⽤,就是分析在当前的配置下(包括硬件配置、OS、数据库设置等),数据库的性能表现,从⽽出MySQL的性能阈值,并根据实际
系统的要求调整配置。
2.sysbench的安装
1)安装命令
yum -y install sysbench
2)查看安装的版本
sysbench --version
3)查看已安装软件的信息(主要是通 rpm 命令)。
查询sysbench的安装信息,主要是测试mysql时,需要使⽤sysbench⾃带的lua脚本进⾏测试。如果使⽤快速安装的⽅式,默认的脚本路径为:/usr/share/sysbench。
如果不在这个命令,我们我们执⾏以下命令查看,查已安装在本机Linux系统上⾯的所有的sysbench软件的程序:
rpm -qa sysbench
列出该软件所有的⽂件与⽬录所在完整⽂件名(list):
rpm -ql sysbench
3.sysbench 语法
sysbench --help
为什么在电脑上进不去织梦Usage:
sysbench [options]... [testname] [command]
Commands implemented by most tests: prepare run cleanup help
General options:
--threads=N                    number of threads to use [1]
--events=N                      limit for total number of events [0]
--time=N                        limit for total execution time in seconds [10]
--forced-shutdown=STRING        number of seconds to wait after the --time limit before forcing shutdown, or 'off' to disable [off]
--thread-stack-size=SIZE        size of stack per thread [64K]
--rate=N                        average transactions rate. 0for unlimited rate [0]
--report-interval=N            periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0]
--report-checkpoints=[LIST,...] dump full statistics and reset all counters at specified points in time. The argument is a list of comma-separated values representing the amount of time in seconds elapsed from start of test when report checkpoin  --debug[=on|off]                print more debugging info [off]
--validate[=on|off]            perform validation checks where possible [off]
--help[=on|off]                print help and exit [off]
--version[=on|off]              print version and exit [off]
--config-file=FILENAME          File containing command line options
--tx-rate=N                    deprecated alias for --rate [0]
--max-requests=N                deprecated alias for --events [0]
--max-time=N                    deprecated alias for --time [0]
--num-threads=N                deprecated alias for --threads [1]
Pseudo-Random Numbers Generator options:
--rand-type=STRING random numbers distribution {uniform,gaussian,special,pareto} [special]
--rand-spec-iter=N number of iterations used for numbers generation [12]
--rand-spec-pct=N  percentage of values to be treated as 'special' (for special distribution) [1]
--rand-spec-res=N  percentage of 'special' values to use (for special distribution) [75]
--rand-seed=N      seed for random number generator. When 0, the current time is used as a RNG seed. [0]
--rand-pareto-h=N  parameter h for pareto distribution [0.2]
Log options:
--verbosity=N verbosity level {5 - debug, 0 - only critical messages} [3]
--percentile=N      percentile to calculate in latency statistics (1-100). Use the special value of 0 to disable percentile calculations [95]
--histogram[=on|off] print latency histogram in report [off]
General database options:
--db-driver=STRING  specifies database driver to use ('help' to get list of available drivers) [mysql]barry 看世界
--db-ps-mode=STRING prepared statements usage mode {auto, disable} [auto]
--db-debug[=on|off] print database-specific debug information [off]
mysql面试题测试Compiled-in database drivers:
mysql - MySQL driver
pgsql - PostgreSQL driver
mysql options:
--mysql-host=[LIST,...]          MySQL server host [localhost]
--mysql-port=[LIST,...]          MySQL server port [3306]
--mysql-socket=[LIST,...]        MySQL socket
--mysql-user=STRING              MySQL user [sbtest]
--mysql-password=STRING          MySQL password []
--mysql-db=STRING                MySQL database name [sbtest]
--mysql-ssl[=on|off]            use SSL connections, if available in the client library [off]
--mysql-ssl-cipher=STRING        use specific cipher for SSL connections []
--mysql-compression[=on|off]    use compression, if available in the client library [off]
--mysql-debug[=on|off]          trace all client library calls [off]
--mysql-ignore-errors=[LIST,...] list of errors to ignore, or "all" [1213,1020,1205]
输入框placeholder
-
-mysql-dry-run[=on|off]        Dry run, pretend that all MySQL client API calls are successful without executing them [off]
withdraw词根词缀
pgsql options:
--pgsql-host=STRING    PostgreSQL server host [localhost]
--pgsql-port=N          PostgreSQL server port [5432]
--pgsql-user=STRING    PostgreSQL user [sbtest]
--pgsql-password=STRING PostgreSQL password []
--pgsql-db=STRING      PostgreSQL database name [sbtest]
Compiled-in tests:
fileio - File I/O test
cpu - CPU performance test
memory - Memory functions speed test
threads - Threads subsystem performance test
mutex - Mutex performance test
基本语法如下:
sysbench [options]... [testname] [command]
command 是sysbench要执⾏的命令,包括prepare、run和cleanup。prepare是为测试提前准备数据,run是执⾏正式的测试,cleanup是在测试完成后对数据库进⾏清理
testname  指定了要进⾏的测试,在⽼版本的sysbench中,可以通过--test参数指定测试的脚本;⽽在新版本中,--test参数已经声明为废弃,可以不使⽤--test,⽽是直接指定脚
本。测试时使⽤的脚本为lua脚本,可以使⽤sysbench⾃带脚本,也可以⾃⼰开发。
options 关于MySQL的主要包括MySQL 连接信息参数和 MySQL 执⾏相关的参数。
4 测试
Step 1 准备压测数据
sysbench /usr/share/sysbench/oltp_insert.lua  --mysql-host=XXX.XXX.XXX.XXX  --mysql-port=3306 --mysql-user=testsbuser  --mysql-password='textpwd' --mysql-db=tssysbench --db-driver=mysql  --tables=15  --table-size=500000  --report-inter step 2  压测
sysbench /usr/share/sysbench/oltp_insert.lua  --mysql-host=XXX.XXX.XXX.XXX  --mysql-port=3306 --mysql-user=testsbuser  --mysql-password='textpwd' --mysql-db=tssysbench --db-driver=mysql  --tables=15  --table-size=500000  --report-inter 也可以将测试结果导出到⽂件中,便于后续分析。
sysbench /usr/share/sysbench/oltp_insert.lua  --mysql-host=XXX.XXX.XXX.XXX  --mysql-port=3306 --mysql-user=testsbuser  --mysql-password='testpwd' --mysql-db=tssysbench --db-driver=mysql  --tables=15  --table-size=500000
step 3 清理压测数据
sysbench /usr/share/sysbench/oltp_insert.lua  --mysql-host=XXX.XXX.XXX.XXX  --mysql-port=3306 --mysql-user=testsbuser  --mysql-password='testpwd' --mysql-db=tssysbench --db-driver=mysql  --tables=15  --table-size=500000  --report-inter 补充
OLTP基准测试模拟了⼀个简单的事务处理系统的⼯作负载。若要对数据库性能进⾏测试就要使⽤OLTP相关的脚本。
在/usr/share/sysbench/⽬录下有相关的lua脚本:
压测结果中包含了很多的信息,其中重点需要我们关注的信息是:
A:总的事务数(total number of events);
B:每秒事务数;
C:时间统计信息(最⼩,平均,最⼤响应时间,以及95%百分⽐响应时间);
D:线程公平性统计信息,表⽰负载的公平性(thread-fairness)。
5.注意事项
(1) 测试数据库需要提前创建,及时测试账号拥有创建数据库的权限。
--mysql-db 参数指定了测试的数据,默认是sbtest。
不提前创建,报错信息如下;
FATAL: `dline.call_command' function failed: /usr/share/sysbench/oltp_common.lua:83: connection creation failed
(last message repeated 3 times)
FATAL: error 1049: Unknown database 'sysbench_db'
FATAL: `dline.call_command' function failed: /usr/share/sysbench/oltp_common.lua:83: connection creation failed
FATAL: unable to connect to MySQL server on host 'XXX.XXX.XXX.XXX', port 3306,
(last message repeated 1 times)
FATAL: error 1049: Unknown database 'sysbench_db'
(last message repeated 1 times)
或是(不指定数据库)
FATAL: `dline.call_command' function failed: /usr/share/sysbench/oltp_common.lua:83: connection creation failed
FATAL: error 1049: Unknown database 'sbtest'
FATAL: unable to connect to MySQL server on host 'XXX.XXX.XXX.XXX', port 3306,
(2)不要在MySQL服务器运⾏的机器上进⾏测试,⼀⽅⾯可能⽆法体现⽹络(哪怕是局域⽹)的影响,另⼀⽅⾯,sysbench的运⾏(尤其是设置的并发数较⾼时)会影响
MySQL服务器的表现.
(3)逐步增加客户端的并发连接数(--thread参数),观察在连接数不同情况下,MySQL服务器的表现。
(4)如果连续进⾏多次测试,注意确保之前测试的数据已经被清理⼲净。
(5)如果⽣成的报告,图形化分析,可以通过gnuplot⼯具进⾏分析。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。