使用tpcc-mysql进行性能测试

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% 通过


原文地址:https://www.cnblogs.com/maobuji/p/8337662.html