tpcc-mysql的github地址:https://github.com/Percona-Lab/tpcc-mysql
tpcc-mysql源代码进行编译,服务器上需要安装有mysql
git clone https://github.com/Percona-Lab/tpcc-mysql.git cd tpcc-mysql/src make
可能会遇到如下错误:
需要安装以下组件
yum install mysql-devel yum install gcc
make成功后,会在tpcc-mysql下生成两个命令行工具
创建库
# 本地
mysqladmin -uroot -proot create tpcc1000
# 远程
mysqladmin -h192.168.0.1 -P3306 -uroot -proot create tpcc1000
创建表
# 本地
mysql -uroot -proot -f tpcc1000 < create_table.sql
# 远程
mysql -h192.168.0.1 -P3306 -uroot -proot -f tpcc1000 < create_table.sql
创建外键
# 本地
mysql -uroot -proot -S /tmp/mysql.sock tpcc100 < add_fkey_idx.sql
#远程
mysql -h192.168.0.1 -P3306 -uroot -proot -S /tmp/mysql.sock tpcc1000 < add_fkey_idx.sql
加载数据
-h 主机IP -P 端口号 -u 用户名 -p 密码 -d 数据库名 -w仓库数量
./tpcc_load -h127.0.0.1 -P3306 -uroot -proot -dtpcc1000 -w100
真实测试场景中,仓库数一般不建议少于 100个,视服务器硬件配置而定,如果是配备了SSD或者PCIE SSD这种高IOPS设备的话,建议最少不低于 1000个。
发起压测
-h 主机IP -P 端口号 -u 用户名 -p 密码 -d 数据库名 -w仓库数量 -c 并发数 -r 预热时间 -l 持续测试时间 -i 报告生成间隔时长 -f 生成的报告名
./tpcc_start -h 127.0.0.1 -P 3306 -d tpcc1000 -u root -p root -w 10 -c 64 -r 30 -l 120 -f tpcclog_201409211538_64_THREADS.log >> tpcc_noaid_2_20140921_64.log 2>&1
统计结果
*************************************** *** ###easy### TPC-C Load Generator *** *************************************** option h with value '127.0.0.1' option P with value '3306' option d with value 'tpcc1000' option u with value 'root' option p with value 'root' option w with value '10' option c with value '64' option r with value '30' option l with value '120' option f with value 'tpcclog_201409211538_64_THREADS.log' <Parameters> [server]: 127.0.0.1 [port]: 3306 [DBname]: tpcc1000 [user]: root [pass]: root [warehouse]: 10 [connection]: 64 [rampup]: 30 (sec.) [measure]: 120 (sec.) RAMP-UP TIME.(30 sec.)
--初始化信息
MEASURING START. 10, trx: 154, 95%: 3408.202, 99%: 4244.400, max_rt: 4955.159, 159|7908.489, 17|3133.168, 13|6049.083, 16|11051.597 20, trx: 141, 95%: 2954.709, 99%: 3978.652, max_rt: 5321.916, 125|7097.855, 13|3535.278, 16|5067.906, 15|8279.009 30, trx: 137, 95%: 3216.882, 99%: 4579.696, max_rt: 4651.545, 150|5517.847, 14|2888.488, 12|5839.525, 10|9747.291 40, trx: 148, 95%: 2806.432, 99%: 3772.209, max_rt: 4188.561, 151|5264.642, 15|2234.885, 15|5447.216, 17|9525.448 50, trx: 140, 95%: 3708.392, 99%: 4455.295, max_rt: 4620.094, 131|6174.815, 15|2714.639, 13|6578.676, 15|9311.568 60, trx: 139, 95%: 3455.456, 99%: 4072.641, max_rt: 4789.693, 137|7616.626, 13|2813.756, 12|5629.434, 13|11790.620 70, trx: 145, 95%: 3360.588, 99%: 3785.784, max_rt: 4194.451, 156|6506.522, 14|2047.294, 15|7115.730, 14|11013.240 80, trx: 145, 95%: 3394.965, 99%: 4038.649, max_rt: 4117.499, 149|7468.766, 15|1926.932, 15|7143.620, 16|7610.500 90, trx: 132, 95%: 4621.007, 99%: 5785.856, max_rt: 6406.660, 111|4856.231, 12|1691.698, 15|6805.226, 18|7287.891 100, trx: 131, 95%: 4424.727, 99%: 5655.715, max_rt: 5681.746, 142|9643.270, 15|2487.533, 12|7005.748, 11|6326.052 110, trx: 122, 95%: 3222.664, 99%: 3983.419, max_rt: 4084.562, 130|6793.215, 12|2140.033, 12|6742.681, 10|8313.380 120, trx: 141, 95%: 4088.520, 99%: 5306.367, max_rt: 6080.581, 132|7764.922, 12|2306.241, 15|9595.797, 13|10459.830
-- 以逗号分隔,共6列
-- 第一列,第N次10秒
-- 第二列,总成功执行压测的次数(总推迟执行压测的次数):90%事务的响应时间|本轮测试最大响应时间
-- 第三列,新订单业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
-- 第四列,支付业务的结果,后面几个的意义同上
-- 第五列,发货业务的结果,后面几个的意义同上
-- 第六列,库存业务的结果,后面几个的意义同上
STOPPING THREADS................................................................ <Raw Results> [0] sc:0 lt:1675 rt:0 fl:0 avg_rt: 2172.2 (5) [1] sc:2 lt:1671 rt:0 fl:0 avg_rt: 2191.9 (5) [2] sc:6 lt:161 rt:0 fl:0 avg_rt: 1032.8 (5) [3] sc:0 lt:165 rt:0 fl:0 avg_rt: 5431.0 (80) [4] sc:0 lt:168 rt:0 fl:0 avg_rt: 6932.6 (20) in 120 sec.
-- 第0行 New-Order,新订单业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)
-- 第1行 Payment,支付业务统计,其他同上
-- 第2行 Order-Status,订单状态业务统计,其他同上
-- 第3行 Delivery,发货业务统计,其他同上
-- 第4行 Stock-Level,库存业务统计,其他同上
<Raw Results2(sum ver.)> [0] sc:0 lt:1675 rt:0 fl:0 [1] sc:2 lt:1671 rt:0 fl:0 [2] sc:6 lt:161 rt:0 fl:0 [3] sc:0 lt:165 rt:0 fl:0 [4] sc:0 lt:168 rt:0 fl:0 <Constraint Check> (all must be [OK]) [transaction percentage] Payment: 43.48% (>=43.0%) [OK] Order-Status: 4.34% (>= 4.0%) [OK] Delivery: 4.29% (>= 4.0%) [OK] Stock-Level: 4.37% (>= 4.0%) [OK] [response time (at least 90% passed)] New-Order: 0.00% [NG] * Payment: 0.12% [NG] * Order-Status: 3.59% [NG] * Delivery: 0.00% [NG] * Stock-Level: 0.00% [NG] * <TpmC> 837.500 TpmC -- TpmC结果值
Payment -- 支付成功次数(上述统计结果中 sc + lt)必须大于43.0%,否则结果为NG,而不是OK
Order-Status -- 订单状态,其他同上
Delivery -- 发货,其他同上
Stock-Level -- 库存,其他同上
response time -- 响应耗时指标必须超过90%通过才行 下面几个响应耗时指标全部 100% 通过