sysbench测试
安装sysbench
tar xvf sysbench-0.4.12.tar.gz
cd sysbench-0.4.12
mkdir /usr/sysbench
./configure --prefix=/usr/sysbench --with-mysql-includes=/mysql/include --with-mysql-libs=/mysql/lib
cp /usr/bin/libtool /root/sysbench-0.4.12/libtool
make&&make install
#vim /etc/ld.so.conf 增加一行
/mysql/lib
#ldconfig
磁盘I/O性能测试
--file-num=N 创建测试文件的数量。默认是128
--file-block-size=N 测试时文件块的大小。默认是16384(16K)
--file-total-size=SIZE 测试文件的总大小。默认是2G
--file-test-mode=STRING 文件测试模式{seqwr(顺序写), seqrewr(顺序读写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)}
--file-io-mode=STRING 文件操作模式{sync(同步),async(异步),fastmmap(快速map映射),slowmmap(慢map映射)}。默认是sync
--file-extra-flags=STRING 使用额外的标志来打开文件{sync,dsync,direct} 。默认为空
--file-fsync-freq=N 执行fsync()的频率。(0–不使用fsync())。默认是100
--file-fsync-all=[on|off] 每执行完一次写操作就执行一次fsync。默认是off
--file-fsync-end=[on|off] 在测试结束时才执行fsync。默认是on
--file-fsync-mode=STRING 使用哪种方法进行同步{fsync, fdatasync}。默认是fsync
--file-merged-requests=N 如果可以,合并最多的IO请求数(0–表示不合并)。默认是0
--file-rw-ratio=N 测试时的读写比例。默认是1.5
首先生成需要测试的文件-------在当前工作目录下创建测试文件,后续的运行(run)阶段将通过读写这些文件进行测试。生成测试用到的数据文件,生成的数据文件至少要比内存大
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
数据库性能测试
oltp options:
--oltp-test-mode=STRING 执行模式{simple,complex(advanced transactional),nontrx(non-transactional),sp}。默认是complex
--oltp-reconnect-mode=STRING 重新连接模式{session(不使用重新连接。每个线程断开只在测试结束),transaction(在每次事务结束后重新连接),query(在每个 SQL语句执行完重新连接),random(对于每个事务随机选择以上重新连接模式)}。默认是session
--oltp-sp-name=STRING 存储过程的名称。默认为空
--oltp-read-only=[on|off] 只读模式。Update,delete,insert语句不可执行。默认是off
--oltp-skip-trx=[on|off] 指定是否忽略事务语句(BEGIN/COMMIT)。默认是off
--oltp-range-size=N 查询范围。默认是100
--oltp-point-selects=N number of point selects [10]
--oltp-simple-ranges=N number of simple ranges [1]
--oltp-sum-ranges=N number of sum ranges [1]
--oltp-order-ranges=N number of ordered ranges [1]
--oltp-distinct-ranges=N number of distinct ranges [1]
--oltp-index-updates=N number of index update [1]
--oltp-non-index-updates=N number of non-index updates [1]
--oltp-nontrx-mode=STRING 查询类型对于非事务执行模式{select, update_key, update_nokey, insert, delete} [select]
--oltp-auto-inc=[on|off] AUTO_INCREMENT是否开启。默认是on
--oltp-connect-delay=N 在多少微秒后连接数据库。默认是10000
--oltp-user-delay-min=N 每个请求最短等待时间。单位是ms。默认是0
--oltp-user-delay-max=N 每个请求最长等待时间。单位是ms。默认是0
--oltp-table-name=STRING 测试时使用到的表名。默认是sbtest
--oltp-table-size=N 测试表的记录数。默认是10000
--oltp-dist-type=STRING 分布的随机数{uniform(均匀分布),Gaussian(高斯分布),special(空间分布)}。默认是special
--oltp-dist-iter=N 产生数的迭代次数。默认是12
--oltp-dist-pct=N 值的百分比被视为’special’ (for special distribution)。默认是1
--oltp-dist-res=N ‘special’的百分比值。默认是75
General database options:
--db-driver=STRING 指定数据库驱动程序(‘help’ to get list of available drivers)
--db-ps-mode=STRING编制报表使用模式{auto, disable} [auto]
Compiled-in database drivers:
--mysql – MySQL driver
mysql options:
--mysql-host=[LIST,...] MySQL server host [localhost]
--mysql-port=N MySQL server port [3306]
--mysql-socket=STRING MySQL socket
--mysql-user=STRING MySQL user [sbtest]
--mysql-password=STRING MySQL password []
--mysql-db=STRING MySQL database name [sbtest]
--mysql-table-engine=STRING storage engine to use for the test table {myisam,innodb,bdb,heap,ndbcluster,federated} [innodb]
--mysql-engine-trx=STRING 说明使用的数据库引擎是否是事务的 {yes,no,auto} [auto]
--mysql-ssl=[on|off] use SSL connections, if available in the client library [off]
--myisam-max-rows=N max-rows parameter for MyISAM tables [1000000]
--mysql-create-options=STRING additional options passed to CREATE TABLE []
准备测试数据
首先创建测试的库
sysbench --test=oltp --mysql-host=localhost --mysql-user=root --db-driver=mysql --mysql-password=xxxx --mysql-db=test --oltp-table-name=test --mysql-table-engine=MyISAM --oltp-table-size=90000000 --myisam-max-rows=100000000 prepare
然后执行测试
sysbench --test=oltp --mysql-host=localhost --db-driver=mysql --mysql-port=3306 --mysql-user=root --mysql-password=xxxx --mysql-db=test --oltp-table-name=test --mysql-table-engine=MyISAM --oltp-table-size=90000000 --max-requests=1000 --num-threads=100 --oltp-read-only run
最后清理测试数据
sysbench --test=oltp --mysql-host=localhost --mysql-user=root --db-driver=mysql --mysql-password=xxxx --mysql-db=test --oltp-table-name=test --mysql-table-engine=MyISAM --oltp-table-size=90000000 cleanup
==========mysql测试结果=============
[root@test1 ~]# sysbench --test=oltp --db-driver=mysql --mysql-host=localhost --mysql-user=root --mysql-socket=/var/lib/mysql/mysql.scok --mysql-db=test --mysql-password=xxxx --mysql-table-engine=MyISAM --oltp-table-size=100 run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases)
Using "LOCK TABLES WRITE" for starting transactions
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 (401.89 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190000 (7635.84 per sec.)
other operations: 20000 (803.77 per sec.)
—-总共执行10000次请求事务操作,每秒平均401.89次,读写请求是190000次,每秒平均是7635.84,其他运行20000次
Test execution summary:
total time: 24.8827s
total number of events: 10000
total time taken by event execution: 24.8381
per-request statistics:
min: 1.79ms
avg: 2.48ms
max: 159.71ms
approx. 95 percentile: 3.56ms
—总共花费24秒,最终请求数为10000次,每次请求最小花费1.79ms,平均2.48ms,最大159ms,
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 24.8381/0.00
=======磁盘测试结果===========
[root@test1 ~]# sysbench --test=fileio --num-threads=16 --file-total-size=300M --file-test-mode=rndrw run
sysbench 0.4.12: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 16
Extra file open flags: 0
128 files, 2.3438Mb each #####300M文件大小,128个文件,每个2.3438Mb
300Mb total file size
Block size 16Kb ####block 16k
Number of random requests for random IO: 10000 ###随机IO请求数10000
Read/Write ratio for combined random IO test: 1.50 ###随机读写比例1.5:1
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test ###随机读写测试
Threads started!
Done.
Operations performed: 6006 Read, 3994 Write, 12800 Other = 22800 Total
Read 93.844Mb Written 62.406Mb Total transferred 156.25Mb (11.44Mb/sec) ###总的IO读写效率
732.13 Requests/sec executed
#######723.13/s是IOPC,每次IO读写一个block,每个block16k,723*16/1024=11M/s
Test execution summary:
total time: 13.6588s
total number of events: 10000
total time taken by event execution: 165.7482
per-request statistics:
min: 0.00ms
avg: 16.57ms
max: 869.99ms
approx. 95 percentile: 101.30ms
Threads fairness:
events (avg/stddev): 625.0000/38.27
execution time (avg/stddev): 10.3593/0.37
./sysbench --mysql-db=sbtest --max-requests=0 --test=oltp --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=1000000 --db-ps-mode=disable --mysql-user=root --mysql-host=192.168.101.25 --mysql-socket=/mysql/mysql.sock --mysql-password --num-threads=16 --max-time=600 run
./sysbench --mysql-db=sbtest --max-requests=0 --test=oltp --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=1000000 --db-ps-mode=disable --mysql-user=root --mysql-host=192.168.101.25 --mysql-socket=/mysql/mysql.sock --mysql-password --num-threads=16 --max-time=600 --oltp-read-only run