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 privatedata. See "bzr help launchpad-login". Branched 48 revision(s). bzr: warning: some compiled extensions could not be loaded; see <https://answers.launchpad.net/bzr/+faq/703> [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 yourPYTHONPATH. Traceback (most recent call last): File "/usr/bin/bzr", line 102, in <module> 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]# exportPYTHONPATH=/usr/lib64/python2.4/site-packages |
再次下載ok.
二 編譯安裝
進入源碼目錄
cdtpcc-mysql/src !!!!make之前一定要修改src下面makefile的mysql_config make [root@rac1src]#make cc-w-O2-g-I.`mysql_config--include`-cload.c cc-w-O2-g-I.`mysql_config--include`-csupport.c ccload.osupport.o`mysql_config--libs_r`-lrt-o../tpcc_load cc-w-O2-g-I.`mysql_config--include`-cmain.c cc-w-O2-g-I.`mysql_config--include`-cspt_proc.c cc-w-O2-g-I.`mysql_config--include`-cdriver.c cc-w-O2-g-I.`mysql_config--include`-csequence.c cc-w-O2-g-I.`mysql_config--include`-crthist.c cc-w-O2-g-I.`mysql_config--include`-cneword.c cc-w-O2-g-I.`mysql_config--include`-cpayment.c cc-w-O2-g-I.`mysql_config--include`-cordstat.c cc-w-O2-g-I.`mysql_config--include`-cdelivery.c cc-w-O2-g-I.`mysql_config--include`-cslev.c ccmain.ospt_proc.odriver.osupport.osequence.orthist.oneword.opayment.oordstat.odelivery.oslev.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 *** ************************************* <Parameters> [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' <Parameters> [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..... <Raw Results> [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. <Raw Results2(sum ver.)> [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 <Constraint Check> (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] <TpmC> 5097.200 TpmC |