sysbench对数据库的性能测试

一、sybench下载地址:http://sourceforge.net/projects/sysbench/?source=dlp

二、sybench安装:
# ./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=
/usr/local/mysql/lib   如果需要sysbench支持Oracle或者PostgreSQL的话,还需要在编译时加上--with-pgsql或者--with-oracle
#make 出错信息如下
../libtool: line 838: X--tag=CC: command not found
../libtool: line 871: libtool: ignoring unknown tag : command not found
../libtool: line 838: X--mode=link: command not found
../libtool: line 1004: *** Warning: inferring the mode of operation is deprecated.: command not found
../libtool: line 1005: *** Future versions of Libtool will require --mode=MODE be specified.: command not found
解决方法:
#make clean
#export echo=echo
# ./autogen.sh   对环境进行清理
如果出现: ./autogen.sh: line 3: aclocal: command not found
yum install automake perl libtool
#./configure --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=
/usr/local/mysql/lib
#make && make install


三、sybench可测试内容:
Compiled-in tests:
  fileio - File I/O test    文件IO测试
  cpu - CPU performance test    性能测试
  memory - Memory functions speed test  内存分配与传输速度测试 
  threads - Threads subsystem performance test  线程子系统性能测试 
  mutex - Mutex performance test   数据库OLTP测试
  oltp - OLTP test

1. CPU性能测试
sysbench --test=cpu --cpu-max-prime=5000 run
CPU的性能测试主要通过素数的运算来进行,--cpu-max-prime用来选项指定最大的素数,具体参数可以根据CPU的性能来设置。

2. 内存性能测试
sysbench --test=memory --memory-block-size=8k --memory-total-size=4G run
--memory-block-size指定每个block的大小,--memory-total-size指定总的传输量,另外还有其他选项,可通过命令sysbench �Ctest=memory help进行查看。

3. 磁盘I/O性能测试
  首先生成需要测试的文件
  sysbench --test=fileio --num-threads=16 --file-num=2 --file-total-size=2G --file-test-mode=rndrw --file-rw-ratio=2 prepare
  然后执行测试
  sysbench --test=fileio --num-threads=16 --file-num=2 --file-total-size=2G --file-test-mode=rndrw --file-rw-ratio=2 run
  最后清理测试文件
  sysbench --test=fileio --num-threads=16 --file-num=2 --file-total-size=2G --file-test-mode=rndrw --file-rw-ratio=2 cleanup
--num-threads指定最大创建的线程数,--file-num指定文件数目,--file-taotal-size指定创建的文件总大小,--file-test-mode指定文件读写模式,rndrw为随机读,--file-rw-ratio指定读写比率。另外还有更多的选项可以通过命令sysbench �Ctest=fileio help进行查看。
4. 线程测试

sysbench --test=threads --num-threads=32 --thread-yields=100 --thread-locks=2 run
--num-threads指定线程数,--thread-yield指定每个请求的压力,--thread-locks指定每个线程的锁数量。
5. 数据库性能测试

注意:在高于100时的并发量时 不要用 --oltp-skip-trx=on 否则有可能出现Duplicate entry 'xxx' for key 'PRIMARY错误

参数说明:
--mysql-host指定使用的MySQL服务器的地址,
--mysql-user指定连接MySQL的用户名,
--mysql-password指定密码,
--mysql-db指定使用的数据库,
--oltp-table-name指定使用的表,
--mysql-table-engine指定表所使用的数据库引擎,
--mysql-engine-trx说明使用的数据库引擎是否是事务的,
--oltp-skip-trx指定是否忽略事务语句(BEGIN/COMMIT),
--oltp-table-size指定数据表中的记录数,
--max-requests指定最大请求数,默认为10000
--num-threads指定线程数,默认为1
--max-time   测试执行时间
--oltp_table_count=1:指定测试过程中表的个数

1) 生成10000行记录测试数据,创建oltp数据库或者使用�Cmysql-db指定一个已经存在的数据库
sysbench --test=oltp --mysql-host=localhost --db-driver=mysql --mysql-db=oltp --oltp-table-name=sbtest0606 --oltp-table-size=10000 --mysql-user=user1 --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock prepare

2) 测试5分钟(命令运行时间)或者【指定最大请求数1500跑完为止】
 sysbench --test=oltp --mysql-host=localhost --db-driver=mysql --mysql-db=oltp --oltp-table-name=sbtest0606 --oltp-table-size=10000 --max-requests=1500  --mysql-user=user1 --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock run

【--max-time=300】【--max-requests=1500】【--num-threads=16】

测试结果:
Maximum number of requests for OLTP test is limited to 1500
Threads started!
Done.

OLTP test statistics:      查询统计
    queries performed:
        read:                            21084    读操作x次
        write:                           7517     写操作x次
        other:                           3006     其它操作x次
        total:                           31607    总操作x次
#―-事务数总计,每秒的事务处理量
    transactions:                        1500   (407.09 per sec.)    总事务/请求  (每秒事务数)可看作是TPS的性能指标
    deadlocks:                           6      (1.63 per sec.)
    read/write requests:                 28601  (7762.06 per sec.)   读写请求read+write (每秒处理I/O请求次数)可看作是IOPS性能指标
    other operations:                    3006   (815.80 per sec.)

Test execution summary:
    total time:                          3.6847s        总执行时间
    total number of events:              1500       
    total time taken by event execution: 182.6919    
#―-每个请求的统计信息
    per-request statistics:
         min:                                  6.12ms   最小
         avg:                                121.79ms   单次执行的平均响应时间
         max:                                378.37ms   单次执行中最长响应时间
         approx.  95 percentile:             197.95ms   95%的百分比响应时间分布
#―-线程权重信息,工作负荷如何被均匀分配
Threads fairness: 线程公平性统计信息(thread-fairness),用于表示模拟负载的公平性
    events (avg/stddev):           30.0000/1.28
    execution time (avg/stddev):   3.6538/0.02

3. 删除测试数据
 sysbench --test=oltp --mysql-host=localhost --db-driver=mysql --mysql-db=oltp --oltp-table-name=sbtest0606 --oltp-table-size=10000 --max-requests=1500  --mysql-user=user1 --mysql-password=123456 --mysql-socket=/var/lib/mysql/mysql.sock cleanup

说明:             
sysbench测试自动生成的随机字段值:             
 +----+---+---+----------------------------------------------------+            
 | id | k | c | pad                                                |            
 +----+---+---+----------------------------------------------------+            
 | 10 | 0 |   | qqqqqqqqqqwwwwwwwwwweeeeeeeeeerrrrrrrrrrtttttttttt |             
 +----+---+---+----------------------------------------------------+            

一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。             
系统吞度量 承压能力QPS(TPS) 
在DB中通常
TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。INNODB 引擎             
QPS:Query per second(每秒处理的查询数)MyISAM 引擎,也即每秒的响应请求数             
IOPS 每秒磁盘进行的I/O操作次数             

 

 

你可能感兴趣的:(sysbench)