• [MySQL]-压力测试之Sysbench


    [MySQL]-压力测试之Sysbench


    森格 | 2022年12月

    本文是对压力测试工具sysbench从部署、测试以压测结果的个人总结。


    一、Sysbench概况

    1)介绍

    在前一篇文章中对TPCC这款工具做了介绍,它的主要压测有特定的场景,而本文介绍的Sysbench是一款基于LuaJIT的,模块化多线程基准测试工具,常用于数据库基准测试。

    2)安装部署

    如果想多了解一下Sysbench的细节的话,这里是Sysbench的GitHub的地址:

    https://github.com/akopytov/sysbench

    下面一起来进行安装部署

    curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
    sudo yum -y install sysbench
    sysbench --version
    
    • 1
    • 2
    • 3

    二、实战


    1)构造测试数据

    mysql>create database loadtest;
    
    hostname>sysbench --db-driver=mysql --mysql-db=loadtest --report-interval=10 --mysql-user=xxxxxx --mysql-password=xxxxx --mysql-port=3306 --mysql-host=127.0.0.1 --tables=64 --table-size=10000000 --threads=20 oltp_read_write prepare
    
    • 1
    • 2
    • 3
    • –db-driver=mysql:基于MySQL的驱动连接数据库。

    • –time=300:连续访问300s。

    • –threads=10:用10个线程模拟并发访问。

    • –report-interval=10:每隔一秒输出压测情况。

    • –mysql-host=127.0.0.1 --mysqlport=3306 --mysql-user=test_user --mysql-password=test_user:哪个机器、哪个端口、用户名和密码是多少?

    • –mysql-db=test_db --tables=20 --table_size=1000000:在哪个数据库中,构造多少测试表,每个测试表中构造多少测试数据?

    • 测试模式:

      • prepare & run:准备输据 & 开始压测
      • oltp_read_only:测试只读性能
      • oltp_read_write:测试综合读写性能
      • oltp_delete:测试删除性能
      • oltp_update_index:测试更新索引字段性能
      • oltp_update_non_index:测试更新非索引字段性能
      • oltp_insert:测试插入性能
      • oltp_write_only:测试写入性能

    2)开始运行


    在这里插入图片描述

    压测结果解读

    在这里插入图片描述

    • thds:10个线程在压测。
    • tps:每秒执行9059.99个事务。
    • qps:每秒执行9859.88个请求,(r/w/o:这些请求中读/写/其他请求分别的多少)。
    • lat(ms,95%):95%的请求的延迟都在4.65ms以下,0个错误请求,0次网络重连。
    最终结果

    在这里插入图片描述

    SQL statistics:
        queries performed:
            read:                            591808 //300s的压测期间执行了59万多次的读请求
            write:                           169088 //压测期间执行了16万多次的写请求
            other:                           84544  //压测期间执行了8万多次的其他请求
            total:                           845440 //一共执行了84万多次的请求
        
        // 这是说一共执行了4万多个的事务,每秒执行140+事务
        transactions:                        42272  (140.87 per sec.)
        // 这是说一共执行了84万多次的请求,每秒执行2817+请求
        queries:                             845440 (2817.31 per sec.)
        ignored errors:                      0      (0.00 per sec.)
        reconnects:                          0      (0.00 per sec.)
    // 一共执行了300s的压测,执行了4万+的事务
    General statistics:
        total time:                          300.0854s
        total number of events:              42272
    
    Latency (ms):
             min:                                   10.18  // 请求中延迟最小的是10.18ms
             avg:                                  141.96  // 所有请求平均延迟是141.96ms
             max:                                 2200.01  // 延迟最大的请求是2200.01ms
             95th percentile:                      292.60  // 95%的请求延迟都在292.60ms以内
             sum:                              6000792.76  // 总共请求为6000792.76ms
    
    Threads fairness:
        events (avg/stddev):           2113.6000/16.31
        execution time (avg/stddev):   300.0396/0.03
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    三、总结


    介绍了压测工具Sysbench,如何生成测试表和数据,几种不同的测试模式:oltp_/read_write/read_only/delete/update_index/update_non_index/insert,以及对每秒测试报告、总测试报告的分析。

  • 相关阅读:
    SDP最佳实践丨为汽车品牌 L 铸造「数字化营销+管控」
    纯CSS自定义滚动条样式
    Unity中Shader抓取屏幕并实现扭曲效果
    【限时免费】20天拿下华为OD笔试之【不定滑窗】2023Q1A-完美走位【欧弟算法】全网注释最详细分类最全的华为OD真题题解
    Vue插值语法、指令语法、单向绑定、双向绑定(详细解释)
    LabVIEW Modbus通讯稳定性提升
    Java高级编程----集合
    【无标题】
    笔试强训Day5
    腾讯云轻量应用服务器内网连接互通有什么限制?
  • 原文地址:https://blog.csdn.net/liangsena/article/details/128151041