• ADADADADAD

    Mysql 性能测试工具 sysbench的安装和使用[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:58:20

    作者:文/会员上传

    简介:

    工作上需要用到AWS和Azure的Mysql服务,需要测试比较一下两个云服务的性能。于是开始百度 + google,查找性能测试工具。最终决定用sysbench。sysbench介绍 sysbench是一款开源

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    工作上需要用到AWS和Azure的Mysql服务,需要测试比较一下两个云服务的性能。于是开始百度 + google,查找性能测试工具。最终决定用sysbench。

    sysbench介绍

    sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。

    数据库目前支持MySQL/Oracle/PostgreSQL。本文只是简单演示一下几种测试的用法,后续准备利用sysbench来对MySQL进行一系列的测试。具体的一些参数设置,需要根据不同的测试要求来进行调整。

    安装

    1. 下载安装包,地址https://github.com/akopytov/sysbench

    #wgethttps://github.com/akopytov/sysbench/archive/1.0.zip-O"sysbench-1.0.zip"#unzipsysbench-1.0.zip#cdsysbench-1.0

    2. 安装依赖库

    #yuminstallautomakelibtool-y

    3. 开始安装

    #./autogen.sh#./configure#ERROR:cannotfindMySQLlibraries.IfyouwanttocompilewithMySQLsupport没找到mysql库需要用参数指定下--with-mysql-includes和--with-mysql-libs#./configure--with-mysql-includes=/alidata/server/mysql5.7/include/--with-mysql-libs=/alidata/server/mysql5.7/lib/

    4. 由于是yum安装的mysql,我也不知道路径在哪里。如何查找mysql的安装路径?

    安装mysql-devel,才能使用mysql_config

    #yuminstall-ymysql-devel#mysql_config-helpUsage:/usr/bin/mysql_config-64[OPTIONS]Options:--cflags[-I/usr/include/mysql-g-fstack-protector-m64-fPIC-g-fabi-version=2-fno-omit-frame-pointer-fno-strict-aliasing]--cxxflags[-I/usr/include/mysql-g-fexceptions-fstack-protector-m64-fPIC-g-fabi-version=2-fno-omit-frame-pointer-fno-strict-aliasing]--include[-I/usr/include/mysql]--libs[-L/usr/lib64/mysql-lmysqlclient-lpthread-lm-lrt-ldl]--libs_r[-L/usr/lib64/mysql-lmysqlclient-lpthread-lm-lrt-ldl]--plugindir[/usr/lib64/mysql/plugin]--socket[/var/lib/mysql/mysql.sock]--port[0]--version[5.6.39]--libmysqld-libs[-L/usr/lib64/mysql-lmysqld-lpthread-lm-lrt-lcrypt-ldl-laio-lnuma]--variable=VARVARisoneof:pkgincludedir[/usr/include/mysql]pkglibdir[/usr/lib64/mysql]plugindir[/usr/lib64/mysql/plugin]

    5. 再次执行config,成功

    #./configure--with-mysql-includes=/usr/include/mysql--with-mysql-libs=/usr/lib64/mysql#make

    6. 执行下命令:

    #sysbench--help#sysbench:errorwhileloadingsharedlibraries:libmysqlclient.so.20:cannotopensharedobjectfile:Nosuchfileordirectory#问题原因:sysbench无法找到mysql的库文件,可能是环境变量LD_LIBRARY_PATH没有设置,设置后即可解决该问题:#exportLD_LIBRARY_PATH=/alidata/server/mysql5.7/lib/lib#sysbench--versionsysbench1.0.12(usingbundledLuaJIT2.1.0-beta2)

    准备测试表和数据

    1. 创建测试数据库:

    mysql>createdatabasedbtest;

    2. 测试命令

    #/home/mysql/sysbench-1.0/src/sysbench--test=/home/mysql/sysbench-1.0/tests/include/oltp_legacy/oltp.lua\--mysql-host=mysql-host-ip--mysql-port=3306--mysql-user=envision--mysql-password=password\--mysql-db=dbtest--oltp-tables-count=10--oltp-table-size=500000\--report-interval=10--rand-init=on--max-requests=0\--oltp-read-only=off--max-time=120--num-threads=30\[prepare|run|cleanup]

    ##三选一

    prepare 准备;

    run 运行;

    cleanup 清理数据。

    注意最后一行,一项测试开始前需要用prepare来准备好表和数据,run执行真正的压测,cleanup用来清除数据和表。

    3. 执行sysbench命令参数解释:

    #-test=/root/sysbench-1.0/tests/include/oltp_legacy/oltp.lua表示调用oltp.lua脚本进行oltp模式测试#--oltp_tables_count=10表示会生成10个测试表#--oltp-table-size=500000表示每个测试表填充数据量为500000#--rand-init=on表示每个测试表都是用随机数据来填充的#-num-threads=8表示发起8个并发连接#--oltp-read-only=off表示不要进行只读测试,也就是会采用读写混合模式测试#--report-interval=10表示每10秒输出一次测试进度报告#--rand-type=uniform表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)#--max-time=120表示最大执行时长为120秒#--max-requests=0表示总请求数为0,因为上面已经定义了总执行时长,所以总请求数可以设定为0;也可以只设定总请求数,不设定最大执行时长#--percentile=99表示设定采样比例,默认是95%,即丢弃1%的长请求,在剩余的99%里取最大值

    4. 测试准备: 30个并发连接,10张表 每个表填充50W条数据 最大请求时间120s

    #/home/mysql/sysbench-1.0/src/sysbench--test=/home/mysql/sysbench-1.0/tests/include/oltp_legacy/oltp.lua\--mysql-host=mysql-host-ip--mysql-port=3306--mysql-user=envision--mysql-password=password\--mysql-db=dbtest--oltp-tables-count=10--oltp-table-size=500000\--report-interval=10--rand-init=on--max-requests=0\--oltp-read-only=off--max-time=120--num-threads=30\prepareCreatingtable'sbtest1'...Inserting100000recordsinto'sbtest1'Creatingsecondaryindexeson'sbtest1'...Creatingtable'sbtest2'...Inserting100000recordsinto'sbtest2'Creatingsecondaryindexeson'sbtest2'.........Inserting100000recordsinto'sbtest9'Creatingsecondaryindexeson'sbtest9'...Creatingtable'sbtest10'...Inserting100000recordsinto'sbtest10'Creatingsecondaryindexeson'sbtest10'...

    5. 执行sysbench测试,并输出测试报告

    #/home/mysql/sysbench-1.0/src/sysbench--test=/home/mysql/sysbench-1.0/tests/include/oltp_legacy/oltp.lua\--mysql-host=mysql-host-ip--mysql-port=3306--mysql-user=envision--mysql-password=password\--mysql-db=dbtest--oltp-tables-count=10--oltp-table-size=500000\--report-interval=10--rand-init=on--max-requests=0\--oltp-read-only=off--max-time=120--num-threads=128\run>/tmp/liang/mysql-report.txt

    6. 查看测试报告

    30个threads

    sysbench1.0.12(usingbundledLuaJIT2.1.0-beta2)Runningthetestwithfollowingoptions:Numberofthreads:30Reportintermediateresultsevery10second(s)InitializingrandomnumbergeneratorfromcurrenttimeInitializingworkerthreads...Threadsstarted![10s]thds:30tps:188.63qps:3795.16(r/w/o:2659.89/755.31/379.96)lat(ms,95%):223.34err/s:0.00reconn/s:0.00[20s]thds:30tps:177.80qps:3563.97(r/w/o:2496.95/711.31/355.71)lat(ms,95%):248.83err/s:0.00reconn/s:0.00[30s]thds:30tps:177.20qps:3542.62(r/w/o:2479.82/708.30/354.50)lat(ms,95%):235.74err/s:0.00reconn/s:0.00[40s]thds:30tps:189.60qps:3797.38(r/w/o:2658.99/759.20/379.20)lat(ms,95%):227.40err/s:0.00reconn/s:0.00[50s]thds:30tps:190.40qps:3798.09(r/w/o:2655.29/762.20/380.60)lat(ms,95%):211.60err/s:0.00reconn/s:0.00[60s]thds:30tps:179.70qps:3598.40(r/w/o:2520.50/718.40/359.50)lat(ms,95%):235.74err/s:0.00reconn/s:0.00[70s]thds:30tps:187.30qps:3740.91(r/w/o:2617.61/748.50/374.80)lat(ms,95%):227.40err/s:0.00reconn/s:0.00[80s]thds:30tps:187.40qps:3755.29(r/w/o:2630.19/750.40/374.70)lat(ms,95%):211.60err/s:0.00reconn/s:0.00[90s]thds:30tps:188.10qps:3762.11(r/w/o:2632.80/753.10/376.20)lat(ms,95%):211.60err/s:0.00reconn/s:0.00[100s]thds:30tps:183.70qps:3676.35(r/w/o:2575.16/733.69/367.49)lat(ms,95%):227.40err/s:0.00reconn/s:0.00[110s]thds:30tps:190.80qps:3816.33(r/w/o:2671.42/763.41/381.50)lat(ms,95%):211.60err/s:0.00reconn/s:0.00[120s]thds:30tps:195.49qps:3907.36(r/w/o:2733.40/783.17/390.79)lat(ms,95%):204.11err/s:0.00reconn/s:0.00SQLstatistics:queriesperformed:read:313488--读总数write:89568--写总数other:44784--其他操作(CURD之外的操作,例如COMMIT)total:447840--全部总数transactions:22392(186.27persec.)--总事务数(每秒事务数)queries:447840(3725.43persec.)--总数(每秒总数)ignorederrors:0(0.00persec.)--总忽略错误总数(每秒忽略错误次数)reconnects:0(0.00persec.)--重连总数(每秒重连次数)Generalstatistics:totaltime:120.2098s--总耗时totalnumberofevents:22392--共发生多少事务数Latency(ms):min:105.91--最小耗时avg:160.86--平均耗时max:850.77--最长耗时95thpercentile:223.34--超过95%平均耗时sum:3601892.56Threadsfairness:events(avg/stddev):746.4000/4.95--总处理事件数/标准偏差executiontime(avg/stddev):120.0631/0.05--总执行时间/标准偏差

    经过测试,AWS和Azure的mysql性能相差无几。sysbench的工具,使用起来也比较简单直观。适合对Mysql的简单性能测试。后续有时间,再研究一下sysbench对CPU,IO等性能测试的情况和使用感受。

    参考文档:

    http://blog.csdn.net/oahz4699092zhao/article/details/53332105

    http://www.jb51.net/article/93924.htm

    https://nsimple.top/archives/mysql-sysbench-tool.html

    Mysql 性能测试工具 sysbench的安装和使用.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: sysbenchmysql性能