• 6.sysbench安装


    1.sysbench

      sysbench是percon公司开发的一款软件,主要是针对系统和数据库压测是项目上线前必做的一项,这里使用的是最新版本的sysbench做的压测使用详解。sysbench可以做系统层面的压力测试(CPU、内存、硬盘IO、互斥锁、Thead),也可以做数据库(MySQL/Oracle/PG)层面的压力测试。安装容易,操作便捷,是压测使用的重要工具之一

    2.安装sysbench(这里是基于二进制mysql包的安装,这里我的二进制mysql目录是安装在/application/mysql 目录下)

      这里是直接从github上面进行下载

      git clone https://github.com/akopytov/sysbench.git

      

      下载完毕后然后再进行编译安装

      ./autogen.sh         ---》执行这个命令生成configure文件 ,在生成configure文件之前这个命令会检查一下依赖包是否完整 

      编译之前这里可能需要先要提前安装一些依赖包

      yum -y install automake

      yum -y install libtool        ----》缺少什么依赖包就要补啥依赖包

      总体要安装的包:yum -y install autoconf automake mysql-devel libtool openssl-devel

        ./configure --prefix=/usr/local/sysbench --with-mysql=/application/mysql --with-mysql-includes=/application/mysql/include/  --with-mysql-libs=/application/mysql/lib         ----》这一步很重要,如果后面什么都不加的话会默认安装的

      make && make install

    3.简单使用

      sysbench 0.5版本或之前版本

    -----准备阶段
    sysbench --db-driver=mysql --mysql-user=root --mysql-password='123' --mysql-socket=/data/mysql/3307/mysql.sock --mysql-db=foo --range_size=100 --table_size=10000 --tables=2 --threads=1 --events=0 --time=60 --rand-type=uniform /usr/local/sysbench/share/sysbench/oltp_read_write.lua perpare
    -------测试阶段 sysbench
    --db-driver=mysql --mysql-user=root --mysql-password='123' --mysql-socket=/data/mysql/3307/mysql.sock --mysql-db=foo --range_size=100 --table_size=10000 --tables=2 --threads=1 --events=0 --time=60 --rand-type=uniform /usr/local/sysbench/share/sysbench/oltp_read_write.lua run

    -------清除阶段
     sysbench --db-driver=mysql --mysql-user=root --mysql-password='123' 
      --mysql-socket=/data/mysql/3307/mysql.sock --mysql-db=foo --range_size=100 
      --table_size=10000 --tables=2 --threads=1 --events=0 --time=60 
      --rand-type=uniform /usr/local/sysbench/share/sysbench/oltp_read_write.lua cleanup
     

    4.sysbench 测磁盘io(sysbench 1.0版本之后)

    sysbench fileio --file-num=20 --threads=20  --file-total-size=20G --events=1000000 --file-test-mode=rndrw prepare
    sysbench fileio --file-num=20 --threads=20  --file-total-size=20G --events=1000000 --file-test-mode=rndrw run
    sysbench fileio --file-num=20 --threads=20  --file-total-size=20G --events=1000000 --file-test-mode=rndrw cleanup

    这里我对比了一下我的虚拟机(一个处理器内核,1G的内存)读性能为85MB/s 写性能为55MB/s ,而我的阿里云(单核1G内存)读性能23MB/s 写性能为15MB/s

    5.测试cpu

    常用参数:
    --cpu-max-prime: 素数生成数量的上限
    - 若设置为3,则表示2、35(这样要计算1-5共5次)
    - 若设置为10,则表示2、357111317192329(这样要计算1-29共29次)
    - 默认值为10000
    
    --threads: 线程数
    - 若设置为1,则sysbench仅启动1个线程进行素数的计算
    - 若设置为2,则sysbench会启动2个线程,同时分别进行素数的计算
    - 默认值为1
    
    --time: 运行时长,单位秒
    - 若设置为5,则sysbench会在5秒内循环往复进行素数计算,
      从输出结果可以看到在5秒内完成了几次,
      比如配合--cpu-max-prime=3,则表示第一轮算得3个素数,
      如果时间还有剩就再进行一轮素数计算,直到时间耗尽。
      每完成一轮就叫一个event
    - 默认值为10
    - 相同时间,比较的是谁完成的event多
    
    --events: event上限次数
    - 若设置为100,则表示当完成100次event后,即使时间还有剩,也停止运行
    - 默认值为0,则表示不限event次数
    - 相同event次数,比较的是谁用时更少

    案例分析:

    # 素数上限2万,默认10秒,2个线程
    sysbench cpu --cpu-max-prime=20000 --threads=2 run

    结果:

    [root@node01 tmp]# sysbench cpu --cpu-max-prime=20000 --threads=2 run
    sysbench 1.1.0-bbee5d5 (using bundled LuaJIT 2.1.0-beta3)
    
    Running the test with following options:
    Number of threads: 2   //指定线程个数
    Initializing random number generator from current time
    
    
    Prime numbers limit: 20000   //每个线程产生的素数上限均为2万个
    
    Initializing worker threads...
    
    Threads started!
    
    CPU speed:
        events per second:   446.69   //所有线程每秒完成了446.69次event
    
    Throughput:
        events/s (eps):                      446.6855
        time elapsed:                        10.0026s  //共耗时10秒
        total number of events:              4468     //在10秒内共完成了4468次event
    
    Latency (ms):
             min:                                    2.09   //完成1次event最少耗时2.09ms
             avg:                                    4.44   //完成所有events平均耗时4.44ms
             max:                                   24.57   //完成1次event最大耗时24.57毫秒
             95th percentile:                       13.22   //95%的events完成都在13.22ms完成
             sum:                                19842.20   //每个线程耗时10ms,2个线程总共耗时20ms
    
    Threads fairness:
        events (avg/stddev):           2234.0000/0.00  //平均每完成2234次event,标准差是0.00
        execution time (avg/stddev):   9.9211/0.02     //每个线程平均耗时10秒,标准差为0.02


    event:表示完成了几轮素数计算
    stddev:标准差,在相同时间内,多个线程分别完成素数计算次数是否稳定,如果数值越低,那么多个线程的结果就越接近(即越稳定),该线程对单线程无意义。

    分析:

    如果有2台服务器进行CPU性能对比,当素数上限和线程数一致时:
    
    相同时间,比较event
    相同event,比较时间
    时间和event都相同,比较stddev(标准差)

    6.测oltp

    sysbench --db-driver=mysql    --mysql-user=root --mysql-password=123 --mysql-socket=/data/mysql/3307/mysql.sock --threads=20 --mysql-db=foo --table_size=10000  --tables=2    oltp_read_write.lua  prepare  //这个是准备数据


    .......run //运行
    .......clearup //清理数据


    结果分析:

    Threads started!
    
    SQL statistics:
        queries performed:
            read:                            27356
            write:                           7816
            other:                           3908
            total:                           39080
        transactions:                        1954   (193.55 per sec.) //每秒处理的事务数TPS
        queries:                             39080  (3870.99 per sec.) //每秒请求的次数QPS
        ignored errors:                      0      (0.00 per sec.)
        reconnects:                          0      (0.00 per sec.)
    
    Throughput:
        events/s (eps):                      193.5497
        time elapsed:                        10.0956s
        total number of events:              1954
    
    Latency (ms):
             min:                                    5.20
             avg:                                  102.95
             max:                                  496.24
             95th percentile:                      137.35
             sum:                               201163.87
    
    Threads fairness:
        events (avg/stddev):           97.7000/2.15
        execution time (avg/stddev):   10.0582/0.02
  • 相关阅读:
    uoj207 共价大爷游长沙 子树信息 LCT + 随机化 + 路径覆盖
    bzoj4542 [Hnoi2016]大数 莫队+同余
    bzoj2959: 长跑 LCT+并查集+边双联通
    bzoj4819 [Sdoi2017]新生舞会 分数规划+最大费用最大流
    bzoj5020 & loj2289 [THUWC 2017]在美妙的数学王国中畅游 LCT + 泰勒展开
    bzoj1195 [HNOI2006]最短母串 AC 自动机+状压+bfs
    hdu 多校 2019 选做
    bzoj3510 首都 LCT 维护子树信息+树的重心
    bzoj4011 [HNOI2015]落忆枫音 拓扑排序+DP
    bzoj3091 城市旅行 LCT + 区间合并
  • 原文地址:https://www.cnblogs.com/zmc60/p/14243707.html
Copyright © 2020-2023  润新知