基准测试工具之tpcc-mysql

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


我来评几句
登录后评论

已发表评论数()

相关站点

热门文章