4747- ` --debug-info ` 代表要额外输出 CPU 以及内存的相关信息。
4848- ` --only-print ` 打印压力测试的时候 mysqlslap 到底做了什么事,通过 sql 语句方式告诉我们。
4949
50+ -------------------------------------------------------------------
51+
5052
5153## sysbench 工具
5254
@@ -148,6 +150,8 @@ Threads fairness:
148150 events (avg/stddev): 2748.6000/132.71 --总处理事件数/标准偏差
149151 execution time (avg/stddev): 119.9907/0.00 --总执行时间/标准偏差
150152
153+ -------------------------------------------------------------------
154+
151155## QPS 和 TPS 和说明
152156
153157### 基本概念
@@ -171,6 +175,157 @@ Threads fairness:
171175- 每天300wPV的在单台机器上,这台机器需要多少QPS?对于这样的问题,假设每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。( 3000000 * 0.8 ) / (3600 * 24 * 0.2 ) = 139 (QPS).
172176- 如果一台机器的QPS是58,需要几台机器来支持?答:139 / 58 = 3
173177
178+ -------------------------------------------------------------------
179+
180+ ## Percona TPCC-MySQL 测试工具(优先推荐)
181+
182+ - 可以较好地模拟真实测试结果数据
183+ - 官网主页:< https://github.com/Percona-Lab/tpcc-mysql >
184+
185+ ```
186+ TPC-C 是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统。
187+ TPC-C是TPC(Transaction Processing Performance Council)组织发布的一个测试规范,用于模拟测试复杂的在线事务处理系统。其测试结果包括每分钟事务数(tpmC),以及每事务的成本(Price/tpmC)。
188+ 在进行大压力下MySQL的一些行为时经常使用。
189+ ```
190+
191+ ### 安装
192+
193+ - 先确定本机安装过 MySQL
194+ - 并且安装过:` yum install mysql-devel `
195+
196+ ```
197+ git clone https://github.com/Percona-Lab/tpcc-mysql
198+ cd tpcc-mysql/src
199+ make
200+
201+ 如果make没报错,就会在tpcc-mysql 根目录文件夹下生成tpcc二进制命令行工具tpcc_load、tpcc_start
202+ ```
203+
204+ ### 测试的几个表介绍
205+
206+ ```
207+ tpcc-mysql的业务逻辑及其相关的几个表作用如下:
208+ New-Order:新订单,主要对应 new_orders 表
209+ Payment:支付,主要对应 orders、history 表
210+ Order-Status:订单状态,主要对应 orders、order_line 表
211+ Delivery:发货,主要对应 order_line 表
212+ Stock-Level:库存,主要对应 stock 表
213+
214+ 其他相关表:
215+ 客户:主要对应customer表
216+ 地区:主要对应district表
217+ 商品:主要对应item表
218+ 仓库:主要对应warehouse表
219+ ```
220+
221+ ### 准备
222+
223+ - 测试阿里云 ECS 与 RDS 是否相通:
224+ - 记得在 RDS 添加账号和给账号配置权限,包括:配置权限、数据权限(默认添加账号后都是没有开启的,还要自己手动开启)
225+ - 还要添加内网 ECS 到 RDS 的白名单 IP 里面
226+ - 或者在 RDS 上开启外网访问设置,但是也设置 IP 白名单(访问 ip.cn 查看自己的外网 IP 地址,比如:120.85.112.97)
227+
228+ ```
229+ ping rm-wz9066qo44wn500t55o.mysql.rds.aliyuncs.com
230+
231+ mysql -h rm-wz9066qo44wn500t55o.mysql.rds.aliyuncs.com -P 3306 -u myaccount -p
232+
233+ 输入密码:Aa123456
234+ ```
235+
236+
237+
238+ ```
239+ 创库,名字为:TPCC:
240+ CREATE DATABASE TPCC DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
241+
242+
243+ 导入项目中的出初始化数据脚本:
244+ 创建表:create_table.sql
245+ 创建索引和外键:add_fkey_idx.sql
246+ ```
247+
248+
249+ ### 测试
250+
251+ - 数据库:阿里云 RDS-MySQL-5.7-2C4G
252+ - 测试机:阿里云 ECS-4C8G-CentOS7.6
253+
254+ - 需要注意的是 tpcc 默认会读取 /var/lib/mysql/mysql.sock 这个 socket 文件。因此,如果你的socket文件不在相应路径的话,可以做个软连接,或者通过TCP/IP的方式连接测试服务器
255+ - 准备数据:
256+
257+ ```
258+ cd /opt/tpcc-mysql
259+ ./tpcc_load -h rm-wz9066qo44wn500t55o.mysql.rds.aliyuncs.com -P 3306 -d TPCC -u myaccount -p Aa123456 -w 100
260+ -w 100 表示创建 100 个仓库数据
261+ 这个过程花费时间还是挺长的,我这台 ECS 结果是这样:
262+ 差不多 9s == 5000 个数据。
263+ 也就是:
264+ 10W 个数据需要 == 20 X 9s == 180s == 3min
265+ 1000W == 5h
266+ 一共差不多花了 10h 左右。
267+
268+ 插入过程 RDS-2C4G 的监控情况:
269+ CPU利用率 4%
270+ 内存 18% ~ 40% (随着数据增加而增大)
271+ 连接数:1%
272+ IOPS:4%
273+ 已使用存储空间:5.5G ~ 10G
274+
275+ 要模拟出够真实的数据,仓库不要太少,一般要大于 100,
276+ 当然你也可以 select count(*) from 上面的各个表,看下 100 个库生成的数据,是不是跟你预期数据差不多,是的话就够了。
277+
278+ select count(*) from customer;
279+ 10s X 10 X 100 = 10000s
280+
281+ select count(*) from district;
282+ select count(*) from history;
283+ select count(*) from item;
284+ 100 个仓库 == 1000 X 100 == 100000 == 10W
285+ select count(*) from new_orders;
286+ select count(*) from order_line;
287+ select count(*) from orders;
288+ select count(*) from stock;
289+ 100 个仓库 == 100000 X 100 == 10000000 = 1000W
290+ select count(*) from warehouse;
291+ ```
292+
293+ - 开始测试:
294+
295+ ```
296+
297+ tpcc_start -h rm-wz9066qo44wn500t55o.mysql.rds.aliyuncs.com -P 3306 -d TPCC -u myaccount -p Aa123456 -w 100 -c 200 -r 300 -l 2400 -f /opt/mysql_tpcc_100_20190324
298+
299+ -w 100 表示 100 个仓库数据
300+ -c 200 表示并发 200 个线程
301+ -r 300 表示预热 300 秒
302+ -l 2400 表示持续压测 2400 秒
303+
304+ ```
305+
306+
307+ ### 报表
308+
309+
310+ ```
311+ 行数据表示:10, 1187(0):1.682|2.175, 1187(0):0.336|0.473, 118(0):0.172|0.226, 118(0):1.864|2.122, 119(0):6.953|8.107
312+
313+ 10:时间戳,每十秒产生一条数据。
314+ 1187(0):1.682|2.175:表示10秒内完成1187笔新订单业务。
315+ 1187(0):0.336|0.473: 支付业务,
316+ 118(0):1.864|2.122:查询业务,
317+ 118(0):0.172|0.226: 发货业务,
318+ 119(0):6.953|8.107: 库存查询业务
319+
320+
321+
322+ <TpmC>
323+ 188.000 TpmC
324+ TpmC结果值(每分钟事务数,该值是第一次统计结果中的新订单事务数除以总耗时分钟数,例如本例中是:372/2=186)
325+ tpmC值在国内外被广泛用于衡量计算机系统的事务处理能力
326+ ```
327+
328+
174329
175330
176331## 资料
@@ -181,3 +336,4 @@ Threads fairness:
181336- < http://blog.chinaunix.net/uid-25723371-id-3498970.html >
182337- < http://nsimple.top/archives/mysql-sysbench-tool.html >
183338- < https://dearhwj.gitbooks.io/itbook/content/test/performance_test_qps_tps.html >
339+ - < https://www.hi-linux.com/posts/38534.html >
0 commit comments