zoukankan      html  css  js  c++  java
  • sysbench 压测

    IP架构

    sysbench部署服务器:172.17.100.107

    压测服务器:172.17.100.100

    MySQL部署目录:/usr/local/mysql

    前置工作

    1.完成MySQL的安装(MySQL5.7最新版本自动部署脚本:MySQL5.7自动部署脚本

    2.完成动态库文件的安装

    yum install -y openssl libtool  


    #可能遇到的报错

    1.在make之前,需要修改lib库,否则会得到一个报错:/usr/bin/ld: cannot find -lmysqlclient_r

    因为安装中指向的lib是/usr/local/mysql/lib

    cd /usr/local/mysql/lib

    ln -s libmysqlclient.so.20.3.9 libmysqlclient_r.so

    2.make的时候没有明显错误,执行./sysbench时报错

    ./sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

    ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64

    如果报错为

    /usr/local/sysbench/bin/sysbench: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

    那么就执行

    ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64


    sysbench安装部分

    ①叶总优化版(在MGR测试中有坑...常规版本已经更新在文末)

    先说一下这个坑:在对单机测试和主从环境的测试中,叶总的版本可用;

    但是在后面完成MGR搭建后采用该sysbench进行测试,会出现1032(主键冲突)的报错,目前暂时没有对该报错进行深入研究,只是确定经过大约反反复复10余次测试(中途重装2次MGR)均出现了报错;

     

    下载

    在叶总的网站去把sysbench压缩包下载下来

    wget http://imysql.com/wp-content/uploads/2014/09/sysbench-0.4.12-1.1.tgz

    部署

    tar -xf sysbench-0.4.12-1.1.tgz

    mv sysbench-0.4.12-1.1 sysbench

    cp -r sysbench /usr/local/sysbench

    cd /usr/local/sysbench

    ./autogen.sh

    #生成configure文件

    ./configure --prefix=/usr/local/sysbench/ --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/

    注意此处的includes必须是mysql对应的include目录,libs也是mysql对应的lib目录

    完成安装

    make&&make install

    (确认没有报错)

    验证安装

    /usr/local/sysbench/bin/sysbench --help

    如果出现下列文字,说明部署成功

    [root@GTID01 bin]# /usr/local/sysbench/bin/sysbench --help

    Missing required command argument.Usage: sysbench [general-options]... --test= [test-options]... command

    General options:

      --num-threads=N            number of threads to use [1]

      --max-requests=N            limit for total number of requests [10000]

    ...

    增加环境变量

    echo -e "export PATH=$PATH:/usr/local/sysbench/bin" >> /etc/profile

    source /etc/profile


    使用sysbench进行测试的准备工作

    前置阅读:sysbench中的lua脚本详解


    使用sysbench进行测试

    先到被测试的库里建库,建用户,授权(这里通过107去测试100库)

    mysql -h 172.17.100.100 -uroot -p

    ...

    create database sbtest; ##因为lua脚本里面这里设置的就是sbtest库,库名需要与脚本里的内容保持一致

    create user tpcc@'172.17.100.%' identified by 'tpcc';

    grant all privileges on sbtest.* to tpcc@'172.17.100.%';

    flush privileges;


    会产生报错的操作(将oltp.lua中的mysiam修改成innodb后,会找不到表)

    cd /usr/local/sysbench/sysbench/tests/db/

    cp oltp.lua oltp_innodb.lua

    sed -i 's/myisam/innodb/g' /usr/local/sysbench/sysbench/tests/db/oltp_innodb.lua


    测试多表的压测(根据叶总的视频,sysbench支持percona多表,但不支持官方版本,不过我在测试中并未发现官方版本不能使用sysbench的情况)

    执行prepare

    sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --rand-init=on prepare

    ...

    sysbench 0.5: multi-threaded system evaluation benchmark

    Creating table 'sbtest1'...

    Inserting 100000 records into 'sbtest1'

    ...

    Creating table 'sbtest10'...

    Inserting 100000 records into 'sbtest10

    执行run

    sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua --oltp_tables_count=10 --oltp-table-size=100000 --num-threads=4 --oltp-read-only=off --report-interval=5 --rand-type=uniform --max-time=30 --max-requests=0 --percentile=99 run

    --num-threads=4    //线程数为4

    --max-time=30      //测试时间为30s

    --report-interval=5    //报告打印周期为5s

    --oltp-read-only=off    //非只读操作测试

    --max-requests=0                //最大执行次数这里不做限制,只由max-time进行限制

    4线程

     
     

    8线程

     
     

    16线程

     
     

    read: 38024     //读总数,select语句

    write: 10864    //写总数,insert、delete、update语句

    other: 5432     //其它语句,如commit等

    total: 54320           //总的执行语句数

    transactions: 2716 (90.31 per sec.)  //总的事物数(★每秒处理事物数:TPS★)

    read/write requests: 48888 (1625.67 per sec.)  //读写请求次数(★每秒的读写次数:QPS★)

    other operations: 5432 (180.63 per sec.)    //其它操作的每秒执行数

    General statistics:

    total time: 30.0726s        //总时间

    total number of events: 2716    //★事物总数★

    total time taken by event execution: 480.7371s   //所有事务耗时相加(不考虑并行因素)

    response time:    //应答时间

    min: 21.62ms    //最小

    avg: 177ms    //平均

    max: 598.59ms    //最大

    approx. 99 percentile: 421.51ms  //99%语句执行时间

    Threads fairness:  //线程公平性

    events (avg/stddev): 169.7500/2.38

    execution time (avg/stddev): 30.0461/0.02

     

    需要重点关注的几个测试结果

    ★总的事物数,每秒事务数TPS,QPS,时间统计信息(最大、最小、平均、99%以上语句响应时间)★

    通过sysbench结果来判定数据库的能力主要还是通过TPS

    执行清除

    sysbench --mysql-host=172.17.100.100 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --oltp-tables-count=10 --oltp-table-size=100000 --num-threads=16 --max-requests=0 --max-time=30 --report-interval=1 --test=/usr/local/sysbench/sysbench/tests/db/oltp.lua cleanup

    sysbench 0.5: multi-threaded system evaluation benchmark

    Dropping table 'sbtest1'...

    Dropping table 'sbtest2'...

    Dropping table 'sbtest3'...


    ②原始版本(该版本目前只测试了MGR环境,常规环境没有验证过,但应该没有问题)

    大体的安装和叶总版本差不多,这里就写的简略一些了

    前置条件准备

    yum install -y openssl libtool gcc make automake pkgconfig libaio-devel vim-common

    下载并安装

    wget https://github.com/akopytov/sysbench/archive/master.zip

    tar -xf master.zip

    mkdir -p /usr/local/sysbench/

    cd sysbench-master/

    ./autogen.sh

    ./configure --prefix=/usr/local/sysbench/ --with-mysql --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib

    make

    make install

    #如果后面验证那一步报错是18,就把下面的20换成18,反正我CenOS6.8的环境不执行下面这句都是报20的错

    ln -s /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64

    echo -e "export PATH=$PATH:/usr/local/sysbench/bin" >> /etc/profile

    source /etc/profile

    #验证

    sysbench --version

    #自行去目标数据库完成建用户(tpcc/tpcc),建库(sbtest)

    执行测试

    sysbench /usr/local/sysbench/share/sysbench/oltp_read_write.lua --mysql-host=172.17.100.101 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --tables=5 --table_size=100000 --mysql_storage_engine=Innodb prepare

    sysbench /usr/local/sysbench/share/sysbench/oltp_read_write.lua --mysql-host=172.17.100.101 --mysql-port=3306 --mysql-user=tpcc --mysql-password=tpcc --mysql-db=sbtest --tables=5 --table_size=100000 --mysql_storage_engine=Innodb --threads=3 --time=600 --warmup-time=10 --report-interval=10 --rand-type=uniform run

    晒一个测试图(针对MGR组的单主库进行写操作)

     


    作者:飞翔的Tallgeese
    链接:https://www.jianshu.com/p/d0abdc29cd7a
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    1 . CentOS 7的yum更换为国内的阿里云yum源
    0. vagrant+vbox创建centos7虚拟机
    git上传到码云和下载到本地
    spring boot udp或者tcp接收数据
    你好,博客园
    使用firdder抓取APP的包
    初见loadrunner
    sublime快捷键大全
    html中行内元素与块级元素的区别。
    html.css溢出
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/10949844.html
Copyright © 2011-2022 走看看