benchyou-基本MySQL线上业务的DML压力测试软件


gitlab仓库地址:
gitlab:https://github.com/xelabs/benchyou.git 


Linux系统环境:
[root@node221 ~]# uname -a
Linux node221 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@node221 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
 


GO语言环境配置:(略)
go 语言版本:
[root@node221 ~]# go version
go version go1.15.5 linux/amd64




benchyou
benchyou is a benchmark tool for MySQL, similar Sysbench.
In addition to real-time monitoring TPS, she also monitors vmstat/iostat via SSH tunnel.
The idea of stat per operation is inspired by Mark Callaghan, Small Datum

Screenshots
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[1s]        [r:4,w:128,u:4,d:4]  33508    24056  9452    0      0.00    0      0.00      0.00    0.00      0.00    0.00    0.00    0      0        5.05      0.39        33508
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[2s]        [r:4,w:128,u:4,d:4]  29929    21287  8642    0      0.00    0      0.00      0.00    0.00      0.00    0.00    0.00    0      0        6.12      0.45        63437
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[3s]        [r:4,w:128,u:4,d:4]  27967    20215  7752    0      0.00    2472  0.09      0.00    0.00      25.57  0.94    6.22    6185    4570      6.51      0.51        91404
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[4s]        [r:4,w:128,u:4,d:4]  30072    21560  8512    0      0.00    2235  0.07      0.00    0.00      23.55  0.80    5.60    6174    4577      5.74      0.45        121476
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[5s]        [r:4,w:128,u:4,d:4]  32182    23609  8573    0      0.00    2810  0.09      0.00    0.00      29.55  0.94    5.91    6165    4584      5.45      0.46        153658
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[6s]        [r:4,w:128,u:4,d:4]  34548    24771  9777    0      0.00    2823  0.08      0.00    0.00      29.28  0.87    5.80    6156    4590      5.14      0.40        188206
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[7s]        [r:4,w:128,u:4,d:4]  35185    24844  10341  0      0.00    2553  0.07      0.00    0.00      26.40  0.77    5.74    6145    4596      5.20      0.38        223391
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[8s]        [r:4,w:128,u:4,d:4]  36266    26030  10236  0      0.00    2880  0.08      0.00    0.00      29.84  0.84    5.86    6137    4603      4.95      0.38        259657
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[9s]        [r:4,w:128,u:4,d:4]  37414    26834  10580  0      0.00    3234  0.09      0.00    0.00      34.07  0.93    6.06    6125    4611      4.81      0.37        297071
time            thds              tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op  freeMB  cacheMB  w-rsp(ms)  r-rsp(ms)    total-number
[10s]        [r:4,w:128,u:4,d:4]  36158    25845  10313  0      0.00    3329  0.09      0.00    0.00      35.53  1.01    6.43    6113    4619      4.98      0.38        333229
----------------------------------------------------------------------------------------------avg---------------------------------------------------------------------------------------------
time          tps    wtps    rtps    rio    rio/op  wio    wio/op    rMB    rKB/op    wMB    wKB/op  cpu/op            w-rsp(ms)                      r-rsp(ms)              total-number
[10s]        33642    24132  9509    0      0.00    332    0.00      0.00    0.00      3.55    0.01    0.07    [avg:0.53,min:0.00,max:149.79]  [avg:0.04,min:0.00,max:27.63]      336420


the columns:
time:        benchmark uptime
thds:        read threads and write(insert/update/delete) threads
tps:          transaction per second, including write and read
wtps:        write tps
rtps:        read tps
rio:          read io numbers per second
rio/op:      rio per operation
wio:          write io numbers per second
wio/op:      wio per operation
rMB:          amount data read from the device(megabytes) per second
rKB/op:      rKB per operation
wMB:          amount data written to the device(megabytes) per second
wKB/op:      wKB per operation
cpu/op:      CPU usecs per operation, measured by vmstat
freeMB:      the amount of idle memory(megabytes)
cacheMB:      the amount of memory(megabytes) used as cache
w-rsp:        the response time of one write operation,  in millisecond
r-rsp:        the response time of one read  operation,  in millisecond
total-number: the total number events


Build
$cd /usr/local/
$git clone https://github.com/xelabs/benchyou
$cd benchyou
$make build


add profile files env:
cat /etc/profile
export PATH=$PATH:/usr/local/benchyou/bin
source /etc/profile

$./bin/benchyou -h
Usage
$ ./bin/benchyou -h
Usage:
  benchyou [command]

Available Commands:
  prepare
  cleanup
  random
  seq
  range

Flags:
      --read-threads int            number of read threads to use(Default 32) (default 32)
      --write-threads int          number of write threads to use(Default 32) (default 32)
      --update-threads int          number of update threads to use(Default 0)
      --delete-threads int          number of delete threads to use(Default 0)
      --max-request uint            limit for total requests, including write and read(Default 0, means no limits)
      --max-time int                limit for total execution time in seconds(Default 3600) (default 3600)
      --mysql-db string            MySQL database name(Default sbtest) (default "sbtest")
      --mysql-enable-xa int        enable MySQL xa transaction for insertion {0|1} (Default 0)
      --mysql-host string          MySQL server host(Default NULL)
      --mysql-password string      MySQL password(Default benchyou) (default "benchyou")
      --mysql-port int              MySQL server port(Default 3306) (default 3306)
      --mysql-range-order string    range query sort the result-set in {ASC|DESC} (Default ASC) (default "ASC")
      --mysql-table-engine string  storage engine to use for the test table {tokudb,innodb,...}(Default innodb) (default "innodb")
      --mysql-user string          MySQL user(Default benchyou) (default "benchyou")
      --oltp-tables-count int      number of tables to create(Default 8) (default 8)
      --rows-per-insert int        #rows per insert(Default 1) (default 1)
      --batch-per-commit int        #rows per transaction(Default 1) (default 1)
      --ssh-host string            SSH server host(Default NULL, same as mysql-host)
      --ssh-password string        SSH server password(Default benchyou) (default "benchyou")
      --ssh-port int                SSH server port(Default 22) (default 22)
      --ssh-user string            SSH server user(Default benchyou) (default "benchyou")

Mysql Operation Build step:
mysql> create database sbtest default character set  utf8;
mysql> grant all privileges on sbtest.* to 'benchyou'@'%' identified by 'Benchyou123.'

Examples
prepare 64 tables:        #创建64个表测试表的表结构
benchyou --mysql-host=172.16.1.221 --mysql-user=benchyou --mysql-password=Benchyou123.  --mysql-host=127.0.0.1 --oltp-tables-count=64 prepare

cleanup 64 tables:        #删除64个表的表结构
benchyou --mysql-host=172.16.1.221 --mysql-user=benchyou --mysql-password=Benchyou123.  --mysql-host=127.0.0.1 --oltp-tables-count=64 cleanup

random insert(Write/Read Ratio=128:8):        #随机插入
benchyou --mysql-host=172.16.1.221 --mysql-user=benchyou --mysql-password=Benchyou123. --mysql-host=127.0.0.1 --oltp-tables-count=64 --write-threads=128 --read-threads=8 --max-time=3600 random

sequential insert(Write/Read Ratio=128:8):   #顺序插入
benchyou --mysql-host=172.16.1.221 --mysql-user=benchyou --mysql-password=Benchyou123. --mysql-host=127.0.0.1 --oltp-tables-count=64 --write-threads=128 --read-threads=8 --max-time=3600 seq

mix(Write/Read/Update/Delete Ratio=4:4:4:4): #以固定的DML速率插入
benchyou --mysql-host=172.16.1.221 --mysql-user=benchyou --mysql-password=Benchyou123. --mysql-host=127.0.0.1 --oltp-tables-count=64 --write-threads=4 --read-threads=4 --update-threads=4 --delete-threads=4 --max-time=3600 random

insert multiple rows(10 rows per insert):        #一次性插入多行数据
benchyou --mysql-host=172.16.1.221 --mysql-user=benchyou --mysql-password=Benchyou123. --mysql-host=127.0.0.1 --oltp-tables-count=64 --write-threads=4 --rows-per-insert=10 --max-time=3600 random

batch update(10 rows per transaction):        #一次性更新多行数据
benchyou --mysql-host=172.16.1.221 --mysql-user=benchyou --mysql-password=Benchyou123. --mysql-host=127.0.0.1 --oltp-tables-count=64 --update-threads=4 --batch-per-commit=10 --max-time=3600 random

query-range(Write/Read Ratio=128:8):        #通过范围排序
benchyou --mysql-host=172.16.1.221 --mysql-user=benchyou --mysql-password=Benchyou123. --mysql-host=127.0.0.1 --oltp-tables-count=64 --write-threads=128 --read-threads=8 --max-time=3600 --mysql-range-order=DESC range

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS