sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。
它主要包括以下几种方式的测试:
1、cpu性能
2、磁盘io性能
3、调度程序性能
4、内存分配及传输速度
5、POSIX线程性能
6、数据库性能(OLTP基准测试)
目前sysbench主要支持 MySQL,pgsql,oracle 这3种数据库。
一、sysbench安装
[root@localhost src]# tar zxvf sysbench-0.4.12-1.1.tgz
[root@localhost src]# cd sysbench-0.4.12-1.1
[root@localhost sysbench-0.4.12-1.1]# ls
autogen.sh configure.ac install-sh missing README-WIN.txt
ChangeLog COPYING m4 mkinstalldirs sysbench
config doc Makefile.am README TODO
解压后发现,并没有配置文件configure
这里需要直接运行sysbench提供的脚本autogen.sh,运行脚本autogen.sh之前,需要通过yum安装环境
[root@localhost sysbench-0.4.12-1.1]# yum install m4 autoconf automake libtool
[root@localhost sysbench-0.4.12-1.1]# ./autogen.sh
生成文件配置文件之后,进入配置阶段,如果你的mysql是标准安装的话,可以直接运行,进行安装。
[root@localhost sysbench-0.4.12-1.1]# ./configure
[root@localhost sysbench-0.4.12-1.1]# make && make install
如果不是mysql不是标准安装的话,需要在配置文件中指定
./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib --with-mysql
其中参数:–with-mysql-includes的地址是mysql.h所在的目录,可以通过find / -name mysql.h进行查找
–with-mysql-libs的地址是libmysqlclient.so所在的目录,可以通过find / -name libmysqlclient.so进行查找
配置完成之后就可以直接make && make install。
安装过程中,错误总结:
错误提示1:
[root@localhost sysbench-0.4.12-1.1]# ./autogen.sh
automake 1.10.x (aclocal) wasn't found, exiting
通过yum安装automake
[root@localhost sysbench-0.4.12-1.1]# yum -y install automake
错误提示2:
[root@localhost sysbench-0.4.12-1.1]# ./autogen.sh
libtoolize 1.4+ wasn't found, exiting
通过yun安装libtool即可
[root@localhost sysbench-0.4.12-1.1]# yum -y install libtool
在运行sysbench的时候,遇到:error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
这说明sysbench无法找到mysql的库文件,这很可能是环境变量LD_LIBRARY_PATH没有设置,设置后即可解决该问题:
执行bash代码:export LD_LIBRARY_PATH=/usr/local/mysql/lib 可以临时的修改环境变量,终端断开之后,就会丢失 也可以在/etc/profile中添加export LD_LIBRARY_PATH=/usr/local/mysql/lib,永久的修改,这样修改需要重启机器就会永久生效。
安装完成之后,开始做基准测试。
二、sysbench使用
sysbench常用参数详解:
[root@localhost src]# sysbench
General options: #通用选项
--num-threads=N number of threads to use [1]#线程数,默认是1
--max-requests=N limit for total number of requests [10000]#请求限制,默认是10000,0表示不限制
--max-time=N limit for total execution time in seconds [0]#最大执行时间,默认是0,表示不限制
--forced-shutdown=STRING amount of time to wait after --max-time before forcing shutdown [off]#超时强制中断,默认关闭
--thread-stack-size=SIZE size of stack per thread [64K]#每个线程的堆栈大小,默认是64K
--tx-rate=N target transaction rate (tps) [0]#尝试像数据库发送的事务数tps
--report-interval=N periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0]#表示N秒输出一次测试进度报告,0表示关闭测试进度报告输出,仅输出最终的报告结果,默认值为0。
--report-checkpoints=[LIST,...]dump full statistics