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

下载地址:http://sourceforge.net/projects/sysbench/ 现在已经被墙了,需要翻墙。不过csdn上也能下到。

为了把sysbench安装起来测试一下mysql,费了不少周章,这里记录一下。


一.mysql安装


          首先我找了一台之前自己装过mysql的机器,准备在这个机器上小跑一下。于是搬了sysbench包上去。安装sysbench时要配置mysql的include和lib两个目录。这有点悲剧,搞了半天找不到这两个目录,期间还查到说用 rpm -ql命令可以查到,最终是搜到这么一句话:mysql用rpm安装不行,要用tar自己编译的才行。那就死心了,再重新装一个mysql,用tar.gz包。(其实期间我为了先玩一下sysbench的功能,还选了不支持mysql的配置方式安装了一把,那就没啥问题,在配置的时候使用./configure--without-mysql 就可以了)

         在mysql官网上找tar.gz包的下载:http://www.mysql.com/downloads/mysql-4.0.html,由于我的机器是redhat,刚开始一直选这个,发现下面都是rpm的安装包,于是选了linux generic才在下面找到tar.gz的包,下载之前要知道机器的操作系统位数,用uname -a命令查看,x86_64则说明你是64位内核, 跑的是64位的系统.i386, i686说明你是32位的内核, 跑的是32位的系统,现在基本都是64位啦,升级换代了嘛。

这次安装mysql的话,就没有什么大的花头了,tar zxvfmysql-version.tar.gz包进入目录后,看INSTALL-BINARY文件(我之前一般很少看工具软件自带的说明文档,大多数情况下是只听搜索引擎的,现在发现其实这种工具软件,看README文档还是很有帮助的,这里是INSTALL-BINARY文件),根据文件提供的命令执行就ok了:

shell> groupadd mysql
 shell> useradd -r -g mysql mysql
 shell> cd /usr/local
 shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
 shell> ln -s full-path-to-mysql-VERSION-OS mysql
 shell> cd mysql
 shell> chown -R mysql .
 shell> chgrp -R mysql .
 shell> scripts/mysql_install_db --user=mysql
 shell> chown -R root .
 shell> chown -R mysql data
 # Next command is optional
 shell> cp support-files/my-medium.cnf /etc/my.cnf
 shell> bin/mysqld_safe --user=mysql &
 # Next command is optional
 shell> cp support-files/mysql.server /etc/init.d/mysql.server

         这里其实还遇到一个问题,我的账号只有sudo权限,比如说第二句命令,用useradd来新增一个系统账号,就很无力,于是我选择了绕过(我这习惯很不好啊很不好,很多问题都是通过绕过解决,你别学我啊),我的办法是,只要后面有涉及到给mysql这个账号赋权限的,都赋给admin账号,我有这个账号权限呀,哈哈。

         安装完成,还做了两件事:1是设置PATH变量,我因为只是先测试一下,只是用了export命令搞定,把bin目录加到path下面;2是通过下面这个命令改了一下root用户的密码:/MYSQLHOME/bin/mysqladmin -u root password ‘newpassword’。那接下来就可以开搞sysbench了。


二.sysbench安装  


这下步骤就简单多了。

 1.下载一个tar.gz的sysbench包。

2.解压:tar zxvf sysbench-version.tar.gz

3.进入目录:cd sysbench-version

4.执行./autogen.sh

5.执行./configure --with-mysql-includes=/usr/local/mysql/include/--with-mysql-libs=/usr/local/mysql/lib/

6.执行make和make install


三.执行


         这样sysbench就可用了,来一个简单的试试看测试cpu的命令:

sysbench --test=cpu --num-threads=32--cpu-max-prime=90000 run ,这个命令使用最大素数为90000的数值来测试cpu。但是结果并没有这么顺利,这个命令报了一个错“sysbench: error while loading shared libraries:libmysqlclient.so.18: cannot open shared object file: No such file or directory”,提示无法读取mysql的lib目录下的文件,于是根据http://beagoodboy.iteye.com/blog/1280907这篇文字的作法试了,没有结果,又找到,通过在/etc/ld.so.conf中配置文件所在的位置,问题解决,sysbench可用啦。

最终执行cpu的测试结果截了个图:

mysql sysbench压测 使用sysbench测试mysql_mysql

大体的测试结果我们应该都可以看懂了,具体的含义我也没有去纠结,后续用了会来写一下。

         接着就准备测试mysql了:先建一个测试库:create database sbtest;

使用sysbench准备数据:

sysbench --test=oltp--mysql-table-engine=myisam --oltp-table-size=1000000--mysql-socket=/tmp/mysql.sock --mysql-db=sbtest --mysql-user=root --mysql-host=localhost--mysql-password=pass prepare 
执行read-only测试:
 sudo sysbench --num-threads=16--max-requests=100000 --test=oltp --oltp-table-size=1000000--mysql-socket=/tmp/mysql.sock --oltp-read-only --mysql-user=root--mysql-host=localhost --mysql-password=pass run 
清理掉数据:
sysbench --test=oltp--mysql-table-engine=myisam --oltp-table-size=1000000--mysql-socket=/tmp/mysql.sock --mysql-db=sbtest cleanup