zoukankan      html  css  js  c++  java
  • sysbench对MySQL的压测,使用sysbench压测磁盘io

    QPS - query per second
    TPS - transaction per second 不是特别关注,每个业务场景中事务标准是不一样的

    Ⅰ、sysbench测试框架

    Ⅱ、常用测试脚本

    [root@VM_42_63_centos lua]# pwd
    /usr/local/src/sysbench-master/src/lua
    [root@VM_42_63_centos lua]# ll *.lua
    -rwxr-xr-x 1 root root  1446 Jun 27 02:35 bulk_insert.lua
    -rw-r--r-- 1 root root  1307 Jun 27 02:35 empty-test.lua
    -rw-r--r-- 1 root root 14468 Jun 27 02:35 oltp_common.lua
    -rwxr-xr-x 1 root root  1290 Jun 27 02:35 oltp_delete.lua
    -rwxr-xr-x 1 root root  2415 Jun 27 02:35 oltp_insert.lua
    -rwxr-xr-x 1 root root  1265 Jun 27 02:35 oltp_point_select.lua
    -rwxr-xr-x 1 root root  1649 Jun 27 02:35 oltp_read_only.lua
    -rwxr-xr-x 1 root root  1824 Jun 27 02:35 oltp_read_write.lua
    -rwxr-xr-x 1 root root  1118 Jun 27 02:35 oltp_update_index.lua
    -rwxr-xr-x 1 root root  1127 Jun 27 02:35 oltp_update_non_index.lua
    -rwxr-xr-x 1 root root  1440 Jun 27 02:35 oltp_write_only.lua
    -rw-r--r-- 1 root root  1631 Jun 27 02:35 prime-test.lua
    -rwxr-xr-x 1 root root  1933 Jun 27 02:35 select_random_points.lua
    -rwxr-xr-x 1 root root  2132 Jun 27 02:35 select_random_ranges.lua
    

    Ⅲ、开搞

    这个老版本好像有参数设置热数据的量什么的,现在最新版本不知道咋搞,就先将就直接弄吧,不管了

    准备数据
    [root@VM_42_63_centos lua]# sysbench --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-db=sbtest --tables=10 --table-size=10000 --mysql-user=root --mysql-password=123 oltp_update_index.lua prepare
    sysbench 1.1.0 (using bundled LuaJIT 2.1.0-beta3)
    
    Creating table 'sbtest1'...
    Inserting 10000 records into 'sbtest1'
    Creating a secondary index on 'sbtest1'...
    Creating table 'sbtest2'...
    Inserting 10000 records into 'sbtest2'
    Creating a secondary index on 'sbtest2'...
    Creating table 'sbtest3'...
    Inserting 10000 records into 'sbtest3'
    Creating a secondary index on 'sbtest3'...
    ...
    
    开始测试
    [root@VM_42_63_centos lua]# sysbench oltp_update_index.lua --mysql-host=127.0.0.1 --mysql-port=3307 --mysql-user=root --mysql-password=123 --threads=10 --time=120 --report-interval=10 run
    sysbench 1.1.0 (using bundled LuaJIT 2.1.0-beta3)
    
    Running the test with following options:
    Number of threads: 10
    Report intermediate results every 10 second(s)
    Initializing random number generator from current time
    
    
    Initializing worker threads...
    
    Threads started!
    
    [ 10s ] thds: 10 tps: 804.14 qps: 804.14 (r/w/o: 0.00/804.14/0.00) lat (ms,95%): 36.89 err/s: 0.00 reconn/s: 0.00
    [ 20s ] thds: 10 tps: 647.70 qps: 647.70 (r/w/o: 0.00/647.70/0.00) lat (ms,95%): 35.59 err/s: 0.00 reconn/s: 0.00
    [ 30s ] thds: 10 tps: 2220.50 qps: 2220.50 (r/w/o: 0.00/2220.50/0.00) lat (ms,95%): 18.28 err/s: 0.00 reconn/s: 0.00
    [ 40s ] thds: 10 tps: 4566.59 qps: 4566.59 (r/w/o: 0.00/4566.59/0.00) lat (ms,95%): 2.71 err/s: 0.00 reconn/s: 0.00
    [ 50s ] thds: 10 tps: 4194.30 qps: 4194.30 (r/w/o: 0.00/4194.30/0.00) lat (ms,95%): 7.30 err/s: 0.00 reconn/s: 0.00
    [ 60s ] thds: 10 tps: 4717.91 qps: 4717.91 (r/w/o: 0.00/4717.91/0.00) lat (ms,95%): 2.76 err/s: 0.00 reconn/s: 0.00
    ...
    
    看结果,这里就不解释了,比较简单,随便看看就好
    SQL statistics:
        queries performed:
            read:                            0
            write:                           665574
            other:                           0
            total:                           665574
        transactions:                        665574 (5546.21 per sec.)
        queries:                             665574 (5546.21 per sec.)
        ignored errors:                      0      (0.00 per sec.)
        reconnects:                          0      (0.00 per sec.)
    
    Throughput:
        events/s (eps):                      5546.2076
        time elapsed:                        120.0052s
        total number of events:              665574
    
    Latency (ms):
             min:                                    0.27
             avg:                                    1.80
             max:                                  123.45
             95th percentile:                        2.43
             sum:                              1199263.13
    
    Threads fairness:
        events (avg/stddev):           66557.4000/209.28
        execution time (avg/stddev):   119.9263/0.00



    使用sysbench压测磁盘io

     

    Ⅰ、sysbench安装

    cd /usr/local/src
    yum -y install make automake libtool pkgconfig libaio-devel
    git clone https://github.com/akopytov/sysbench.git
    cd sysbench
    ./autogen.sh
    ./configure
    make -j 4
    make install
    ldconfig /usr/local/mysql/lib
    
    [root@VM_42_63_centos sysbench]# sysbench --version;
    sysbench 1.1.0-50966c8

    Ⅱ、file io测试

    2,1 生成测试文件

    sysbench fileio --file-num=4 --file-block-size=16384 --file-total-size=110G prepare

    2.2 看下参数

    [root@VM_42_63_centos data]# sysbench fileio help
    sysbench 1.1.0-50966c8 (using bundled LuaJIT 2.1.0-beta3)
    
    fileio options:
      --file-num=N                  number of files to create [128]
      --file-block-size=N           block size to use in all IO operations [16384]
      --file-total-size=SIZE        total size of files to create [2G]
      --file-test-mode=STRING       test mode {seqwr, seqrewr, seqrd, rndrd, rndwr, rndrw}
      --file-io-mode=STRING         file operations mode {sync,async,mmap} [sync]
      --file-extra-flags=[LIST,...] list of additional flags to use to open files {sync,dsync,direct} []
      --file-fsync-freq=N           do fsync() after this number of requests (0 - don't use fsync()) [100]
      --file-fsync-all[=on|off]     do fsync() after each write operation [off]
      --file-fsync-end[=on|off]     do fsync() at the end of test [on]
      --file-fsync-mode=STRING      which method to use for synchronization {fsync, fdatasync} [fsync]
      --file-merged-requests=N      merge at most this number of IO requests if possible (0 - don't merge) [0]
      --file-rw-ratio=N             reads/writes ratio for combined test [1.5]

    2.3 测两把看看

    • 先看随机读
    [root@VM_42_63_centos sysdata]# sysbench fileio 
    > --time=180 
    > --threads=24 
    > --file-total-size=110G 
    > --file-test-mode=rndrd 
    > --file-num=4 
    > --file-extra-flags=direct 
    > --file-fsync-freq=0 
    > --file-block-size=16384 
    > run
    sysbench 1.1.0-50966c8 (using bundled LuaJIT 2.1.0-beta3)
    
    Running the test with following options:
    Number of threads: 24
    Initializing random number generator from current time
    
    
    Extra file open flags: directio
    4 files, 2.5GiB each
    10GiB total file size
    Block size 16KiB
    Number of IO requests: 0
    Read/Write ratio for combined random IO test: 1.50
    Calling fsync() at the end of test, Enabled.
    Using synchronous I/O mode
    Doing random read test
    Initializing worker threads...
    
    Threads started!
    
    
    Throughput:
             read:  IOPS=1752.15 27.38 MiB/s (28.71 MB/s)
             write: IOPS=0.00 0.00 MiB/s (0.00 MB/s)
             fsync: IOPS=0.00
    
    Latency (ms):
             min:                                  0.07
             avg:                                 13.70
             max:                                687.59
             95th percentile:                     36.89
             sum:                            4319633.88
    • 再看随机写
    [root@VM_42_63_centos sysdata]# sysbench fileio 
    > --time=180 
    > --threads=24 
    > --file-total-size=110G 
    > --file-test-mode=rndwr 
    > --file-num=4 
    > --file-extra-flags=direct 
    > --file-fsync-freq=0 
    > --file-block-size=16384 
    > run
    sysbench 1.1.0-50966c8 (using bundled LuaJIT 2.1.0-beta3)
    
    Running the test with following options:
    Number of threads: 24
    Initializing random number generator from current time
    
    
    Extra file open flags: directio
    4 files, 2.5GiB each
    10GiB total file size
    Block size 16KiB
    Number of IO requests: 0
    Read/Write ratio for combined random IO test: 1.50
    Calling fsync() at the end of test, Enabled.
    Using synchronous I/O mode
    Doing random write test
    Initializing worker threads...
    
    Threads started!
    
    
    Throughput:
             read:  IOPS=0.00 0.00 MiB/s (0.00 MB/s)
             write: IOPS=1094.75 17.11 MiB/s (17.94 MB/s)
             fsync: IOPS=0.53
    
    Latency (ms):
             min:                                  0.09
             avg:                                 21.92
             max:                               3376.77
             95th percentile:                     94.10
             sum:                            4319984.68

    随机读的iops为1752,随机写的iops为1094,读写非对称

    清理测试文件用cleanup选项即可

    我们主要看随机写的性能哦

  • 相关阅读:
    analysis of algorithms
    Measurement of Reflected Radiation
    lecture 5
    lecture 3
    字符串
    Emission of Radiation辐射发射
    Electromagnetic Radiation(EMR) 电磁辐射
    Linux FTP服务器-VSFTPD虚拟用户配置
    jenkins notes
    python nose使用记录
  • 原文地址:https://www.cnblogs.com/DataArt/p/10236657.html
Copyright © 2011-2022 走看看