Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tpcc mysql使用手册 - 20120329

709 views

Published on

Tpcc mysql使用手册

Published in: Technology
  • Be the first to comment

Tpcc mysql使用手册 - 20120329

  1. 1. TPCC-MySQL 使用手册 2012 年 3 月 14 日 10:48 一、 下载工具包 Tpcc-mysql 是 percona 基于 tpcc 衍生出来的产品,专用于 mysql 基准测试,其源码放在 bazaar(Bazaar 是一个分布式的版本控制系统,采用 GPL 许可协议,可运行于 Windows、 GNU/Linux、UNIX 以及 Mac OS 系统之上。Bazaar 由 Canonical 公司(Ubuntu 母公司)赞 助)上,因此还需要先安装 bazaar 客户端。 使用 root 安装 rpm 包 rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm 然后就可以开始安装 bzr 客户端了: yum install bzr 之后,就可以开始用 bzr 客户端下载 tpcc-mysql 源码了。 cd tmp bzr branch lp:~percona-dev/perconatools/tpcc-mysql 二、编译安装 编译非常简单 cd /tmp/tpcc-mysql/src make 然后就会在 /tmp/tpcc-mysql 下生成 tpcc 命令行工具 tpcc_load 、 tpcc_start 三、开始加载测试数据 初始化测试库环境 cd /tmp/tpcc-mysql mysqladmin create tpcc1000 mysql tpcc1000 < create_table.sql mysql tpcc1000 < add_fkey_idx.sql
  2. 2. 初始化完毕后,就可以开始加载测试数据了 tpcc_load 用法 tpcc_load [server] [DB] [user] [pass] [warehouse] 或者 tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh] 选项 warehouse 意为指定测试库下的仓库数量。 因此,启动命令非常简单 ./tpcc_load localhost tpcc1000 root "" 1000 在这里,需要注意的是 tpcc 默认会读取 /var/lib/mysql/mysql.sock 这个 socket 位置,因此如 果你的 socket 不在相应路径的话,就需要做个软连接,或者通过 TCP/IP 的方式连接测试服务 器。 加载测试数据时长视仓库数量而定,可能会比较久。 四、进行测试 tpcc_start 的用法也比较简单 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 几个选项稍微解释下 -w 指定仓库数量 -c 指定并发连接数 -r 指定开始测试前进行 warmup 的时间,进行预热后,测试效果更好 -l 指定测试持续时间 -I 指定生成报告间隔时长 -f 指定生成的报告文件名 现在我们来开启一个测试案例 tpcc_start -hlocalhost -d tpcc1000 -u root -p '' -w 1000 -c 32 -r 120 -l 3600 -ftpcc_mysql_20120314 #使用 tpcc_start 进行 16 个线程的测试,热身时间为 60 秒, 测试时间为 10 分钟, 可根据自己需 要调整 测试结果解读 time ./tpcc_start -h localhost -d tpcc1000 -u root -p '' -w 1000 -c 32 -r 120 -l 3600 -f tpcc_mysql_20120314 *************************************** *** ###easy### TPC-C Load Generator *** *************************************** option h with value 'localhost'
  3. 3. option d with value 'tpcc1000' option u with value 'root' option p with value '' option w with value '1000' option c with value '32' option r with value '120' option l with value '3600' option f with value 'tpcc_mysql_20120314' <Parameters> [server]: localhost [port]: 3306 [DBname]: tpcc1000 [user]: root [pass]: [warehouse]: 1000 [connection]: 32 [rampup]: 120 (sec.) [measure]: 3600 (sec.) RAMP-UP TIME.(120 sec.) MEASURING START. 10, 197(0):1.804|2.188, 205(0):0.435|0.574, 19(0):0.270|0.315, 19(0):1.941|2.253, 19(0):5.906|6.555 20, 198(0):1.664|1.852, 188(0):0.407|0.440, 20(0):0.209|0.210, 20(0):1.873|1.913, 21(0):5.443|5.498 …... 3600, 308(0):1.876|1.994, 312(0):0.452|0.581, 32(0):0.296|0.309, 30(0):1.924|2.093, 29(0):5.724|5.965 STOPPING THREADS................................ <Raw Results> [0] sc:93257 lt:0 rt:0 fl:0 [1] sc:93265 lt:0 rt:0 fl:0 [2] sc:9326 lt:0 rt:0 fl:0 [3] sc:9324 lt:0 rt:0 fl:0 [4] sc:9323 lt:0 rt:0 fl:0 in 3600 sec. <Raw Results2(sum ver.)>
  4. 4. [0] sc:93257 lt:0 rt:0 fl:0 [1] sc:93268 lt:0 rt:0 fl:0 [2] sc:9326 lt:0 rt:0 fl:0 [3] sc:9324 lt:0 rt:0 fl:0 [4] sc:9323 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> ---- TPCC 测试结果 1554.283 TpmC real 62m1.975s user 1m21.824s sys 1m44.828s 五、附录: 1. tpcc-mysql 自动化测试脚本 #!/bin/bash #export LD_LIBRARY_PATH=/usr/local/mysql/lib/ . ~/.bash_profile >/dev/null 2>&1 set -u set -x set -e BASEDIR="/home/tpcc-mysql" cd $BASEDIR mkdir -p $BASEDIR/logs
  5. 5. exec 3>&1 4>&2 1>> tpcc.log 2>&1 #执行 tpcc 测试的数据库 IP DBIP=10.25.42.33 DBUSER='tpcc' DBPASS='tpcc' #测试模式:1000 个仓库 WIREHOUSE=100 #DBNAME="tpcc${WIREHOUSE}" DBNAME=tpcc #数据预热时间:120 秒 WARMUP=120 #执行测试时长:1 小时 DURING=3600 #测试模式 MODE="ndb_9dn_100dw_memtab" #初始化测试环境 if [ -z "`mysqlshow -h$DBIP -u$DBUSER -p$DBPASS|grep -v grep|grep "$DBNAME"`" ] ; then mysqladmin -h$DBIP -u$DBUSER -p$DBPASS -f create $DBNAME mysql -h$DBIP -u$DBUSER -p$DBPASS -e "grant all on $DBNAME.* to $DBUSER@'$DBIP' identified by '$DBPASS';" mysql -h$DBIP -u$DBUSER -p$DBPASS -f $DBNAME < ./create_table.sql ./tpcc_load $DBIP $DBNAME $DBUSER $DBPASS $WIREHOUSE fi CYCLE=0 TOTAL=3 NOW=`date +'%Y%m%d%H%M'` while [ $CYCLE -lt $TOTAL ] do #测试并发线程:8 ~ 256 for THREADS in 8 16 32 64 128 256 do #开始执行 tpcc 测试 ./tpcc_start -h $DBIP -d $DBNAME -u $DBUSER -p "${DBPASS}" -w $WIREHOUSE -c $THREADS -r $WARMUP -l $DURING -f ./logs/tpcc_${MODE}_${NOW}_${THREADS}_THREADS_${CYCLE}.res >> ./lo gs/tpcc_runlog_${MODE}_${NOW}_${THREADS}_THREADS_${CYCLE} 2>&1 #重启 mysqld #/etc/init.d/mysql stop; echo 3 > /proc/sys/vm/drop_caches; /etc/init.d/mysql start; sleep 60 done
  6. 6. CYCLE=`expr $CYCLE + 1` done

×