mysql 性能测试---sysbench

1.sysbench 概述

sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。

sysbench支持以下几种测试模式:

1CPU运算性能
2、磁盘IO性能
3、调度程序性能
4、内存分配及传输速度
5POSIX线程性能
6、数据库性能(OLTP基准测试)
目前sysbench主要支持 mysql,drizzle,pgsql,oracle 等几种数据库。

下载安装软件
http://imysql.com/wp-content/uploads/2014/09/sysbench-0.4.12-1.1.tgz

2.sysbench 的安装

# 安装依赖包

sudo yum install automake libtool -y

# 编译安装sysbench

./autogen.sh
./configure --with-mysql-includes=/usr/local/webserver/percona/include/ --with-mysql-libs=/usr/local/webserver/percona/lib/ 
sudo make 

# 如果报错:/usr/bin/ld: cannot find -lmysqlclient_r,则
ln -s /usr/lib64/mysql/libmysqlclient_r.so.16 /usr/lib/libmysqlclient_r.so

安装完成后会在当前目录生成sysbench 目录,里面有sysbench 可执行文件。

sysbench --version

3.进行OLTP性能测试准备

# 初始化测试库环境(总共10个测试表,每个表 100000 条记录,填充随机生成的数据)

create database ledo;
./sysbench --mysql-socket=/my/data/tmp/mysql.sock \ --mysql-port=3306 --mysql-user=root --mysql-db=ledo \ --mysql-password="2s5c688g96tujb5q" --test=tests/db/oltp.lua \ --oltp_tables_count=10 --oltp-table-size=80000000 \ --rand-init=on prepare

# 参数的解释:

--test=tests/db/oltp.lua 表示调用 tests/db/oltp.lua 脚本进行 oltp 模式测试
--oltp_tables_count=10 表示会生成 10 个测试表
--oltp-table-size=80000000 表示每个测试表填充数据量为 80000000 
--rand-init=on 表示每个测试表都是用随机数据来填充的

真实测试场景中,数据表建议不低于10个,单表数据量不低于500万行,当然了,要视服务器硬件配置而定。如果是配备了SSD或者PCIE SSD这种高IOPS设备的话,则建议单表数据量最少不低于1亿行。

4.进行OLTP 性能测试

./sysbench --mysql-socket=/my/data/tmp/mysql.sock  \
--mysql-user=root --mysql-password="2s5c688g96tujb5q" \
--test=oltp --test=tests/db/oltp.lua --oltp-table-size=80000000 \
--num-threads=8 --oltp-read-only=off --mysql-table-engine=innodb  --mysql-db=ledo \
--report-interval=10 --rand-type=uniform --max-time=3600 \
--max-requests=0 --percentile=99 run >> /tmp/sysbench.log1

# 多线程测试

for i in 16 32 64 128 256; 
do
    cd /home/dbctl/sysbench-0.4.12-1.1/sysbench
    ./sysbench --mysql-socket=/my/data/tmp/mysql.sock --mysql-user=root --mysql-password="2s5c688g96tujb5q" --test=oltp --test=tests/db/oltp.lua --oltp-table-size=80000000 --num-threads=$i --oltp-read-only=off --mysql-table-engine=innodb  --mysql-db=ledo --report-interval=10 --rand-type=uniform --max-time=60 --max-requests=0 --percentile=99 run >> /tmp/sysbench.log1
done

 

# 参数解释:

1 --num-threads=8 表示发起 8个并发连接
2 --oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试
3 --report-interval=10 表示每10秒输出一次测试进度报告
4 --rand-type=uniform 表示随机类型为固定模式,其他几个可选随机模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)
5 --max-time=120 表示最大执行时长为 120秒(即测试的持续时间)
6 --max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长
7 --percentile=99 表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值

真实测试场景中,建议持续压测时长不小于30分钟,否则测试数据可能不具参考意义。

五、测试结果解读

[3570s] threads: 8, tps: 1868.40, reads/s: 26158.60, writes/s: 7473.60, response time: 5.67ms (99%)
[3580s] threads: 8, tps: 1871.90, reads/s: 26207.39, writes/s: 7487.80, response time: 5.79ms (99%)
[3590s] threads: 8, tps: 1874.80, reads/s: 26248.11, writes/s: 7499.40, response time: 5.60ms (99%)
[3600s] threads: 8, tps: 1884.50, reads/s: 26381.20, writes/s: 7537.60, response time: 5.26ms (99%)
OLTP test statistics:
    queries performed:
        read:                            94003182      ---读总数
        write:                           26858052    ---写总数
        other:                           13429026      ---其他操作总数(SELECTINSERTUPDATEDELETE之外的操作,例如COMMIT
    total:                134290260 ---全部总数

   transactions: 6714513 (1865.14 per sec.)      ---总事务数(每秒的事务数)
   deadlocks: 0 (0.00 per sec.)                ---发生死锁的总数
   read/write requests: 120861234 (33572.53 per sec.) ---读写总数(每秒读写次数)
   other operations: 13429026 (3730.28 per sec.)    ---其他操作总数


  General statistics:
  total time: 3600.0040s                 ---总耗时
  total number of events: 6714513                   ---总的事务数
  total time taken by event execution: 28781.5070s   ---所有事务耗时(不考虑并行因素)
  response time:      ---响应时间统计
  min: 3.26ms         ---最小耗时
  avg: 4.29ms         ---平均耗时
  max: 1046.27ms      ---最大耗时
  approx. 99 percentile: 5.62ms  ---超过99%平均耗时


  Threads fairness:        ---并发统计
  events (avg/stddev): 839314.1250/700.77
  execution time (avg/stddev): 3597.6884/0.02

 

 注:转自http://blog.csdn.net/oahz4699092zhao/article/details/53332105

posted @ 2018-03-12 13:53  Sin-是我的海  阅读(105)  评论(0)    收藏  举报