【工具】基準測試工具之tpcc-mysql

北在南方發表於2016-04-13
   TPC(Tracsaction Processing Performance Council) 事務處理效能協會是一個評價大型資料庫系統軟硬體效能的非盈利的組織,TPC-C是TPC協會制定的,用來測試典型的複雜OLTP系統的效能。Tpcc-mysql是percona基於tpcc衍生出來的產品,專用於mysql基準測試,其原始碼放在bazaar上,因此需要先安裝bazaar客戶端。
一 下載工具
  安裝rpm包 ,根據系統的不同選擇合適的rpm 
  rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
  rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
  安裝bzr 客戶端 
  yum install bzr
  下載tpcc-mysql
[root@rac1 markbench]# bzr branch lp:~percona-dev/perconatools/tpcc-mysql
You have not informed bzr of your Launchpad ID, and you must do this to
write to Launchpad or access private data.  See “bzr help launchpad-login”.
Branched 48 revision(s). 
bzr: warning: some compiled extensions could not be loaded; see
[root@rac1 markbench]# 
遇到的問題
[root@rac1 markbench]# bzr branch lp:~percona-dev/perconatools/tpcc-mysql
bzr: ERROR: Couldn`t import bzrlib and dependencies.
Please check the directory containing bzrlib is on your PYTHONPATH.
Traceback (most recent call last):
  File “/usr/bin/bzr”, line 102, in
    import bzrlib
ImportError: No module named bzrlib  
python安裝環境,建議使用python2.6的版本,提示找不到 bzrlib 模組
解決方法:
[root@rac1 markbench]#   find / -name bzrlib -print 
/usr/lib64/python2.4/site-packages/bzrlib
[root@rac1 markbench]# export PYTHONPATH=/usr/lib64/python2.4/site-packages
再次下載ok.

二 編譯安裝
 進入原始碼目錄
 cd tpcc-mysql/src
 make
 [root@rac1 src]# make
cc -w -O2 -g -I. `mysql_config –include`  -c load.c
cc -w -O2 -g -I. `mysql_config –include`  -c support.c
cc load.o support.o `mysql_config –libs_r` -lrt -o ../tpcc_load
cc -w -O2 -g -I. `mysql_config –include`  -c main.c
cc -w -O2 -g -I. `mysql_config –include`  -c spt_proc.c
cc -w -O2 -g -I. `mysql_config –include`  -c driver.c
cc -w -O2 -g -I. `mysql_config –include`  -c sequence.c
cc -w -O2 -g -I. `mysql_config –include`  -c rthist.c
cc -w -O2 -g -I. `mysql_config –include`  -c neword.c
cc -w -O2 -g -I. `mysql_config –include`  -c payment.c
cc -w -O2 -g -I. `mysql_config –include`  -c ordstat.c
cc -w -O2 -g -I. `mysql_config –include`  -c delivery.c
cc -w -O2 -g -I. `mysql_config –include`  -c slev.c
cc main.o spt_proc.o driver.o support.o sequence.o rthist.o neword.o payment.o ordstat.o delivery.o slev.o `mysql_config –libs_r` -lrt -o ../tpcc_start
三 初始化測試庫環境
make命令會在tpcc-mysql目錄下生成 tpcc 命令列工具 tpcc_load ,tpcc_start
tpcc_load  提供初始化資料的功能
tpcc_start 進行壓力測試
用法: 
# ./tpcc_load –help 
tpcc_load [server] [DB] [user] [pass] [warehouse] 
server :    伺服器名 
DB     :    資料庫名 
user   :    使用者名稱 
pass   :    密碼 
warehouse: 倉庫的數量 

# ./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 
介紹一下各個引數的用法
-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 ,熱身是為了將資料載入到記憶體。
-l running_time:      測試時間,單位:s,預設為20s 
-i report_interval     指定生成報告間隔時長
-f report_file :       測試結果輸出檔案  
注意
 tpcc 預設會讀取/var/lib/mysql/mysql.sock 這個socket位置,如果你的測試環境的mysql socket不在相應路徑的話,就需要做個軟連線,或者通過TCP/IP的方式連線測試伺服器。

準備工作:          
  mysqladmin  -uroot -h127.0.0.1 create tpcc          # 建立測試用的資料庫
  mysql -uroot -h127.0.0.1  tpcc < create_table.sql   # 建立測試用的表 
  mysql -uroot -h127.0.0.1  tpcc < add_fkey_idx.sql   # 建立FK和索引
  1 建立五個資料倉儲
./tpcc_load  127.0.0.1 tpcc root “” 5 
*************************************
*** ###easy### TPC-C Data Loader  ***
*************************************
     [server]: 127.0.0.1
     [port]: 3306
     [DBname]: tpcc
       [user]: root
       [pass]: 
  [warehouse]: 5
TPCC Data Load Started…
Loading Item 
………………………………………….. 5000
………………………………………….. 10000
忽略部分輸出結果

四、進行測試
#使用tpcc_start 進行5個執行緒的測試,熱身時間為120秒, 測試時間為1小時 !
[root@rac1 tpcc-mysql]# tpcc_start  -hlocalhost  -d tpcc  -u root  -p “ -w 5  -c  5  -r 120   -l  300 -f tpcc_mysql_20130331.xls  
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value `localhost`
option d with value `tpcc`
option u with value `root`
option p with value “
option w with value `5`
option c with value `5`
option r with value `120`
option l with value `300`
option f with value `tpcc_mysql_20130331.xls`
     [server]: localhost
     [port]: 3306
     [DBname]: tpcc
       [user]: root
       [pass]: 
  [warehouse]: 5
 [connection]: 5
     [rampup]: 120 (sec.)
    [measure]: 300 (sec.)
RAMP-UP TIME.(120 sec.)
MEASURING START. —每隔10s 輸出一次結果
  10, 812(1):1.509|5.419, 814(0):0.447|1.575, 81(0):0.241|0.539, 82(0):2.270|2.824, 81(0):4.571|6.648
  ……
 290, 851(0):1.582|2.949, 849(0):0.441|0.630, 85(0):0.199|0.235, 86(0):1.937|2.000, 85(0):4.178|4.226
 300, 820(0):1.451|2.321, 822(0):0.443|0.718, 82(0):0.201|0.284, 81(0):1.922|2.972, 82(0):4.409|5.245
STOPPING THREADS…..
  [0] sc:25485  lt:1  rt:0  fl:0 
  [1] sc:25487  lt:0  rt:0  fl:0 
  [2] sc:2548  lt:0  rt:0  fl:0 
  [3] sc:2549  lt:0  rt:0  fl:0 
  [4] sc:2549  lt:0  rt:0  fl:0 
 in 300 sec.
  [0] sc:25485  lt:1  rt:0  fl:0 
  [1] sc:25487  lt:0  rt:0  fl:0 
  [2] sc:2548  lt:0  rt:0  fl:0 
  [3] sc:2549  lt:0  rt:0  fl:0 
  [4] sc:2549  lt:0  rt:0  fl:0 
(all must be [OK])
 [transaction percentage]
        Payment: 43.48% (>=43.0%) [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)]
      New-Order: 100.00%  [OK]
        Payment: 100.00%  [OK]
   Order-Status: 100.00%  [OK]
       Delivery: 100.00%  [OK]
    Stock-Level: 100.00%  [OK]

                 5097.200 TpmC


相關文章