刚用到sysbench ,下载安装时遇到了问题,在网上找到了相关资料觉的很不错就转载过来,按照下面的安装就能解决安装过程中的错误。
一.sysbench安装
下载地址:
目前最新版本为0.4.12。
安装过程相对麻烦点,make的时候,会有不少错误。一般会有以下错误:
drv_mysql.c:35:19: error: mysql.h: No such file or directory
drv_mysql.c:36:26: error: mysqld_error.h: No such file or directory
这个错误有两种解决方法,根据情况来解决。
1)如果你是yum安装的mysql,那么,你只需要再装一个包。Yum install mysql-devel -y,即可解决问题。
2)如果你是源码编译安装的mysql。例如:我喜欢把mysql安装到/usr /local/mysql目录下,那么编译安装sysbench的时候使用./configure –with-mysql-includes=/usr/local/mysql/include/mysql –with-mysql-libs=/usr/local/mysql/lib/mysql
这样即可解决问题。
如果出现大量以下错误:
../libtool: line 838: X–tag=CC: command not found
./autogen.sh && ./configure && make && make install
解决办法很简单。到sysbench解压后的目录下执行autogen.sh即可。
所以综上所述,安装最容易成功的办法是:
cd sysbench-0.4.12
./autogen.sh && ./configure –prefix=/usr/local/sysbench && make && make install
如果源码编译安装的mysql执行一下命令最容易安装成功:
cd sysbench-0.4.12
./autogen.sh && ./configure –with-mysql-includes=/usr/local/mysql/include/mysql –with-mysql-libs=/usr/local/mysql/lib/mysql && make && make install
如果想让sysbench默认支持oracle/pgsql的话,可以configure的时候附加以下两个参数:
–with-oracle
–with-pgsql
这两个参数默认是关闭的,mysql默认开启的。

二.开始各项测试
1.CPU性能测试
[root@server48 ~]# sysbench –test=cpu –cpu-max-prime=20000 run
上面主要是让CPU来计算素数的加法运算,这里最大数为20000,大家根据自己的CPU性能来调整最大数大小。
2.磁盘I/O性能测试
[root@server48 ~]# sysbench –test=fileio –num-threads=16 –file-total-size=1G –file-test-mode=rndrw prepare
[root@server48 ~]# sysbench –test=fileio –num-threads=16 –file-total-size=1G –file-test-mode=rndrw run
[root@server48 ~]# sysbench –test=fileio –num-threads=16 –file-total-size=1G –file-test-mode=rndrw cleanup
3.OLTP测试
[root@server48 ~]# sysbench –debug=off –test=oltp –mysql-host=192.168.0.6 –mysql-user=root –mysql-password=123 –oltp-table-size=1000000 –mysql-db=test –oltp-table-name=stest –num-threads=20 –max-requests=10000 –oltp-auto-inc=off –mysql-engine-trx=yes prepare
sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Creating table 'stest'…
Creating 1000000 records in table 'stest'…
[root@server48 ~]# sysbench –debug=off –test=oltp –mysql-host=192.168.0.6 –mysql-user=root –mysql-password=123 –oltp-table-size=1000000 –mysql-db=test –oltp-table-name=stest –num-threads=20 –max-requests=10000 –oltp-auto-inc=off –mysql-engine-trx=yes run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 20

Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)
Using "BEGIN" for starting transactions
Not using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 10000
Threads started!
Done.

OLTP test statistics:
    queries performed:
        read:                            140000
        write:                           50000
        other:                           20000
        total:                           210000
    transactions:                        10000  (52.75 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 190000 (1002.22 per sec.)
    other operations:                    20000  (105.50 per sec.)
Test execution summary:
    total time:                          189.5784s
    total number of events:              10000
    total time taken by event execution: 3789.1275
    per-request statistics:
         min:                                 35.72ms
         avg:                                378.91ms
         max:                               2309.05ms
         approx.  95 percentile:             632.35ms
Threads fairness:
    events (avg/stddev):           500.0000/7.85
    execution time (avg/stddev):   189.4564/0.05

这里还可以指定表的引擎,可以是myISAM,Innodb等可以附加参数:
–mysql-table-engine=myisam/innodb
测试的时候thread数大于2倍CPU数目,测试文件大小大于5倍内存大小。
测试完成了。记得删除之前创建的记录。
[root@server48 ~]# sysbench –debug=off –test=oltp –mysql-host=192.168.0.6 –mysql-user=root –mysql-password=123 –oltp-table-size=1000000 –mysql-db=test –oltp-table-name=stest –num-threads=20 –max-requests=10000 –oltp-auto-inc=off –mysql-engine-trx=yes cleanup
sysbench 0.4.12:  multi-threaded system evaluation benchmark
No DB drivers specified, using mysql
Dropping table 'stest'…
Done.

当然sysbench还可以测试内存,线程等性能,大家自己摸索吧。
知识点连接:
联机事务处理系统(OLTP), 也称为面向交易的处理系统,其基本特征是顾客的原始数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果。这样做的最大优点是可以即时地处 理输入的数据,及时地回答。也称为实时系统(Real time System)。衡量联机事务处理系统的一个重要性能指标是系统性能,具体体现为实时响应时间(Response Time),即用户在终端上送入数据之后,到计算机对这个请求给出答复所需要的时间。
对在分布式环境下的事务处理有四种需求,联合起来称为“ACID”。
原子性(Atomicity):定义工作的独立单元。如果一个事务是分布的,所有影响分离地点数据的子事务都必须象一个事务那样被一起执行。为了保持在多个地点数据的一致性,需要使用下面就将介绍的双阶段认可过程。
一致性(Consistency):一致性基本上是一种数据库从一个状态变到同等的另一个状态的需求。事务监督器必须检验所有被影响的数据都是一致的。
孤立性(Isolation):事务必须被孤立地执行直到完成,执行期间不受到其它事务的影响。
持续性(Durability):这个性质是与事务的最终确认一起进行的。一旦一个事务被检验为对所有受影响的系统都是正确的,它就被认可并且不再需要卷回。

转载自http://www.pcwind.net/sysbench.html