qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

基准测试工具之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


posted on 2013-09-13 11:36 顺其自然EVO 阅读(1752) 评论(0)  编辑  收藏 所属分类: 数据库


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年9月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜