mysql性能测试工具——tpcc-mysql
1、工具安裝
下載源碼包,解壓安裝
# wgethttp://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz
# gunzip tpcc-mysql-src.tgz
# tar xf tpcc-mysql-src.tar
# cd tpcc-mysql/src
# make
之后會生成兩個二進制工具tpcc_load(提供初始化數據的功能)和tpcc_start(進行壓力測試)
2、tpcc-mysql業務邏輯
New-Order:新訂單,一次完整的訂單事務,幾乎涉及到全部表
Payment:支付,主要對應 orders、history 表
Order-Status:訂單狀態,主要對應 orders、order_line 表
Delivery:發貨,主要對應 order_line 表
Stock-Level:庫存,主要對應 stock 表
客戶:主要對應 customer 表
地區:主要對應 district 表
商品:主要對應 item 表
倉庫:主要對應 warehouse 表
3、tpcc測試前準備,初始化數據庫
進入tpcc-mysql目錄
# mysqladmin -uroot -pxxx create tpcc # 創建測試用的數據庫(xxx為你的Mysql密碼,tpcc為你創建的數據庫名)
# mysql -uroot -pxxx -f tpcc < create_table.sql# 創建測試用的表
# mysql -uroot -pxxx tpcc < add_fkey_idx.sql# 創建FK和索引
4、加載數據
注意:server是要測試的服務器,db,user,password也是要測的服務器上mysql的信息
#./tpcc_load --help
./tpcc_load [server] [db] [user] [password] [warehouse]
服務器名 數據庫名 用戶名 密碼 倉庫數量
例如:
#./tpcc_load localhost tpcc root xxx 150
真實測試中,數據庫倉庫一般不少于100個,如果配置了ssd,建議最少不低于1000個
5、進行測試
注意:server等信息與步驟4中保持一致
#./tpcc_start --help
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] -t [trx] - > out1
各個參數用法如下:
-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 , 熱身是為了將數據加載到內存。(真實測試中建議熱身時間不低于5分鐘)
-l running_time: 測試時間,單位:s,默認為20s
-i report_interval: 指定生成報告間隔時長(真實測試中不低于30min)
-f report_file: 測試結果輸出文件(一般命名為xxx.log)
-t trx:輸出文件
- > out1: 將控制臺輸出存入文件out1中
例如:
./tpcc_start -h localhost -p 3306 -d tpcc -u root -p xxx -w 150 -c 12 -r 300 -l 360 -f test0.log -t test1.log - >test0.out
-f report輸出的文件
是很多組數據對,如下例:
0 1.273 //0表示timestamp,1.273表示在0-10s內的第1筆新訂單業務耗時1.273s
0 1.752 //0表示timestamp,1.752表示在0-10s內的第2筆新訂單業務耗時1.752s
0 3.768
0 3.399
0 1.584
...(篇幅限制,此處省略很多數據對,下同)
10 1.489 //10表示timestamp,1.489表示在10-20s內的第1筆新訂單業務耗時1.489s
10 1.635
-t trx輸出文件:
t_num: 10 finish: 1364890011 61758711 start: 1364890011 27467602
t_num: 0 finish: 1364890011 63430248 start: 1364890011 24673279
t_num: 7 finish: 1364890011 73803144 start: 1364890011 28447105
10表示這個結果是第10個connect輸出的(-c參數),finish和start后面的兩個數據表示訂單發送的結束時間和其實時間,單位分別為s/ns,finish-start的時間指的是占用cpu的時間,訂單完成時間很大一部分是消耗再磁盤的IO處理上的。
例如:
-- 本輪tpcc壓測的一些基本信息
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value 'localhost'-- 主機
option d with value 'tpcc'-- 數據庫
option u with value 'root'-- 賬號
option p with value 'yourpassword' -- 密碼
option w with value '150'-- 倉庫數
option c with value '12'-- 并發線程數
option r with value '300'-- 數據預熱時長(秒)
option l with value '3600'-- 壓測時長(秒)
non-option ARGV-elements: -
<Parameters>
[server]: localhost
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]: xxx
[warehouse]: 150
[connection]: 12
[rampup]: 300 (sec.)
[measure]: 3600 (sec.)
-- 預熱結束,開始進行壓測
RAMP-UP TIME.(300 sec.)
-- 每10秒鐘輸出一次壓測數據
MEASURING START.
10, 435(0):3.322|6.846, 435(0):0.672|1.661, 44(0):0.386|0.439, 43(0):4.017|4.847, 44(0):11.076|11.907
20, 418(0):3.334|3.482, 416(0):0.669|0.728, 41(0):0.355|0.390, 41(0):3.796|4.356, 41(0):10.580|10.781
30, 410(0):3.332|4.708, 412(0):0.656|1.661, 41(0):0.304|0.308, 42(0):3.844|3.926, 42(0):10.542|10.646
...
3580, 445(0):3.277|3.402, 447(0):0.658|0.765, 44(0):0.326|0.404, 45(0):3.856|3.950, 44(0):10.805|10.899
3590, 388(0):3.352|3.589, 391(0):0.697|0.795, 39(0):0.320|0.330, 39(0):3.826|4.009, 39(0):10.638|10.844
3600, 407(0):3.256|3.390, 405(0):0.676|0.746, 41(0):0.331|0.339, 41(0):3.904|3.910, 41(0):10.625|10.653
-- 以逗號分隔,共6列
-- 第一列,第N次10秒
-- 第二列,新訂單成功執行壓測的次數(推遲執行壓測的次數):90%事務的響應時間|本輪測試最大響應時間,新訂單事務數也被認為是總有效事務數的指標
-- 第三列,支付業務成功執行次數(推遲執行次數):90%事務的響應時間|本輪測試最大響應時間
-- 第四列,訂單狀態業務的結果,后面幾個的意義同上
-- 第五列,物流發貨業務的結果,后面幾個的意義同上
-- 第六列,庫存倉儲業務的結果,后面幾個的意義同上
-- 壓測結束
STOPPING THREADS............
-- 第一次結果統計
<Raw Results>
[0] sc:144136lt:5rt:0fl:0-- New-Order,新訂單業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數
[1] sc:144148lt:0rt:0fl:0-- Payment,支付業務統計,其他同上
[2] sc:14416lt:0rt:0fl:0-- Order-Status,訂單狀態業務統計,其他同上
[3] sc:14416lt:0rt:0fl:0-- Delivery,發貨業務統計,其他同上
[4] sc:14416lt:0rt:0fl:0-- Stock-Level,庫存業務統計,其他同上
in 3600 sec.
-- 第二次統計結果,其他同上
<Raw Results2(sum ver.)>
[0] sc:144147lt:5rt:0fl:0
[1] sc:144154lt:0rt:0fl:0
[2] sc:14416lt:0rt:0fl:0
[3] sc:14416lt:0rt:0fl:0
[4] sc:14416lt:0rt:0fl:0
<Constraint Check> (all must be [OK])-- 下面所有業務邏輯結果都必須為 OK 才行
[transaction percentage]
Payment: 43.48% (>=43.0%) [OK]-- 支付成功次數(上述統計結果中 sc + lt)必須大于43.0%,否則結果為NG,而不是OK
Order-Status: 4.35% (>= 4.0%) [OK]-- 訂單狀態,其他同上
Delivery: 4.35% (>= 4.0%) [OK]-- 發貨,其他同上
Stock-Level: 4.35% (>= 4.0%) [OK]-- 庫存,其他同上
[response time (at least 90% passed)]-- 響應耗時指標必須超過90%通過才行
New-Order: 100.00%[OK]-- 下面幾個響應耗時指標全部 100% 通過
Payment: 100.00%[OK]
Order-Status: 100.00%[OK]
Delivery: 100.00%[OK]
Stock-Level: 100.00%[OK]
<TpmC>
2402.350 TpmC - TpmC結果值(每分鐘事務數,該值是第一次統計結果中的新訂單事務數除以總耗時分鐘數,例如本例中是:144136/60 = 2402.350)
總結
以上是生活随笔為你收集整理的mysql性能测试工具——tpcc-mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ primer 第14章 操作重载
- 下一篇: 摘樱桃