你的位置:首页 > 网络运维

sysbench1.0.5安装以及使用其对mysql5.5.32压力测试

1年前 (2017-04-12) 浏览:(1295) 网络运维 评论(0)

sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。


目前sysbench 最新版本号是:1.0.5 代码托管在GitHub上,项目地址:https://github.com/akopytov/sysbench

1、安装sysbench 1.0.5

1.1、CentOS6.7下YUM会自动安装sysbench 0.4.12,显然不是我们需要的。

        yum -y install sysbench

1.2、下面我们使用源码安装,步骤如下:

1.2.1、mysql5.5.32我的电脑上已经安装过了,此处不再安装,可以参考:https://www.601849.com/post/53.html

1.2.2、接下来我们来安装sysbench 1.0.5

下载:
wget https://github.com/akopytov/sysbench/archive/1.0.5.tar.gz

解压:
tar -zxvf 1.0.5.tar.gz -C /usr/local/src/ 

编译并安装:
cd /usr/local/src/sysbench-1.0.5/

增加支持
[root@abao67 sysbench-1.0.5]# ./autogen.sh 
./autogen.sh: running `libtoolize --copy --force' 
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: copying file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
./autogen.sh: running `aclocal -I m4' 
./autogen.sh: running `autoheader' 
./autogen.sh: running `automake -c --foreign --add-missing' 
configure.ac:30: installing `config/compile'
configure.ac:12: installing `config/config.guess'
configure.ac:12: installing `config/config.sub'
configure.ac:17: installing `config/install-sh'
configure.ac:17: installing `config/missing'
src/Makefile.am: installing `config/depcomp'
./autogen.sh: running `autoconf' 
Libtoolized with: libtoolize (GNU libtool) 2.2.6b
Automade with: automake (GNU automake) 1.11.1
Configured with: autoconf (GNU Autoconf) 2.63

检测上一条命令执行后是否出错
[root@abao67 sysbench-1.0.5]# echo $?
0

配置指定MYSQL的include和lib路径真实路径
[root@abao67 sysbench-1.0.5]# ./configure --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/

~~为了节省篇幅,此处省略N行~~~~~
config.status: executing libtool commands
===============================================================================
sysbench version   : 1.0.5
CC                 : gcc -std=gnu99
CFLAGS             : -O2 -ggdb3  -march=atom -W -Wall -Wextra -Wpointer-arith -Wbad-function-cast   -Wstrict-prototypes -Wnested-externs -Wno-inline -Wno-format-zero-length   -funroll-loops  -Wundef -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wcast-align        -pthread
CPPFLAGS           : -D_GNU_SOURCE   -I$(top_srcdir)/src -I$(abs_top_builddir)/third_party/luajit/inc -I$(abs_top_builddir)/third_party/concurrency_kit/include
LDFLAGS            : -L/usr/local/lib 
LIBS               : -lrt -lm 
EXTRA_LDFLAGS      : 

prefix             : /usr/local
bindir             : ${prefix}/bin
libexecdir         : ${prefix}/libexec
mandir             : ${prefix}/share/man
datadir            : ${prefix}/share

MySQL support      : yes
Drizzle support    : no
AttachSQL support  : no
Oracle support     : no
PostgreSQL support : no

LuaJIT             : bundled
LUAJIT_CFLAGS      : -I$(abs_top_builddir)/third_party/luajit/inc
LUAJIT_LIBS        : $(abs_top_builddir)/third_party/luajit/lib/libluajit-5.1.a -ldl
LUAJIT_LDFLAGS     : -rdynamic

Concurrency Kit    : bundled
CK_CFLAGS          : -I$(abs_top_builddir)/third_party/concurrency_kit/include
CK_LIBS            : $(abs_top_builddir)/third_party/concurrency_kit/lib/libck.a
configure flags    : 
===============================================================================

检测上一条命令执行后是否出错
[root@abao67 sysbench-1.0.5]# echo $?
0

编译安装
[root@abao67 sysbench-1.0.5]#make && make install

~~为了节省篇幅,此处省略N行~~~~~
test -z "/usr/local/share/sysbench/tests" || /bin/mkdir -p "/usr/local/share/sysbench/tests"
 /usr/bin/install -c test_run.sh '/usr/local/share/sysbench/tests'
make[2]: Leaving directory `/usr/local/src/sysbench-1.0.5/tests'
make[1]: Leaving directory `/usr/local/src/sysbench-1.0.5/tests'
make[1]: Entering directory `/usr/local/src/sysbench-1.0.5'
make[2]: Entering directory `/usr/local/src/sysbench-1.0.5'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/usr/local/src/sysbench-1.0.5'
make[1]: Leaving directory `/usr/local/src/sysbench-1.0.5'

到此处,恭喜你安装成功了。


3、使用方法及参数:

3.1、一般语法格式如下:

sysbench [options]... [testname] [command]

3.2、几个常用的选项和默认值如下表:

◦mysql-db=dbtest1a:测试使用的目标数据库,这个库名要事先创建
◦--oltp-tables-count=10:产生表的数量
◦--oltp-table-size=500000:每个表产生的记录行数
◦--oltp-dist-type=uniform:指定随机取样类型,可选值有 uniform(均匀分布), Gaussian(高斯分布), special(空间分布)。默认是special
◦--oltp-read-only=off:表示不止产生只读SQL,也就是使用oltp.lua时会采用读写混合模式。默认 off,如果设置为on,则不会产生update,delete,insert的sql。
◦--oltp-test-mode=nontrx:执行模式,这里是非事务式的。可选值有simple,complex,nontrx。默认是complex◦simple:简单查询,SELECT c FROM sbtest WHERE id=N
◦complex (advanced transactional):事务模式在开始和结束事务之前加上begin和commit, 一个事务里可以有多个语句,如点查询、范围查询、排序查询、更新、删除、插入等,并且为了不破坏测试表的数据,该模式下一条记录删除后会在同一个事务里添加一条相同的记录。
◦nontrx (non-transactional):与simple相似,但是可以进行update/insert等操作,所以如果做连续的对比压测,你可能需要重新cleanup,prepare。
◦--oltp-skip-trx=[on|off]:省略begin/commit语句。默认是off
◦--rand-init=on:是否随机初始化数据,如果不随机化那么初始好的数据每行内容除了主键不同外其他完全相同
◦--num-threads=12: 并发线程数,可以理解为模拟的客户端并发连接数
◦--report-interval=10:表示每10s输出一次测试进度报告
◦--max-requests=0:压力测试产生请求的总数,如果以下面的max-time来记,这个值设为0
◦--max-time=120:压力测试的持续时间,这里是2分钟。

4、测试准备:

[root@abao67 sysbench-1.0.5]# sysbench oltp --mysql-user=root  --mysql-password=12345 --mysql-db=sbtest --test=/usr/local/src/sysbench-1.0.5/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=10  --oltp-table-size=100000 --rand-init=on --db-driver=mysql  prepare

5、开始测试:

[root@abao67 sysbench-1.0.5]# sysbench  --mysql-user=root --mysql-password=12345 --mysql-db=sbtest --test=/usr/local/src/sysbench-1.0.5/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=10 --oltp-table-size=10000000 --num-threads=2 --oltp-read-only=off --report-interval=10 --rand-type=uniform --max-time=60  --max-requests=0 --percentile=99 --db-driver=mysql run

参数解读:
--num-threads=2  并发线程数2
--oltp-read-only=off  关闭只读测试
--oltp_tables_count=10  每10秒输出一次测试报告
--rand-type=uniform --max-time=60 最大运行时间60秒
--max-requests=0             设置最大请求数为0,即不限制最大请求数
--percentile=99                  采样比例设置最大值
sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

真不巧这里报错了,解决方法如下:

[root@abao67 sysbench-1.0.5]# export LD_LIBRARY_PATH=/usr/local/mysql/lib/


6、测试结果,如下图。

[root@abao67 sysbench-1.0.5]# sysbench oltp --mysql-user=root  --mysql-password=12345 --mysql-db=sbtest --test=/usr/local/src/sysbench-1.0.5/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=10  --oltp-table-size=100000 --rand-init=on --db-driver=mysql  prepare
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
sysbench 1.0.5 (using bundled LuaJIT 2.1.0-beta2)

Creating table 'sbtest1'...
Inserting 100000 records into 'sbtest1'
Creating secondary indexes on 'sbtest1'...
Creating table 'sbtest2'...
Inserting 100000 records into 'sbtest2'
Creating secondary indexes on 'sbtest2'...
Creating table 'sbtest3'...
Inserting 100000 records into 'sbtest3'
Creating secondary indexes on 'sbtest3'...
Creating table 'sbtest4'...
Inserting 100000 records into 'sbtest4'
Creating secondary indexes on 'sbtest4'...
Creating table 'sbtest5'...
Inserting 100000 records into 'sbtest5'
Creating secondary indexes on 'sbtest5'...
Creating table 'sbtest6'...
Inserting 100000 records into 'sbtest6'
Creating secondary indexes on 'sbtest6'...
Creating table 'sbtest7'...
Inserting 100000 records into 'sbtest7'
Creating secondary indexes on 'sbtest7'...
Creating table 'sbtest8'...
Inserting 100000 records into 'sbtest8'
Creating secondary indexes on 'sbtest8'...
Creating table 'sbtest9'...
Inserting 100000 records into 'sbtest9'
Creating secondary indexes on 'sbtest9'...
Creating table 'sbtest10'...
Inserting 100000 records into 'sbtest10'
Creating secondary indexes on 'sbtest10'...
[root@abao67 sysbench-1.0.5]# sysbench  --mysql-user=root --mysql-password=12345 --mysql-db=sbtest --test=/usr/local/src/sysbench-1.0.5/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=10 --oltp-table-size=10000000 --num-threads=2 --oltp-read-only=off --report-interval=10 --rand-type=uniform --max-time=60  --max-requests=0 --percentile=99 --db-driver=mysql run
WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options.
WARNING: --num-threads is deprecated, use --threads instead
WARNING: --max-time is deprecated, use --time instead
sysbench 1.0.5 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 2
Report intermediate results every 10 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!

[ 10s ] thds: 2 tps: 75.58 qps: 1517.10 (r/w/o: 1062.25/78.17/376.68) lat (ms,99%): 73.13 err/s: 0.10 reconn/s: 0.00
[ 20s ] thds: 2 tps: 77.50 qps: 1549.98 (r/w/o: 1084.99/80.20/384.80) lat (ms,99%): 51.94 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 2 tps: 77.20 qps: 1542.79 (r/w/o: 1079.96/80.00/382.82) lat (ms,99%): 51.94 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 2 tps: 74.01 qps: 1481.42 (r/w/o: 1036.98/76.41/368.03) lat (ms,99%): 62.19 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 2 tps: 70.40 qps: 1407.98 (r/w/o: 985.59/73.00/349.40) lat (ms,99%): 61.08 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 2 tps: 79.70 qps: 1594.00 (r/w/o: 1115.80/81.90/396.30) lat (ms,99%): 52.89 err/s: 0.00 reconn/s: 0.00
SQL statistics:
    queries performed:
        read:                            63658
        write:                           4697
        other:                           22583
        total:                           90938
    transactions:                        4546   (75.75 per sec.)
    queries:                             90938  (1515.23 per sec.)
    ignored errors:                      1      (0.02 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          60.0143s
    total number of events:              4546

Latency (ms):
         min:                                 13.93
         avg:                                 26.39
         max:                                252.62
         99th percentile:                     61.08
         sum:                             119963.32

Threads fairness:
    events (avg/stddev):           2273.0000/10.00
    execution time (avg/stddev):   59.9817/0.00

以上为实战结果,参考了文档:http://imysql.com/2014/10/17/sysbench-full-user-manual.shtml

尊重共享,欢迎转载,请自觉添加本文链接,谢谢!本文链接:https://www.601849.com/post/90.html