• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    通过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 语法

    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. 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  压测

    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 run

    也可以将测试结果导出到文件中,便于后续分析。

     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-interval=10 --threads=128  --time=120 run >> ./mysysbench.log

    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-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数据库的性能测试的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    您可能感兴趣的文章:
    • Sysbench对Mysql进行基准测试过程解析
    • MySQL数据库基于sysbench实现OLTP基准测试
    • sysbench对mysql压力测试的详细教程
    • 使用sysbench来测试MySQL性能的详细教程
    • 用sysbench来测试MySQL的性能的教程
    • MySQL性能压力基准测试工具sysbench的使用简介
    上一篇:Mysql优化技巧之Limit查询的优化分析
    下一篇:OEL7.6源码安装MYSQL5.7的教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    通过sysbench工具实现MySQL数据库的性能测试的方法 通过,sysbench,工具,实现,