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
|
转载请注明:爱开源 » 基准测试工具之tpcc-mysql