各位用户为了找寻关于通过sysbench工具实现MySQL数据库的性能测试的方法的资料费劲了很多周折。这里教程网为您整理了关于通过sysbench工具实现MySQL数据库的性能测试的方法的相关资料,仅供查阅,以下为您介绍关于通过sysbench工具实现MySQL数据库的性能测试的方法的详细内容
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 语法
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65sysbench
--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. 0 for 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 checkpoint(s) must be performed. report checkpoints are off by default. []
--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]
--db-ps-mode=string prepared statements usage mode {auto, disable} [auto]
--db-debug[=on|off] print database-specific debug information [off]
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]
--mysql-dry-run[=on|off] dry run, pretend that all mysql client api calls are successful without executing them [off]
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-interval=10 --threads=128 --time=120 prepare
step 2 压测
? 1sysbench /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-interval=10 --threads=128 --time=120 run
也可以将测试结果导出到文件中,便于后续分析。
? 1sysbench /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-interval=10 --threads=128 --time=120 run >> ./mysysbench.log
step 3 清理压测数据
? 1sysbench /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-interval=10 --threads=128 --time=120 cleanup
5.注意事项
(1) 测试数据库需要提前创建,及时测试账号拥有创建数据库的权限。
--mysql-db 参数指定了测试的数据,默认是sbtest。
不提前创建,报错信息如下;
fatal: `sysbench.cmdline.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: `sysbench.cmdline.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, aborting... (last message repeated 1 times) fatal: error 1049: unknown database 'sysbench_db' (last message repeated 1 times)
或是(不指定数据库)
fatal: `sysbench.cmdline.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, aborting...
(2)不要在mysql服务器运行的机器上进行测试,一方面可能无法体现网络(哪怕是局域网)的影响,另一方面,sysbench的运行(尤其是设置的并发数较高时)会影响mysql服务器的表现.
(3)逐步增加客户端的并发连接数(--thread参数),观察在连接数不同情况下,mysql服务器的表现。
(4)如果连续进行多次测试,注意确保之前测试的数据已经被清理干净。
(5)如果生成的报告,图形化分析,可以通过gnuplot工具进行分析。
总结
以上所述是小编给大家介绍的通过sysbench工具实现mysql数据库的性能测试的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!原文链接:https://www.cnblogs.com/xuliuzai/p/11243376.html