澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

mysql安装测量试验与应用生成比较图,结果解读

1:下载tpcc-mysql的压缩包,从下面的网址举办下载

tpcc-mysql的工作逻辑及其有关的几个表作用如下:


New-Order:新订单,主要对应 new_orders 表
Payment:支付,主要对应 orders、history 表
Order-Status:订单状态,主要对应 orders、order_line 表
Delivery:发货,主要对应 order_line 表
Stock-Level:库存,主要对应 stock 表

其他相关表:
客户:主要对应 customer 表
地区:主要对应 district 表
商品:主要对应 item 表
仓库:主要对应 warehouse 表

也可一贯从叶总博客直接下载:

二、编写翻译安装mysql安装测量试验与应用生成比较图,结果解读。 
编写翻译非常轻巧,只必要二个 make 就能够。


cd /tmp/tpcc-mysql/src
make
如果 make 没有报错,就会在 /tmp/tpcc-mysql 下生成 tpcc 二进制命令行工具 tpcc_load 、 tpcc_start

生龙活虎、TPCC测验前策画

自家那边使用的正是继承者。

  1. Build binaries

    • cd scr ; make ( you should have mysql_config available in $PATH)
  2. Load data

    • create database mysqladmin create tpcc1000
    • create tables mysql tpcc1000 < create_table.sql
    • create indexes and FK ( this step can be done after loading data) mysql tpcc1000 < add_fkey_idx.sql
    • populate data
      • simple step tpcc_load -h127.0.0.1 -d tpcc1000 -u root -p "" -w 1000 |hostname:port| |dbname| |user| |password| |WAREHOUSES| ref. tpcc_load --help for all options
      • load data in parallel check load.sh script
  3. start benchmark

    • ./tpcc_start -h127.0.0.1 -P3306 -dtpcc1000 -uroot -w1000 -c32 -r10 -l10800
    • |hostname| |port| |dbname| |user| |WAREHOUSES| |CONNECTIONS| |WARMUP TIME| |BENCHMARK TIME|
    • ref. tpcc_start --help for all options

1、压测境况

配置 信息
主机 Dell PowerEdge R730xd
CPU 24xIntel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz
内存 64G(16G * 4)
RAID卡 LSI Logic MegaRAID SAS
系统 "Red Hat Enterprise Linux Server release 7.3 (Maipo)"
内核 "3.10.0-514.el7.x86_64"
raid级别 RAID1
文件系统 ext4
硬盘 7.2K RPM, 6000G SAS, 12G/s

2:安装tpcc-mysql

三、TPCC测验前盘算 
开首化测量试验库意况

mysql安装测量试验与应用生成比较图,结果解读。2、压测基准值

测试工具 tpcc-mysql
测试Warehouse数 1000
warmup time(秒) 120
run time(秒) 2700
并发线程数 8 - 256
压测次数 3
[root@mxqmongodb2 tpccmysql]# gunzip tpcc-mysql-src.tgz
[root@mxqmongodb2 tpccmysql]# tar xf tpcc-mysql-src.tar
[root@mxqmongodb2 tpcc-mysql-master]# cd src/
[root@mxqmongodb2 src]# make
[root@mxqmongodb2 src]# cd ..
[root@mxqmongodb2 tpcc-mysql-master]# ls
add_fkey_idx.sql count.sql create_table.sql Dockerfile drop_cons.sql load_multi_schema.sh load.sh README.md schema2 scripts src tpcc_load tpcc_start
cd /tmp/tpcc-mysql
mysqladmin create tpcc1000
mysql -f tpcc1000 < create_table.sql

my.cnf

# line V1.2
# mail:        
# data:         2017-10-26
# file_name:        my.cnf
# function:          无数据一致性要求,只要求update速度快

## optimized mysql configure file my.cnf
## 注意:建议参数可需要根据实际情况作调整
## 本配置文件主要适用于MySQL 5.7.18版本

# ********* 以下重要参数必须修改核对 *********
# 1.innodb_flush_log_at_trx_commit=2
# 2.sync_binlog = 0
# 3.innodb_strict_mode = OFF
# 4.innodb_flush_method = O_DIRECT
# 5.lower_case_table_names = 0
# 6.character-set-server = utf8
# 7.sql_mode 配置为空值
# 8.server-id =1 修改成对应数值
# 9.innodb_buffer_pool_size = 32G
# ********************************************
[client]
port    = 3306
socket  = /r2/soft/dbtest/mysql-5.7.18/mysqldata/mysql.sock
#=======================================================================
# # MySQL客户端配置
#=======================================================================
[mysql]
prompt="u@ipanel R:m:s [d]> "
#no-auto-rehash
#=======================================================================
# MySQL服务器全局配置
#=======================================================================
[mysqld]
user = mysql
port = 3306
server-id = 168
tmpdir = /r2/soft/dbtest/mysql-5.7.18/mysqldata
datadir = /r2/soft/dbtest/mysql-5.7.18/mysqldata
socket  = /r2/soft/dbtest/mysql-5.7.18/mysqldata/mysql.sock
wait_timeout = 31536000
#interactive_timeout = 600
sql_mode =
#sql_mode 配置为空值
skip_name_resolve = 1
lower_case_table_names = 0
character-set-server = utf8
#auto_increment_increment = 1
#auto_increment_offset = 1
# init_connect =
######################### 性能参数 ####################
open_files_limit = 1024000
max_connections = 10000
max_user_connections=9990
max_connect_errors = 100000
table_open_cache = 1024
max_allowed_packet = 128M
thread_cache_size = 64
max_heap_table_size = 32M
query_cache_type = 0
###global cache ###
key_buffer_size = 16M
query_cache_size = 0
###session cache ###
sort_buffer_size = 8M       #排序缓冲
join_buffer_size = 4M       #表连接缓冲
read_buffer_size = 8M       #顺序读缓冲
read_rnd_buffer_size = 8M   #随机读缓冲
tmp_table_size = 32M        #内存临时表
binlog_cache_size = 4M      #二进制日志缓冲
thread_stack = 256KB        #线程的堆栈的大小
######################### binlog设置 #####################
binlog_format = MIXED
log_bin = /r2/soft/dbtest/mysql-5.7.18/mysqldata/binlog
max_binlog_size = 1G
expire_logs_days = 30
sync_binlog = 0    #重要参数必须修改为0
######################### 复制设置 ########################
log_slave_updates=1
#replicate-do-db=User
#binlog-ignore-db = test
#slave-skip-errors=1146,1032,1062
### GTID 配置 ###
gtid_mode=ON
enforce-gtid-consistency=true
######################### innodb ##########################
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:1G:autoextend
innodb_buffer_pool_size = 32G  #系统内存50%
innodb_open_files = 1000000
innodb_flush_log_at_trx_commit = 2  #线上服务器必须配置为2
innodb_file_per_table = 1
innodb_lock_wait_timeout = 5
# 根据您的服务器IOPS能力适当调整innodb_io_capacity
# 一般配普通SSD盘的话,可以调整到 10000 - 20000
#innodb_io_capacity = 200
innodb_io_capacity = 600
innodb_io_capacity_max = 20000
innodb_flush_method = O_DIRECT
innodb_log_file_size = 2G
innodb_log_files_in_group = 2
innodb_large_prefix = 0
innodb_thread_concurrency = 64
innodb_strict_mode = OFF
innodb_sort_buffer_size = 4194304
######################### log 设置 #####################
log_error = /r2/soft/dbtest/mysql-5.7.18/mysqldata/error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /r2/soft/dbtest/mysql-5.7.18/mysqldata/slow.log
#=======================================================================
# MySQL mysqldump配置
#=======================================================================
[mysqldump]
quick
max_allowed_packet = 32M
#=======================================================================
# MySQL mysqld_safe配置
#=======================================================================
[mysqld_safe]
log_error = /r2/soft/dbtest/mysql-5.7.18/mysqldata/error.log
pid_file = /r2/soft/dbtest/mysql-5.7.18/mysqldata/mysqldb.pid

 

起先化完成后,就足以开端加载测量试验数据了

二、进行OLTP测试

咱俩看来,安装达成之后是会有 tpcc_load tpcc_start八个可推行文件的。基本桃月经安装到位了,上面看一下测量检验

tpcc_load用法如下:
tpcc_load [server] [DB] [user] [pass] [warehouse]
或者
tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]

1、安装压测工具TPCC

[root@localhost-m(252) /usr/local/soft/dbtest]# yum install bzr
[root@localhost-m(252) /usr/local/soft/dbtest]# bzr branch lp:~percona-dev/perconatools/tpcc-mysql
[root@localhost-m(252) /usr/local/soft/dbtest]# cd tpcc-mysql/src
[root@localhost-m(252) /usr/local/soft/dbtest]# make
[root@localhost-m(252) /usr/local/soft/dbtest/tpcc-mysql/src]# cd ..
[root@localhost-m(252) /usr/local/soft/dbtest/tpcc-mysql]# ll
total 308
-rw-r--r-- 1 root root   1918 11月  6 16:09 !
-rw-r--r-- 1 root root   1621 11月  6 15:22 add_fkey_idx.sql
-rw-r--r-- 1 root root    317 11月  6 10:00 count.sql
-rw-r--r-- 1 root root   3105 11月  6 10:00 create_table.sql
-rw-r--r-- 1 root root    763 11月  6 10:00 drop_cons.sql
-rwxr-xr-x 1 root root   1937 11月  6 16:55 go_test.sh
-rw-r--r-- 1 root root    477 11月  6 10:00 load.sh
drwxr-xr-x 2 root root   4096 11月  7 11:32 logs
lrwxrwxrwx 1 root root     49 11月  6 13:51 mysql.sock -> /r2/soft/dbtest/mysql-5.7.18/mysqldata/mysql.sock -- 注意 ln -s /var/lib/mysql/mysql.sock
-rw-r--r-- 1 root root    851 11月  6 10:00 README
drwxr-xr-x 2 root root   4096 11月  6 10:00 schema2
drwxr-xr-x 5 root root   4096 11月  6 10:00 scripts
drwxr-xr-x 2 root root   4096 11月  6 10:06 src
-rwxr-xr-x 1 root root  71840 11月  6 10:06 tpcc_load   --新生成
-rwxr-xr-x 1 root root 172864 11月  6 10:06 tpcc_start  --新生成

3:测量检验:上面是主导的装置,安装以往在开展测验,mysql版本.

接纳 warehouse 意为钦定测量试验库下的仓库数量。

2、TPCC 命令

先是安装到位现在就要做初叶化:

忠实地度量试场景中,仓库数日常不建议少于 100个,视服务器硬件配备而定,假若是布署了SSD或许PCIE SSD这种高IOPS设备的话,提议最少十分大于 1000个

tpcc_load的用法
[root@localhost-m(252) /usr/local/soft/dbtest/tpcc-mysql]# tpcc_load --help
*************************************
*** ###easy### TPC-C Data Loader  ***
*************************************

 usage: tpcc_load [server] [DB] [user] [pass] [warehouse]
      OR
        tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]

           * [part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS
  • 分选表明
    • Server: 服务器名
    • DB: 数据库名
    • user: 用户名
    • pass: 密码
    • Warehouse: 旅馆的数码
    • 命令 ./tpcc_load localhost tpcc1000 root "xxx" 1000
    • 在这处,需求注意的是 tpcc 默许会读取 /var/lib/mysql/mysql.sock 这一个socket地方,由此只要您的socket不在相应路线的话,就需求做个软连接,或然通过TCP/IP的章程连接测量试验服务器。加载测量试验数据时间长度视商旅数量而定。
mysql> create database tpcc1000;
Query OK, 1 row affected (0.04 sec)
mysql> use tpcc1000;
Database changed
mysql> source /home/tpccmysql/tpcc-mysql-master/create_table.sql;
mysql> source /home/tpccmysql/tpcc-mysql-master/add_fkey_idx.sql;

实践上边的指令,伊始灌入测量检验数据:

tpcc_start的用法
[root@localhost-m(252) /usr/local/soft/dbtest/tpcc-mysql]# tpcc_start --help
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
tpcc_start: invalid option -- '-'
Usage: 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 -freport_file -t trx_file
  • 选料表达
    • 命令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 钦点生成的告诉文本名

 

cd /tmp/tpcc-mysql
./tpcc_load localhost tpcc1000 tpcc_user "tpcc_password" 1000
Test 脚本
#!/bin/bash
# line:  V1.0
# mail:             gczheng@139.com
# data:             2017-11-06
# file_name:        go_tpcc_test.sh
# 执行tpcc mysql OLTP基准测试         



#export LD_LIBRARY_PATH=/usr/local/mysql/lib/ 

. ~/.bash_profile >/dev/null 2>&1


#执行tpcc测试的数据库IP
DBIP=localhost
DBUSER='gcdb'
DBPASS='iforgot'
#测试模式:1000个仓库
WIREHOUSE=1000
DBNAME="tpcc${WIREHOUSE}"
#数据预热时间:120秒
WARMUP=120
#执行测试时长:1小时
DURING=3600
#测试模式
MODE="SAS_JBOD_WB_nobarrier_deadline"

SOCK="/r2/soft/dbtest/mysql-5.7.18/mysqldata/mysql.sock"
BASEDIR="/r2/soft/dbtest/tpcc-mysql"
LOGSDIR=$BASEDIR/logs
cd $BASEDIR
if [ ! -d "$LOGSDIR" ]; then
  mkdir -p "$LOGSDIR"
fi
exec 3>&1 4>&2 1>> ./logs/tpcc-oltp-`date  '%Y-%m-%d-%H-%M-%S'`.log 2>&1


#初始化测试环境
if [ -z "`/r2/soft/dbtest/mysql-5.7.18/bin/mysqlshow -u$DBUSER -p$DBPASS -S $SOCK|grep -v grep|grep "$DBNAME"`" ] ; then
 mysqladmin  -u$DBUSER -p$DBPASS -S $SOCK  -f create $DBNAME
#/r2/soft/dbtest/mysql-5.7.18/bin/mysql -u$DBUSER -p$DBPASS  -S $SOCK -e "grant all on $DBNAME.* to $DBUSER@'$DBIP' identified by '$DBPASS';"
/r2/soft/dbtest/mysql-5.7.18/bin/mysql -u$DBUSER -p$DBPASS  -S $SOCK -f $DBNAME < ./create_table.sql
 ./tpcc_load $DBIP $DBNAME $DBUSER $DBPASS $WIREHOUSE 
/r2/soft/dbtest/mysql-5.7.18/bin/mysql -u$DBUSER -p$DBPASS  -S $SOCK -f $DBNAME < ./add_fkey_idx.sql
fi

CNT=0
CYCLE=2
while [ $CNT -lt $CYCLE ]
do
NOW=`date  '%Y%m%d%H%M'`
#测试并发线程:8 ~ 256
#for THREADS in 8 16 
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.res >> ./logs/tpcc_runlog_${MODE}_${NOW}_${THREADS}_THREADS 2>&1

#重启mysqld
#/r2/soft/dbtest/mysql-5.7.18/bin/mysqladmin -u$DBUSER -p$DBPASS  -S $SOCK  shutdown;
echo 3 > /proc/sys/vm/drop_caches ; 
#/r2/soft/dbtest/mysql-5.7.18/bin/mysqld_safe --defaults-file=/r2/soft/dbtest/mysql-5.7.18/my.cnf & ;
sleep 60
done 
#sleep 60
CNT=`expr $CNT   1`
done
  • 生成16个表,1000仓库,数据 索引(69.2G)

图片 1

  • 实行压测,八种线程格局(8,16,32,64,128,256),一遍循环共19次压测
[root@localhost-m(252) /r2/soft/dbtest/tpcc-mysql]# sh -x  go_tpcc_test.sh
[root@localhost-m(252) /r2/soft/dbtest/tpcc-mysql/logs]# ll
total 16860
-rw-r--r-- 1 root root 3107118 11月  7 13:08 tpcc-oltp-2017-11-06-16-56-15.log
-rw-r--r-- 1 root root      85 11月  7 15:51 tpcc-oltp-2017-11-07-15-51-00.log
-rw-r--r-- 1 root root   36143 11月  7 07:31 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_128_THREADS
-rw-r--r-- 1 root root   29271 11月  7 05:07 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_16_THREADS
-rw-r--r-- 1 root root   98716 11月  7 08:19 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_256_THREADS
-rw-r--r-- 1 root root   29319 11月  7 05:55 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_32_THREADS
-rw-r--r-- 1 root root   31856 11月  7 06:43 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_64_THREADS
-rw-r--r-- 1 root root   29064 11月  7 04:18 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070331_8_THREADS
-rw-r--r-- 1 root root   34624 11月  7 12:19 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_128_THREADS
-rw-r--r-- 1 root root   29019 11月  7 09:55 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_16_THREADS
-rw-r--r-- 1 root root  105813 11月  7 13:07 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_256_THREADS
-rw-r--r-- 1 root root   29132 11月  7 10:43 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_32_THREADS
-rw-r--r-- 1 root root   31754 11月  7 11:31 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_64_THREADS
-rw-r--r-- 1 root root   28969 11月  7 09:07 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711070820_8_THREADS
-rw-r--r-- 1 root root   46474 11月  7 21:05 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_128_THREADS
-rw-r--r-- 1 root root   38292 11月  7 17:56 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_16_THREADS
-rw-r--r-- 1 root root  110579 11月  7 22:08 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_256_THREADS
-rw-r--r-- 1 root root   39176 11月  7 18:59 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_32_THREADS
-rw-r--r-- 1 root root   44458 11月  7 20:02 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_64_THREADS
-rw-r--r-- 1 root root   38386 11月  7 16:53 tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_8_THREADS

下一场伊始往数据库当中追加数据:

在这里边,须要专一的是 tpcc 暗中同意会读取 /var/lib/mysql/mysql.sock 那些socket 文件。 
进而,尽管您的 socket 文件不在相应路线的话,能够做个软连接,或然通过TCP/IP的艺术连接测量试验服务器,譬如:

三、TPCC测验结果解读

  • 以下是拾四回义务中的叁遍结果解读
[root@localhost-m(252) /r2/soft/dbtest/tpcc-mysql/logs]# cat tpcc_runlog_SAS_JBOD_WB_nobarrier_deadline_201711071551_64_THREADS
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value 'localhost'     --主机名
option d with value 'tpcc1000'      --数据库名
option u with value 'gcdb'          --账号
option p with value 'iforgot'       --密码
option w with value '1000'          --仓库数量
option c with value '64'            --线程数
option r with value '120'           --数据预热时长(秒)
option l with value '3600'          --压测时长(秒)
option f with value './logs/tpcc_SAS_JBOD_WB_nobarrier_deadline_201711071551_64_THREADS.res'        --日志输出
<Parameters>
     [server]: localhost
     [port]: 3306
     [DBname]: tpcc1000
       [user]: gcdb
       [pass]: iforgot
  [warehouse]: 1000
 [connection]: 64
     [rampup]: 120 (sec.)
    [measure]: 3600 (sec.)

RAMP-UP TIME.(120 sec.)
delivery 26:2
1205, HY000, Lock wait timeout exceeded; try restarting transaction

MEASURING START.  -- 预热结束,开始进行压测

  10, 291(0):3.347|3.976, 296(0):0.700|0.799, 29(0):0.302|0.323, 43(0):3.493|3.942, 30(0):9.011|9.744  -- 每10秒钟输出一次压测数据
......
......
......
3590, 333(0):2.976|3.626, 334(0):0.694|0.758, 34(0):0.304|0.375, 36(0):3.604|3.701, 33(0):6.798|8.263
3600, 333(0):2.935|3.214, 348(0):0.658|0.758, 36(0):0.295|0.318, 57(0):3.100|3.402, 34(0):7.030|7.314
-- 以逗号分隔,共6列
-- 第一列,第N次10秒
-- 第二列,新订单成功执行压测的次数(推迟执行压测的次数):90%事务的响应时间|本轮测试最大响应时间,新订单事务数也被认为是总有效事务数的指标
-- 第三列,支付业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
-- 第四列,订单状态业务的结果,后面几个的意义同上
-- 第五列,物流发货业务的结果,后面几个的意义同上
-- 第六列,库存仓储业务的结果,后面几个的意义同上

STOPPING THREADS................................................................  -- 结束压测

<Raw Results>                                 -- 第一次统计结果
  [0] sc:67227  lt:0  rt:1  fl:0              -- New-Order,新订单业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数
  [1] sc:67236  lt:0  rt:4  fl:0              -- Payment,支付业务统计,其他同上
  [2] sc:6726  lt:0  rt:0  fl:0               -- Order-Status,订单状态业务统计,其他同上
  [3] sc:6753  lt:0  rt:72  fl:0              -- Delivery,发货业务统计,其他同上
  [4] sc:6725  lt:0  rt:0  fl:0               -- Stock-Level,库存业务统计,其他同上
 in 3600 sec.                                 -- 一个小时内(3600s)

<Raw Results2(sum ver.)>                      -- 第二次统计结果,其他同上
  [0] sc:67227  lt:0  rt:1  fl:0
  [1] sc:67247  lt:0  rt:4  fl:0
  [2] sc:6726  lt:0  rt:0  fl:0
  [3] sc:6753  lt:0  rt:72  fl:0
  [4] sc:6725  lt:0  rt:0  fl:0

<Constraint Check> (all must be [OK])       -- 下面所有业务逻辑结果都必须为 OK 才行
 [transaction percentage]
        Payment: 43.47% (>=43.0%) [OK]      -- 支付成功次数(上述统计结果中 sc   lt)必须大于43.0%,否则结果为NG,而不是OK
   Order-Status: 4.35% (>= 4.0%) [OK]       -- 订单状态,其他同上
       Delivery: 4.37% (>= 4.0%) [OK]       -- 发货,其他同上
    Stock-Level: 4.35% (>= 4.0%) [OK]       -- 库存,其他同上
 [response time (at least 90% passed)]      -- 响应耗时指标必须超过90%通过才行
      New-Order: 100.00%  [OK]              -- 下面几个响应耗时指标全部 100% 通过
        Payment: 100.00%  [OK]
   Order-Status: 100.00%  [OK]
       Delivery: 100.00%  [OK]
    Stock-Level: 100.00%  [OK]

<TpmC>
                 1120.450 TpmC              -- TpmC结果值(每分钟事务数,该值是第一次统计结果中的新订单事务数除以总耗时分钟数,即:67227/60=1120.450)
[root@localhost-m(252) /r2/soft/dbtest/tpcc-mysql/logs]# 

在这里边,要求留意的是 tpcc 默许会读取 /var/lib/mysql/mysql.sock 这一个socket 文件。因而,假设你的 socket 文件不在相应路线的话,能够做个软连接,或许通过TCP/IP的情势连接测量检验服务器。真实地衡量试场景中,旅舍数常常不提出少于九十九个,视服务器硬件配备而定。

cd /tmp/tpcc-mysql
./tpcc_load 1.2.3.4:3306 tpcc1000 tpcc_user "tpcc_password" 1000

四、关于测量试验进度中MySQL各类意况

时间隔离 2017-11-07 15:30:00 to 2017-11-07 22:30:00

实行下边包车型客车吩咐,开首灌入测量检验数据:(本身的是虚拟机,货仓数就弄了30,省得压死了)

加载测量检验数据时间长度视饭店数量而定,若进度非常久供给稍加耐烦等待。

1、Disk io 状态

图片 2

图片 3

[root@mxqmongodb2 tpcc-mysql-master]# ./tpcc_load -h10.103.16.35 -P3306 -d tpcc1000 -u root -p 123456 30

四、进行TPCC测试 
tpcc_start 工具用于tpcc压测,其用法如下:

2、CPU和内部存款和储蓄器使用状态

图片 4

上边就要起来测量试验了,看一下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

3、innodb使用状态

图片 5

-w 钦点商旅数量 -c 钦点并发连接数 -r 钦点开首测验前开展warmup的年月,举行预热后,测量试验效果更加好 -l 内定测量试验持续时间 -i 钦命生成报告间距时间长度 -f 钦点生成的报告文本名

几个选项稍微解释下

4、增加和删除改查总计

图片 6

看一下增派:

-w 指定仓库数量
-c 指定并发连接数
-r 指定开始测试前进行warmup的时间,进行预热后,测试效果更好
-l 指定测试持续时间
-i  指定生成报告间隔时长
-f 指定生成的报告文件名

五、关于测量检验结果和提议

[root@mxqmongodb2 tpcc-mysql-master]# ./tpcc_start --help
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
./tpcc_start: invalid option -- '-'
Usage: 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 -t trx_file

当今大家来张开一个测验案例:

1、总结一遍巡回压测结果并画图

图片 7

横轴为==线程数==,竖轴为==每分钟事务数==

  • 大器晚成体压测实行3次,线程数从8~256,表十七个,1000库房数,数据量69G;从地点几张状态图可以看来看16:08开首已经冒出io使用率百分之百而且io出现延迟景况,到17:02时CPU出现io等待,已经得以分明io出现瓶颈

  • 是因为IO出现瓶颈,TPCC并发线程到达==64==个之后==每分钟事务数==趋于稳定1390左右

 

tpcc_start -hlocalhost -d tpcc1000 -u tpcc_user -p "tpcc_password" 
 -w 1000 -c 32 -r 120 -l 3600 
 -f tpcc_mysql_20140921.log >> tpcc_caseX_20140921.log 2>&1

2、建议

  • 提出用/r2目录所在磁盘(RAID1 SAS 7.2K 3.5 12G/s 6T) 举行磁盘升级

  • 眼下瓶颈在io上边,内部存款和储蓄器和cpu都满是须求,把日志分开保存有效应用io

接下来径直开端测量试验:

即:模拟 1000个饭馆规模,并发 16个线程实行测验,热身时间为 60秒, 压测时间为 1钟头。

./tpcc_start -h10.103.16.35 -P3306 -dtpcc1000 -uroot -p123456 -w30 -c50 -r300 -l600

真实地衡量试场景中,建议预热时间非常大于 5分钟,持续压测时间长度不低于 30分钟,不然测验数据也许不具参照他事他说加以考察意义。

 

五、TPCC测验结果解读:

实在测量试验场景中,建议预热时间非常大于5秒钟,持续压测时间长度不低于30分钟,不然测验数据只怕不具参照他事他说加以考察意义(我们预热1分钟,压测10秒钟),下边看一下结出:

发起测量试验:

[root@mxqmongodb2 tpcc-mysql]# ./tpcc_start -h127.0.0.1 -P3306 -d tpcc -u root -p123456 -w 10 -c 50 -r 30 -l 300
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '127.0.0.1'
option P with value '3306'
option d with value 'tpcc'
option u with value 'root'
option p with value '123456'
option w with value '10'
option c with value '50'
option r with value '30'
option l with value '300'
<Parameters>
[server]: 127.0.0.1
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]: 123456
[warehouse]: 10
[connection]: 50
[rampup]: 30 (sec.)
[measure]: 300 (sec.)

RAMP-UP TIME.(30 sec.)

MEASURING START.

10, 140(0):3.055|3.476, 141(0):0.693|0.975, 14(0):0.326|0.334, 11(0):3.550|3.593, 15(0):9.091|9.119
20, 240(0):3.092|3.143, 242(0):0.668|0.730, 24(0):0.320|0.356, 26(0):3.533|3.596, 23(0):8.280|8.480
30, 232(0):2.981|3.110, 233(0):0.680|1.052, 23(0):0.329|0.360, 24(0):3.591|3.596, 23(0):9.042|9.407
40, 137(0):3.148|3.968, 136(0):0.658|0.713, 14(0):0.329|0.353, 13(0):3.677|3.682, 15(0):8.660|9.289
50, 149(0):2.984|3.334, 145(0):0.662|0.665, 14(0):0.310|0.334, 14(0):3.572|3.687, 13(0):9.155|9.497
60, 137(0):2.863|3.152, 142(0):0.674|0.689, 15(0):0.247|0.262, 14(0):3.308|3.548, 15(0):8.362|9.236
70, 157(0):3.144|3.410, 152(0):0.619|0.681, 15(0):0.339|0.414, 16(0):3.546|3.610, 16(0):8.440|9.627
80, 184(0):3.073|3.221, 182(0):0.678|0.707, 18(0):0.352|0.352, 18(0):3.693|3.766, 19(0):8.643|9.020
90, 192(0):3.035|3.668, 196(0):0.658|0.793, 20(0):0.298|0.400, 19(0):3.572|4.125, 18(0):8.267|9.535
100, 156(0):3.041|3.301, 153(0):0.647|0.679, 15(0):0.276|0.279, 16(0):3.436|3.497, 17(0):8.379|8.510
110, 167(0):2.900|3.178, 168(0):0.663|0.674, 17(0):0.294|0.297, 16(0):3.517|3.625, 16(0):8.262|8.626
120, 188(0):3.094|3.217, 190(0):0.638|0.740, 19(0):0.276|0.288, 20(0):3.472|3.697, 19(0):8.589|8.891
130, 161(0):3.295|3.617, 163(0):0.668|0.717, 16(0):0.346|0.393, 15(0):3.421|3.730, 16(0):9.250|10.387
140, 171(0):2.938|3.343, 168(0):0.683|0.714, 17(0):0.312|0.321, 18(0):3.471|3.513, 18(0):8.190|8.602
150, 179(0):3.029|3.250, 178(0):0.694|0.813, 18(0):0.329|0.331, 16(0):3.571|3.623, 16(0):8.097|8.610
160, 123(0):2.938|3.333, 119(0):0.606|0.621, 12(0):0.278|0.293, 13(0):3.497|3.506, 13(0):8.327|8.454
170, 175(0):3.130|3.595, 179(0):0.666|0.778, 17(0):0.274|0.277, 18(0):3.638|4.027, 18(0):8.762|9.156
180, 187(0):3.146|3.427, 187(0):0.704|0.743, 20(0):0.312|0.322, 19(0):3.562|3.593, 18(0):8.282|9.524
190, 146(0):2.926|3.112, 143(0):0.641|0.701, 14(0):0.301|0.339, 14(0):3.475|3.592, 15(0):7.896|8.596
200, 189(0):3.028|3.277, 200(0):0.661|0.730, 19(0):0.300|0.319, 20(0):3.550|3.595, 20(0):8.361|8.659
210, 191(0):2.910|3.196, 184(0):0.618|0.720, 19(0):0.324|0.329, 17(0):3.448|3.463, 18(0):8.372|8.558
220, 143(0):3.057|3.116, 162(0):0.655|0.691, 15(0):0.259|0.355, 15(0):3.519|3.547, 14(0):8.816|8.893
230, 189(0):2.930|3.057, 169(0):0.630|0.682, 18(0):0.331|0.349, 19(0):3.575|3.864, 19(0):8.359|8.391
240, 131(0):2.958|3.035, 130(0):0.643|0.681, 14(0):0.273|0.326, 12(0):3.490|3.520, 13(0):8.671|9.160
250, 125(0):2.939|3.237, 124(0):0.659|0.707, 12(0):0.301|0.367, 12(0):3.464|3.527, 13(0):8.643|8.774
260, 127(0):2.895|2.983, 131(0):0.669|0.704, 13(0):0.328|0.360, 16(0):3.468|3.665, 12(0):8.433|8.562
270, 177(0):2.962|3.375, 174(0):0.686|0.722, 17(0):0.302|0.364, 16(0):3.548|3.629, 18(0):8.309|8.354
280, 139(0):2.874|3.047, 142(0):0.675|0.935, 15(0):0.280|0.294, 16(0):3.483|3.628, 14(0):8.154|8.730
290, 163(0):3.132|3.213, 162(0):0.636|0.663, 15(0):0.282|0.313, 15(0):3.654|3.925, 17(0):8.172|8.245
300, 147(0):3.024|3.230, 142(0):0.692|1.405, 16(0):0.265|0.300, 15(0):3.452|3.475, 14(0):8.518|9.214

STOPPING THREADS..................................................

<Raw Results> -- 第一次统计结果
[0] sc:4942 lt:0 rt:0 fl:0 -- New-Order,新订单业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数
[1] sc:4937 lt:0 rt:0 fl:0 -- Payment,支付业务统计
[2] sc:495 lt:0 rt:0 fl:0 -- Order-Status,订单状态业务统计
[3] sc:493 lt:0 rt:0 fl:0 -- Delivery,发货业务统计
[4] sc:495 lt:0 rt:0 fl:0 -- Stock-Level,库存业务统计
in 300 sec.

<Raw Results2(sum ver.)> -- 第二次统计结果
[0] sc:4944 lt:0 rt:0 fl:0
[1] sc:4940 lt:0 rt:0 fl:0
[2] sc:495 lt:0 rt:0 fl:0
[3] sc:493 lt:0 rt:0 fl:0
[4] sc:495 lt:0 rt:0 fl:0

<Constraint Check> (all must be [OK]) -- 下面所有业务逻辑结果都必须为 OK 才行
[transaction percentage]
Payment: 43.45% (>=43.0%) [OK]
Order-Status: 4.36% (>= 4.0%) [OK]
Delivery: 4.34% (>= 4.0%) [OK]
Stock-Level: 4.36% (>= 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>
988.400 TpmC-- TpmC结果值(每分钟事务数,该值是第一次统计结果中的新订单事务数除以总耗时分钟数)
./tpcc_start -h 1.2.3.4 -P 3306 -d tpcc10 -u tpcc -p tpcc 
 -w 10 -c 64 -r 30 -l 120 
 -f tpcclog_201409211538_64_THREADS.log >> tpcc_noaid_2_20140921_64.log 2>&1

 

测验结果输出如下:

4:总括结果深入分析

-- 本轮tpcc压测的一些基本信息
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '1.2.3.4'   -- 主机
option P with value '3306'             -- 端口
option d with value 'tpcc10'         -- 数据库
option u with value 'tpcc'             -- 账号
option p with value 'tpcc'             -- 密码
option w with value '10'                 -- 仓库数
option c with value '64'                 -- 并发线程数
option r with value '30'                 -- 数据预热时长
option l with value '120'               -- 压测时长
option f with value 'tpcclog_20140921_64_THREADS.res'  -- 输出报告日志文件

     [server]: 1.2.3.4
     [port]: 3306
     [DBname]: tpcc10
       [user]: tpcc
       [pass]: tpcc
  [warehouse]: 10
 [connection]: 64
     [rampup]: 30 (sec.)
    [measure]: 120 (sec.)

RAMP-UP TIME.(30 sec.)

-- 预热结束,开始进行压测
MEASURING START.

-- 每10秒钟输出一次压测数据
  10, 8376(0):2.744|3.211, 8374(0):0.523|1.626, 838(0):0.250|0.305, 837(0):3.241|3.518, 839(0):9.086|10.676
  20, 8294(0):2.175|2.327, 8292(0):0.420|0.495, 829(0):0.206|0.243, 827(0):2.489|2.593, 827(0):7.214|7.646
…
 110, 8800(0):2.149|2.458, 8792(0):0.424|0.710, 879(0):0.207|0.244, 878(0):2.461|2.556, 878(0):7.042|7.341
 120, 8819(0):2.147|2.327, 8820(0):0.424|0.568, 882(0):0.208|0.237, 881(0):2.483|2.561, 883(0):7.025|7.405
-- 以逗号分隔,共6列
-- 第一列,第N次10秒
-- 第二列,总成功执行压测的次数(总推迟执行压测的次数):90%事务的响应时间|本轮测试最大响应时间
-- 第三列,新订单业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
-- 第四列,支付业务的结果,后面几个的意义同上
-- 第五列,发货业务的结果,后面几个的意义同上
-- 第六列,库存业务的结果,后面几个的意义同上

-- 压测结束
STOPPING THREADS................................................................

   -- 第一次粗略结果统计
  [0] sc:100589  lt:0  rt:0  fl:0    -- New-Order,新订单业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数
  [1] sc:100552  lt:0  rt:0  fl:0    -- Payment,支付业务统计,其他同上
  [2] sc:10059  lt:0  rt:0  fl:0    -- Order-Status,订单状态业务统计,其他同上
  [3] sc:10057  lt:0  rt:0  fl:0    -- Delivery,发货业务统计,其他同上
  [4] sc:10058  lt:0  rt:0  fl:0    -- Stock-Level,库存业务统计,其他同上
 in 120 sec.

    -- 第二次粗略统计结果,其他同上
  [0] sc:100590  lt:0  rt:0  fl:0 
  [1] sc:100582  lt:0  rt:0  fl:0 
  [2] sc:10059  lt:0  rt:0  fl:0 
  [3] sc:10057  lt:0  rt:0  fl:0 
  [4] sc:10059  lt:0  rt:0  fl:0 

 (all must be [OK])       -- 下面所有业务逻辑结果都必须为 OK 才行
 [transaction percentage]
        Payment: 43.47% (>=43.0%) [OK]      -- 支付成功次数(上述统计结果中 sc   lt)必须大于43.0%,否则结果为NG,而不是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)]      -- 响应耗时指标必须超过90%通过才行
      New-Order: 100.00%  [OK]              -- 下面几个响应耗时指标全部 100% 通过
        Payment: 100.00%  [OK]
   Order-Status: 100.00%  [OK]
       Delivery: 100.00%  [OK]
    Stock-Level: 100.00%  [OK]


                 50294.500 TpmC                      -- TpmC结果值

我们看一下温馨的INNODB配置:

script目录下的一些脚本首即便日新月异对性质数据征采以至剖判的,能够自行检索下怎么用

mysql> show variables like 'innodb_buffer_pool_size';
 ------------------------- ------------ 
| Variable_name | Value |
 ------------------------- ------------ 
| innodb_buffer_pool_size | 2147483648 |
 ------------------------- ------------ 
1 row in set (0.17 sec)

 

大大小小是2048M,我们先天把innodb_buffer_pool_size 为2048修改为128,而且保留两个的压测的数额,重定向到二个文件:

[root@mxqmongodb2 tpcc-mysql]# ./tpcc_start -h127.0.0.1 -P3306 -d tpcc -u root -p123456 -w 10 -c 50 -r 10 -l 120 >/home/sa/tpcc_output_2048.log

 

修改innodb_buffer_pool_size:

mysql> set global innodb_buffer_pool_size=134217728;
Query OK, 0 rows affected (0.05 sec)
mysql> show variables like 'innodb_buffer_pool_size';
 ------------------------- ------------ 
| Variable_name | Value |
 ------------------------- ------------ 
| innodb_buffer_pool_size | 134217728|
 ------------------------- ------------ 
1 row in set (0.01 sec)
[root@mxqmongodb2 tpcc-mysql]# ./tpcc_start -h127.0.0.1 -P3306 -d tpcc -u root -p123456 -w 10 -c 50 -r 10 -l 1200 >/home/sa/tpcc_output_128.log

 

下一场将四个文本实行管理

[root@mxqmongodb2 sa]# cat tpcc_output_128.log | grep '(0)' | grep -v HY000 | grep -v payment | grep -v neword | awk -F ':' '{print $1}' |awk -F ',' '{print $1 $2}'|sed 's/(0)//g'|sed 's/(1)//g'>tpcc_output_1128.txt
[root@mxqmongodb2 sa]# cat tpcc_output_2048.log | grep '(0)' | grep -v HY000 | grep -v payment | grep -v neword | awk -F ':' '{print $1}' |awk -F ',' '{print $1 $2}'|sed 's/(0)//g'|sed 's/(1)//g'>tpcc_output_2048.txt

 

联合八个公文:

[root@mxqmongodb2 sa]# paste tpcc_output_128.txt tpcc_output_2048.txt > tpcc-graph-data128.txt
[root@mxqmongodb2 sa]# ./tpcc-graph-build.sh tpcc-graph-data128.txt tpcc-graph128-2048.jpg

 

下一场将tpcc-graph.jpg拷贝出来,看一下实效如下:

图片 8

上边看一下tpcc-graph-build脚本:

#!/bin/bash
### goto user homedir and remove previous file
rm -f '$2'
gnuplot << EOP
### set data source file
datafile = '$1'
### set graph type and size
set terminal jpeg size 640,480
### set titles
set grid x y
set xlabel "Time (sec)"
set ylabel "Transactions"
### set output filename
set output '$2'
### build graph
# plot datafile with lines
plot datafile title "PS 5.7, buffer pool: 128M" with lines,datafile using 3:4 title "PS 5.7, buffer pool: 2048M" with lines axes x1y1
EOP

 

本文由澳门新浦京娱乐场网站发布于数据库,转载请注明出处:mysql安装测量试验与应用生成比较图,结果解读