sysbench 压测工具
chenzuoqing Lv3

sysbench

1.x版本和0.x操作选项有区别,注意看help

sysbench 是一个比较通用的压测工具,可以用来做一些基准测试,看 help 中有说明提供了如下测试选项,另外在源码中提供了数据库 OLTP 场景的测试脚本,调整参数配置后,通过反复基准测试验证调优效果。

1
2
3
4
5
6
7
fileio  - File I/O test
cpu - CPU performance test
memory - Memory functions speed test
threads - Threads subsystem performance test
mutex - Mutex performance test

OLTP - 通过脚本可以测试OLTP场景下数据库的能力,脚本在源码`src/lua`目录

这里简单记录下 fileioMySQL OLTP 的测试

安装

1
2
3
4
5
6
7
yum install -y autoconf automake libtool \
perl-ExtUtils-Embed perl-devel
git clone https://github.com/akopytov/sysbench
cd sysbench
./autogen.sh
./configure
make -j 4 && make install

测试文件IO

  1. sysbench-1.1 的 IO 测试示例
    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
    29
    30
    31
    32
    # 生成数据文件
    sysbench fileio --file-num=4 \
    --file-block-size=16384 \
    --file-total-size=20G \
    prepare

    # 三秒输出一次状态
    sysbench fileio --file-num=4 \
    --file-block-size=16384 \
    --file-total-size=20G \
    --file-test-mode=rndrd \
    --file-extra-flags=direct \
    --max-requests=0 \
    --max-time=1200 --num-threads=16 \
    --report-interval=3 \
    run

    # 新版本
    sysbench fileio --file-num=4 --file-block-size=16384 --file-total-size=8G --file-test-mode=rndrd --file-extra-flags=direct --time=1200 --threads=16 --report-interval=1 run | tee -a sysbench.out

    # 清除测试文件
    sysbench fileio --file-num=4 \
    --file-block-size=16384 \
    --file-total-size=20G \
    cleanup

    # 简单测试
    mkdir fileio_bench
    cd fileio_bench
    sysbench fileio --file-num=1 --file-block-size=4096 --file-total-size=2G prepare
    sysbench fileio --file-num=1 --file-block-size=4096 --file-total-size=2G --file-test-mode=rndrd --file-extra-flags=direct --time=10 --threads=1 --report-interval=1 run | tee -a sysbench.out
    sysbench fileio --file-num=1 --file-block-size=4096 --file-total-size=2G cleanup

测试MySQL

  1. 生成数据文件,指定表的大小和数量,时间和线程数

    1
    2
    3
    4
    5
    6
    7
    8
    cd /root/chen/sysbench
    sysbench src/lua/oltp_read_only.lua \
    --mysql-host=172.16.88.185 --mysql-port=3306 \
    --mysql-user=root --mysql-password=111111 \
    --mysql-db=sysbench --tables=10 \
    --table-size=10000000 --max-requests=0 \
    --report-interval=10 --time=120 --threads=12 \
    prepare
  2. 压测run

    1
    2
    3
    4
    5
    6
    7
    sysbench src/lua/oltp_read_only.lua \
    --mysql-host=172.16.88.185 --mysql-port=3306 \
    --mysql-user=root --mysql-password=111111 \
    --mysql-db=sysbench --tables=10 \
    --table-size=10000000 --max-requests=0 \
    --report-interval=10 --time=3600 --threads=12 \
    run
  3. 执行 cleanup 清除压测表

 Comments