基准测试工具Sysbench

1、sysbench安装

centos7 安装

1

2

# curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash

sudo yum -y install sysbench

$whereis sysbench

安装的目录:/usr/share/sysbench

[root@mongo-svr8 cg]# whereis sysbench

sysbench: /usr/bin/sysbench /usr/share/sysbench

2、sysbench创建表和数据

2.1给数据库mytest247创建两张表插入1w条数据

sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=10.1.1.247 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=mytest247 --db-driver=mysql --tables=2 --table-size=10000 --report-interval=10 --threads=12 --time=120 prepare

 

2.2、创建1张sbtest1插入300w条数据

$ sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=10.1.1.247 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=mytest247 --db-driver=mysql --tables=1 --table-size=3000000 --report-interval=10 --threads=12 --time=120 prepare

 

[root@mongo-svr8 cg]# sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=10.1.1.247 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=mytest247 --db-driver=mysql --tables=1 --table-size=3000000 --report-interval=10 --threads=12 --time=120 prepare

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

 

Initializing worker threads...

 

Creating table 'sbtest1'...

Inserting 3000000 records into 'sbtest1'

Creating a secondary index on 'sbtest1'...

2.3、压测

 

Sysbench压测MySQL流程:prepare(准备数据) -> run(运行测试) -> cleanup(清理数据)

以oltp_read_only.lua为例压测MySQL:

$ sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=10.1.1.247 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=mytest247 --db-driver=mysql --tables=1 --table-size=3000000 --report-interval=10 --threads=12 --time=120 run

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

 

Running the test with following options:

Number of threads: 12

Report intermediate results every 10 second(s)

Initializing random number generator from current time

 

 

Initializing worker threads...

 

Threads started!

 

[ 10s ] thds: 12 tps: 260.77 qps: 4179.13 (r/w/o: 3656.59/0.00/522.54) lat (ms,95%): 84.47 err/s: 0.00 reconn/s: 0.00

[ 20s ] thds: 12 tps: 286.61 qps: 4592.81 (r/w/o: 4019.38/0.00/573.43) lat (ms,95%): 68.05 err/s: 0.00 reconn/s: 0.00

[ 30s ] thds: 12 tps: 307.70 qps: 4921.62 (r/w/o: 4306.42/0.00/615.20) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00

[ 40s ] thds: 12 tps: 289.11 qps: 4624.23 (r/w/o: 4045.91/0.00/578.32) lat (ms,95%): 71.83 err/s: 0.00 reconn/s: 0.00

[ 50s ] thds: 12 tps: 276.84 qps: 4429.17 (r/w/o: 3875.50/0.00/553.67) lat (ms,95%): 77.19 err/s: 0.00 reconn/s: 0.00

[ 60s ] thds: 12 tps: 276.46 qps: 4423.11 (r/w/o: 3870.30/0.00/552.81) lat (ms,95%): 78.60 err/s: 0.00 reconn/s: 0.00

[ 70s ] thds: 12 tps: 282.41 qps: 4515.53 (r/w/o: 3950.51/0.00/565.02) lat (ms,95%): 75.82 err/s: 0.00 reconn/s: 0.00

[ 80s ] thds: 12 tps: 275.99 qps: 4418.97 (r/w/o: 3867.08/0.00/551.88) lat (ms,95%): 81.48 err/s: 0.00 reconn/s: 0.00

[ 90s ] thds: 12 tps: 288.10 qps: 4607.99 (r/w/o: 4031.79/0.00/576.20) lat (ms,95%): 77.19 err/s: 0.00 reconn/s: 0.00

[ 100s ] thds: 12 tps: 276.30 qps: 4424.02 (r/w/o: 3871.41/0.00/552.60) lat (ms,95%): 86.00 err/s: 0.00 reconn/s: 0.00

[ 110s ] thds: 12 tps: 281.70 qps: 4506.18 (r/w/o: 3942.68/0.00/563.50) lat (ms,95%): 74.46 err/s: 0.00 reconn/s: 0.00

[ 120s ] thds: 12 tps: 282.00 qps: 4509.49 (r/w/o: 3945.69/0.00/563.80) lat (ms,95%): 75.82 err/s: 0.00 reconn/s: 0.00

SQL statistics:

    queries performed:

        read:                            473942  /总select数量

        write:                           0  //总update、insert、delete语句数量;

        other:                           67706  //commit、unlock tables以及其他mutex的数量;

        total:                           541648

    transactions:                        33853  (281.99 per sec.) //TPS;

    queries:                             541648 (4511.83 per sec.) //QPS;

    ignored errors:                      0      (0.00 per sec.) //忽略的错误数;

    reconnects:                          0      (0.00 per sec.)

 

General statistics:

    total time:                          120.0463s /即time指定的压测实际;

    total number of events:              33853 //总的事件数,一般与transactions相同;

 

Latency (ms):

         min:                                   10.88 //最小响应时间;

         avg:                                   42.54 //平均响应时间;

         max:                                  234.67 //最大响应时间;

         95th percentile:                       75.82 //95%的语句的平均响应时间;

         sum:                              1440119.80  //总响应时间;

 

Threads fairness:

    events (avg/stddev):           2821.0833/61.41

    execution time (avg/stddev):   120.0100/0.01

我们一般关注的指标主要有:

response time avg:平均响应时间(后面的95%的大小可以通过–percentile=98的方式去更改)。

transactions:精确的说是这一项后面的TPS,但如果使用了–skip-trx=on,这项事务数为0,需要用total number of events去除以总时间,得到tps(其实还可以分为读tps和写tps)。

queries:用它除以总时间,得到吞吐量QPS。

当然还有一些系统层面的cpu,io,memory相关指标。

2.4、清洗数据

$ sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=10.1.1.247 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=mytest247 --db-driver=mysql --tables=1 --table-size=3000000 --report-interval=10 --threads=12 --time=120 cleanup

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

 

Dropping table 'sbtest1'...


参考:https://www.jianshu.com/p/4a37a6a452d9

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐