一、sysbench参数html
# 经过参数 --num-threads=N 建立测试线程的数目。默认为1. --max-requests=N 请求的最大数目。默认为10000,0表明不限制。 --max-time=N 最大执行时间,单位是s。默认是0,不限制。 --forced-shutdown=STRING 超过max-time强制中断。默认是off。] --thread-stack-size=SIZE 每一个线程的堆栈大小。默认是32K。 --init-rng=[on|off] 在测试开始时是否初始化随机数发生器。默认是off。 --test=STRING 指定测试项目名称。 --debug=[on|off] 是否显示更多的调试信息。默认是off。 --validate=[on|off] 在可能状况下执行验证检查。默认是off。 --num-threads=8 表示发起 8个并发链接 --oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试 --report-interval=10 表示每10秒输出一次测试进度报告 --rand-type=uniform 表示随机类型为固定模式,其余几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托) --max-time=120 表示最大执行时长为 120秒 --max-requests=0 表示总请求数为 0,由于上面已经定义了总执行时长,因此总请求数能够设定为 0;也能够只设定总请求数,不设定最大执行时长 --percentile=99 表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值
二、OLTP压测mysql
一、建立数据表
web
#建立数据库 mysqladmin create sbtest sysbench --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --mysql-password=123456 --mysql-table-engine=innodb --oltp-table-size=10000000 prepare #5.0版本开始使用 --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua #若是在本机,也可使用 –mysql-socket 指定 socket 文件来链接。加载测试数据时长视数据量而定,若过程比较久须要#稍加耐心等待。 #真实测试场景中,数据表建议不低于10个,单表数据量不低于500万行,固然了,要视服务器硬件配置而定。若是是配备了SSD或者PCIE SSD这种高IOPS设备的话,则建议单表数据量最少不低于1亿行。
二、压测sql
sysbench --mysql-db=sbtest --max-requests=0 --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=10000000 --db-ps-mode=disable --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --mysql-password=123456 --num-threads=16 --max-time=600 run #压测1个小时读写,16线程 #使用16个线程开始测试,只读模式。 #sysbench --mysql-db=sbtest --max-requests=0 --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=10000000 --db-ps-mode=disable --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --oltp-read-only --mysql-password=123456 --num-threads=16 --max-time=60 run 即:模拟 对10个表并发OLTP测试,每一个表1000万行记录,持续压测时间为 1小时。 真实测试场景中,建议持续压测时长不小于30分钟,不然测试数据可能不具参考意义。
三、压测结果shell
OLTP test statistics: queries performed: read: 170996 -- 读总数 write: 48856 -- 写总数 other: 24428 -- 其余操做总数(SELECT、INSERT、UPDATE、DELETE以外的操做,例如COMMIT等) total: 244280 transactions: 12214 (203.47 per sec.) 总事务数(每秒事务数) read/write requests: 219852 (3662.51 per sec.) 读写总数(每秒读写次数) other operations: 24428 (406.95 per sec.) 其余操做总数(每秒其余操做次数) ignored errors: 0 (0.00 per sec.) reconnects: 0 (0.00 per sec.) General statistics: total time: 60.0276s total number of events: 12214 - 共发生多少事务数 total time taken by event execution: 959.8838s 全部事务耗时相加(不考虑并行因素) response time: min: 8.07ms -- 最小耗时 avg: 78.59ms -- 平均耗时 max: 750.64ms -- 最长耗时 approx. 95 percentile: 141.56ms -- 超过99%平均耗时 Threads fairness: events (avg/stddev): 763.3750/7.61 execution time (avg/stddev): 59.9927/0.02
四、清理数据数据库
#清理测试的残留信息 sysbench --mysql-db=sbtest --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --oltp-table-size=1000000 --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --mysql-password=123456 cleanup
五、参考文章服务器
http://imysql.com/2014/10/17/sysbench-full-user-manual.shtml并发
http://www.cnblogs.com/ylqmf/archive/2012/09/29/2708562.html app