今天准备给mysql做个压力测试,所以就相装个tpcc-mysql压一把看看,尼玛网上一搜基本都是一个模子里出来的,下载tpcc-mysql全是一个网站(不是官网),而且还是14年的,下边我是从官网下载的
tcpp-mysql项目地址在这里:https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql
现在tpcc-mysql代码都放到github上了,
地址:https://github.com/Percona-Lab/tpcc-mysql
代码下载地址:https://github.com/Percona-Lab/tpcc-mysql/archive/master.zip
1:我把代码下载在/opt目录里
wget https://github.com/Percona-Lab/tpcc-mysql/archive/master.zip
下载下来是个名为master.zip的包,我把他改成tpcc-mysql-master.zip,用mv就可以该名称mvmaster.ziptpcc-mysql-master.zip
2:打开包 unzip tpcc-mysql-master.zip
进入/opt/tpcc-mysql-master/src
执行 make命令出现如下界面
这个时候进入/opt/tpcc-mysql-master目录会看到生成了两个文件:tpcc_load ,tpcc_start
tpcc_load 提供初始化数据的功能
tpcc_start 进行压力测试
/opt/tpcc-mysql-master目录下有几个sql文件挺重要的
create_table.sql:创建所需的数据库表,共9个表
add_fkey_idx.sql:创建索引和外键
drop_cons.sql:删除约束
进入/opt/tpcc-mysql-master目录,执行
./tpcc_load localhost tpcc100 root 'root' 1如果报
则有可能是下载的包有问题,需要换个包
下载地址:http://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz
下载到本地/opt/目录下
1:先执行 gunzip 解压缩文件比如gunziptpcc-mysql-src.tgz
2:然后解包 tar -xf 解包
进入/opt/tpcc-mysql/src
执行 make命令出现如下界面
直接 tar zxf 可能会报告异常再
执行./tpcc_load localhost tpcc100 root 'root' 1这时就不会报错了
创建表结构:
mysql -S /tmp/mysql3306.sock -u root -p tpcc100<create_table.sql;
mysql -S /tmp/mysql3306.sock -u root -p tpcc100<add_fkey_idx.sql;
导入数据:./tpcc_load localhost tpcc100 root 'root' 1
tpcc_load [server] [DB] [user] [pass] [warehouse]
Server: 服务器名
DB: 数据库名
user: 用户名
pass: 密码
Warehouse: 仓库的数量 ,一般不小于100,ssd的大于1000,我本地是虚拟机环境,所以设置为1
tpcc_start压测:
tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file
各个参数的用法:
-h server_host: 服务器名
-P port : 端口号,默认为3306
-d database_name: 数据库名
-u mysql_user : 用户名
-p mysql_password : 密码
-w warehouses: 仓库的数量
-c connections : 指定并发连接数,默认为1
-r warmup_time : 热身时间,单位:s,默认为10s ,热身是为了将数据加载到内存。
-l running_time: 测试时间,单位:s,默认为20s
-i report_interval: 指定生成报告间隔时长
-f report_file: 测试结果输出文件
./tpcc_start -hlocalhost -d tpcc100 -u root -p 'root' -w 1 -c 2 -r 20 -l 300 -f tpcc_mysql_02.log
没10秒出一次压测数据
上图以逗号分隔,共6列
第一列,第N次10秒
第二列,新订单成功执行压测的次数(推迟执行压测的次数):90%事务的响应时间|本轮测试最大响应时间,新订单事务数也被认为是总有效事务数的指标
第三列,支付业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
第四列,订单状态业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
第五列,物流发货业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
第六列,库存仓储业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
压测结束,下边是两次统计结果
解释:
[0] New-Order,新订单业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数
[1] sc:100552 lt:0 rt:0 fl:0 -- Payment,支付业务统计,支付业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数
[2] sc:10059 lt:0 rt:0 fl:0 -- Order-Status,订单状态业务统计,订单状态业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数
[3] sc:10057 lt:0 rt:0 fl:0 -- Delivery,发货业务统计,发货业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数
[4] sc:10058 lt:0 rt:0 fl:0 -- Stock-Level,库存业务统计,库存业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数
Payment 付业务占总业务43.47%
2078.000 TpmC //TpmC结果值(每分钟事务数,该值是第一次统计结果中的新订单事务数除以总耗时分钟数,例如本例中是:10391/300/60 = 2078)
script目录下的一些脚本主要是一些性能数据采集以及分析的