zoukankan      html  css  js  c++  java
  • mysql 压力测试(sysbench-阿里使用)

     mysql 压力测试

     

    sysbench一、测试工具:

     

    sysbench支持的测试模式:

    1、CPU运算性能 2、磁盘IO性能 3、调度程序性能 4、内存分配及传输速度 5、POSIX线程性能 6、数据库性能(OLTP基准测试) 目前sysbench主要支持 mysql,drizzle,pgsql,oracle 等几种数据库。

     

    二、编译安装sysbench

    http://imysql.com/wp-content/uploads/2014/09/sysbench-0.4.12-1.1.tgz下载链接:

    [root@test package]# tar  zxvf sysbench-0.4.12-1.1.tgz

    [root@test sysbench-0.4.12-1.1]# ./autogen.sh

    [root@test sysbench-0.4.12-1.1]# ./configure

    [root@test sysbench-0.4.12-1.1]# make

    [root@test sysbench-0.4.12-1.1]# make install

    三、OLTP测试环境

    初始化测试库环境,对已经准备好的数据库进行操作

    首先需要在准备好的数据库中创建一个名为,sbtest的库,不可更改必须叫这个名字,能看得懂lua脚本可以随意更改,这个是个大前提

     

    1、需要切到这个目录下进行操作,如果不切目录也可以使用绝对路径,oltp.lua脚本路径

    [root@test db]# cd /data/package/sysbench-0.4.12-1.1/sysbench/tests/db

     

    2、在sbtest库中,创建10个测试表,每个测试表中100000条记录(行),填充随机生成的数据

    [root@test db]# sysbench  --mysql-host=192.168.4.100    --mysql-user=admin  --mysql-password=FJRUDKEISLWO    --test=oltp.lua   --oltp_tables_count=10  --oltp-table-size=100000  --rand-init=on  prepare

    参数解释:

        --test=tests/db/oltp.lua 表示调用 ./tsysbench-0.4.12-1.1/sysbench/tests/db/oltp.lua 脚本进行 oltp模式测试    --oltp_tables_count=10 表示会生成 10 个测试表    --oltp-table-size=100000 表示每个测试表填充数据量为 100000    --rand-init=on 表示每个测试表都是用随机数据来填充的 

     

    他人经验:

           真实测试场景中,数据表建议不低于10,单表数据量不低于500万行,当然了,要视服务器硬件配置而定。如果是配备了SSD或者PCIE SSD这种高IOPS设备的话,则建议单表数据量最少不低于1亿行

     

    四、进行OLTP测试

     

    [root@test db]# sysbench  --mysql-host=10.10.95.235    --mysql-user=admin  --mysql-password=FJRUDKEISLWO    --test=oltp.lua   --oltp_tables_count=10  --oltp-table-size=10000000   --num-threads=10  --oltp-read-only=off --report-interval=10  --rand-type=uniform  --max-time=120 --max-requests=0  --percentile=99 run >/data/log/sysbench.log

    参数解释:

       --num-threads=8        # 表示发起 8个并发连接      --oltp-read-only=off  #表示不要进行只读测试,也就是会采用读写混合模式测试      --report-interval=10   #表示每10秒输出一次测试进度报告      --rand-type=uniform  #表示随机类型为固定模式,其他几个可选随机模式:uniform(  定),gaussian(高斯),special(特定的),pareto(帕累托)     --max-time=120           #表示最大执行时长为 120     --max-requests=0       #表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长     --percentile=99          #表示设定采样比例,默认是 95%,即丢弃1%的长请求,在剩余的99%里取最大值

     

    他人经验:

        真实测试场景中,建议持续压测时长不小于30分钟,否则测试数据可能不具参考意义。

     

    五、测试结果解读

        

    sysbench 0.5:  multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 8 Report intermediate results every 10 second(s) Random number generator seed is 0 and will be ignored Threads started! -- 10秒钟报告一次测试结果,tps、每秒读、每秒写、99%以上的响应时长统计 [  10s] threads: 8, tps: 1111.51, reads/s: 15568.42, writes/s: 4446.13, response time: 9.95ms (99%) [  20s] threads: 8, tps: 1121.90, reads/s: 15709.62, writes/s: 4487.80, response time: 9.78ms (99%) [  30s] threads: 8, tps: 1120.00, reads/s: 15679.10, writes/s: 4480.20, response time: 9.84ms (99%) [  40s] threads: 8, tps: 1114.20, reads/s: 15599.39, writes/s: 4456.30, response time: 9.90ms (99%) [  50s] threads: 8, tps: 1114.00, reads/s: 15593.60, writes/s: 4456.70, response time: 9.84ms (99%) [  60s] threads: 8, tps: 1119.30, reads/s: 15671.60, writes/s: 4476.50, response time: 9.99ms (99%) OLTP test statistics:    queries performed:        read:                            938224    -- 读总数        write:                            268064    -- 写总数        other:                           134032    -- 其他操作总数(SELECTINSERTUPDATEDELETE之外的操作,例如COMMIT)        total:                           1340320    -- 全部总数    transactions:                        67016  (1116.83 per sec.)     -- 总事务数(每秒事务数)    deadlocks:                           0      (0.00 per sec.)                -- 发生死锁总数    read/write requests:                 1206288 (20103.01 per sec.)    -- 读写总数(每秒读写次数)    other operations:                      134032 (2233.67 per sec.)    -- 其他操作总数(每秒其他操作次数) General statistics:    -- 一些统计结果    total time:                                   60.0053s    -- 总耗时    total number of events:              67016    -- 共发生多少事务数    total time taken by event execution: 479.8171s    -- 所有事务耗时相加(不考虑并行因素)    response time:    -- 响应时长统计         min:                                  4.27ms    -- 最小耗时         avg:                                  7.16ms    -- 平均耗时         max:                                 13.80ms    -- 最长耗时         approx.  99 percentile:               9.88ms    -- 超过99%平均耗时 Threads fairness:    events (avg/stddev):           8377.0000/44.33    execution time (avg/stddev):   59.9771/0.00

     

    最重要的参数指标:

    总的事物数,每秒事务数,时间统计信息(最大、最小、平均、99%以上语句响应时间)

     

     

    上述测试方式是在云RDS(UDB),数据库实例验证的,我测试的时候是采用了迅达云和ucloud云进行的对比性测试,更容易拿出数据。

     

    在测试环境,也就是自建的数据库,会发生各种情况,只能依靠个人排查能力了。

    sysbench  --mysql-host=10.10.95.235    --mysql-user=admin  --mysql-password=FJRUDKEISLWO    --test=oltp.lua   --oltp_tables_count=10  --oltp-table-size=100000  --rand-init=on  prepare

     

     

    sysbench  --mysql-host=10.10.95.235    --mysql-user=admin  --mysql-password=FJRUDKEISLWO    --test=oltp.lua   --oltp_tables_count=10  --oltp-table-size=10000000   --num-threads=10  --oltp-read-only=off --report-interval=10  --rand-type=uniform  --max-time=120 --max-requests=0  --percentile=99 run >/data/log/sysbench.log

    博主github地址:https://github.com/bazingafraser/cv 本文章为Bazingafraser作者原创,转载请注明出处,违权必究:http://www.cnblogs.com/bazingafraser/
  • 相关阅读:
    我爱Java系列之---【SpringBoot打成war包部署】
    279. Perfect Squares
    矩阵dfs--走回路
    112. Path Sum
    542. 01 Matrix
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    Invert Binary Tree
    563 Binary Tree Tilt
    145 Binary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/bazingafraser/p/8483477.html
Copyright © 2011-2022 走看看