使用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. -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 -d tpcc1000 -u root -p root -w -c -r -l -f tpcclog_201409211538_64_THREADS.log >> tpcc_noaid_2_20140921_64.log >&
统计结果
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '127.0.0.1'
option P with value ''
option d with value 'tpcc1000'
option u with value 'root'
option p with value 'root'
option w with value ''
option c with value ''
option r with value ''
option l with value ''
option f with value 'tpcclog_201409211538_64_THREADS.log'
<Parameters>
[server]: 127.0.0.1
[port]:
[DBname]: tpcc1000
[user]: root
[pass]: root
[warehouse]:
[connection]:
[rampup]: (sec.)
[measure]: (sec.) RAMP-UP TIME.( sec.)
--初始化信息
MEASURING START. , trx: , %: 3408.202, %: 4244.400, max_rt: 4955.159, |7908.489, |3133.168, |6049.083, |11051.597
, trx: , %: 2954.709, %: 3978.652, max_rt: 5321.916, |7097.855, |3535.278, |5067.906, |8279.009
, trx: , %: 3216.882, %: 4579.696, max_rt: 4651.545, |5517.847, |2888.488, |5839.525, |9747.291
, trx: , %: 2806.432, %: 3772.209, max_rt: 4188.561, |5264.642, |2234.885, |5447.216, |9525.448
, trx: , %: 3708.392, %: 4455.295, max_rt: 4620.094, |6174.815, |2714.639, |6578.676, |9311.568
, trx: , %: 3455.456, %: 4072.641, max_rt: 4789.693, |7616.626, |2813.756, |5629.434, |11790.620
, trx: , %: 3360.588, %: 3785.784, max_rt: 4194.451, |6506.522, |2047.294, |7115.730, |11013.240
, trx: , %: 3394.965, %: 4038.649, max_rt: 4117.499, |7468.766, |1926.932, |7143.620, |7610.500
, trx: , %: 4621.007, %: 5785.856, max_rt: 6406.660, |4856.231, |1691.698, |6805.226, |7287.891
, trx: , %: 4424.727, %: 5655.715, max_rt: 5681.746, |9643.270, |2487.533, |7005.748, |6326.052
, trx: , %: 3222.664, %: 3983.419, max_rt: 4084.562, |6793.215, |2140.033, |6742.681, |8313.380
, trx: , %: 4088.520, %: 5306.367, max_rt: 6080.581, |7764.922, |2306.241, |9595.797, |10459.830
-- 以逗号分隔,共6列
-- 第一列,第N次10秒
-- 第二列,总成功执行压测的次数(总推迟执行压测的次数):90%事务的响应时间|本轮测试最大响应时间
-- 第三列,新订单业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
-- 第四列,支付业务的结果,后面几个的意义同上
-- 第五列,发货业务的结果,后面几个的意义同上
-- 第六列,库存业务的结果,后面几个的意义同上
STOPPING THREADS................................................................ <Raw Results>
[] sc: lt: rt: fl: avg_rt: 2172.2 ()
[] sc: lt: rt: fl: avg_rt: 2191.9 ()
[] sc: lt: rt: fl: avg_rt: 1032.8 ()
[] sc: lt: rt: fl: avg_rt: 5431.0 ()
[] sc: lt: rt: fl: avg_rt: 6932.6 ()
in 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.)>
[] sc: lt: rt: fl:
[] sc: lt: rt: fl:
[] sc: lt: rt: fl:
[] sc: lt: rt: fl:
[] sc: lt: rt: fl: <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 % 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% 通过
使用tpcc-mysql进行性能测试的更多相关文章
- 使用sysbench 对mysql进行性能测试
使用sysbench 对mysql进行性能测试 sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有My ...
- Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案
转自http://www.cnblogs.com/fnz0/p/5713102.html 不知道自己什么时候才有这种钻研精神- -. 1 背景 系统中需要批量生成单据数据到数据库表,所以采用 ...
- Mysql多线程性能测试工具sysbench 安装、使用和测试
From:http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html 摘要: sysbench是一个开源的.模块化的.跨 ...
- Jmeter MySQL数据库性能测试
1.首先准备M一SQL数据,新建一个数据库及测试用的表,插入1条数据 2.打开Jmeter,新建线程组,设置多少用户,循环几次随意 3.在线程组下新增JDBC配置元件,通过配置使得Jmeter能够连上 ...
- 【转】Jmeter MySQL数据库性能测试
1.首先准备M一SQL数据,新建一个数据库及测试用的表,插入1条数据 2.打开Jmeter,新建线程组,设置多少用户,循环几次随意 3.在线程组下新增JDBC配置元件,通过配置使得Jmeter能够连上 ...
- mysql 重点性能测试指标
#qps 每秒钟查询数量 计算方式queries/seconds 查询总数/秒数show GLOBAL STATUS LIKE 'question%' #tps 每秒事务数 计算方式 (com_com ...
- MYSQL LIMIT 性能测试
查询语句 # 普通表 SELECT * FROM test_page LIMIT m,n # 内存表 SELECT * FROM test_page_memory LIMIT m,n 总结 查询位置( ...
- MySQL 常用工具sysbench/fio/tpcc等测试
为什么要压力测试采购新设备,评估新设备性能开发新项目,评估数据库容量新系统上线前,预估/模拟数据库负载更换数据库版本,评估性能变化 关注指标 CPU %wait,%user,%sys 内存 只内存读 ...
- 最详细的CentOS 6与7对比(三):性能测试对比
本主题将从3个角度进行对比 常见设置(CentOS 6 vs CentOS 7) 服务管理(Sysvinit vs Upstart vs Systemd) 性能测试(cpu/mem/io/oltp) ...
- CentOS 6.5 RPM包方式安装 Mysql 5.6
1. 下载MySQL 5.6 下载页面:http://dev.mysql.com/downloads/mysql/此处选择“Red Hat Enterprise Linux 6 / Oracle Li ...
随机推荐
- 用swoole实现mysql的连接池--摘自https://github.com/153734009/doc/blob/master/php/mysql_pool.php
<?php $serv = new swoole_server("0.0.0.0", 9508); $serv->set(['worker_num'=>1 ...
- WPF DataGrid 导出Excel
#region Excel导出 private void btnExportExcel_Click(object sender, RoutedEventArgs e) { Export(this.dg ...
- Ubuntu 14.04 下安装 MongoDB 服务器 和 PHP MongoDB Driver 数据驱动
https://laravel-china.org/topics/309/install-mongodb-server-and-php-mongodb-driver-data-driver-under ...
- axios 上传图片
let data = new FormData(); for (var i = 0; i < files.length; i++) { let file = files.item(i); dat ...
- Java序列化的理解与学习
1.什么是Java序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM的生命周期更长.但在现实应 ...
- Spring mvc Json 的正确返回姿势
我们经常都需要封装统一JSON格式 例如以下形式 { “data”:“输出的数据”, “code”:“响应代码”, “msg”:“响应信息” } /** * Created by linli on 2 ...
- STL基础--算法(不修改数据的算法)
不修改数据的算法 count, min and max, compare, linear search, attribute // 算法中Lambda函数很常用: num = count_if(vec ...
- Hadoop 管理工具HUE配置-集成Unix用户和用户组
HUE安装完成之后,第一次登录的用户就是HUE的超级用户,可以管理用户,等等.但是在用的过程发现一个问题这个用户不能管理HDFS中由supergroup创建的数据. 虽然在HUE中创建的用户可以管理自 ...
- nginx关闭全局access.log,error.log
如果nginx的server里没配置access.log,nginx会默认将server的访问日志记录到access.log, 关闭方法: 在nginx.conf配置文件中, 在全局配置中添加 err ...
- vue2.0变化
之前有很多的vue知识总结都是围绕1.0版本实现的,下面主要总结一下2.0相对于1.0的一些变化. 组件定义 在vue1.0中,我们有使用vue.extend()来创建组件构造器继而创建组件实例,如下 ...