sysbench手册

sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。

主要测试项目:

  • cpu性能
  • 磁盘io性能
  • 调度程序性能
  • 内存分配及传输速度
  • POSIX线程性能
  • 数据库性能/OLTP基准测试.目前sysbench主要支持MySQL,Pgsql,Oracle这3种数据库

2.1 安装二进制包

Debian/Ubuntu:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench

RHEL/CentOS:

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

2.2 编译安装

Debian/Ubuntu:

apt -y install make automake libtool pkg-config libaio-dev
# For MySQL support
apt -y install libmysqlclient-dev libssl-dev
# For PostgreSQL support
apt -y install libpq-dev

RHEL/CentOS:

yum -y install make automake libtool pkgconfig libaio-devel
# For MySQL support, replace with mysql-devel on RHEL/CentOS 5
yum -y install mariadb-devel openssl-devel
# For PostgreSQL support
yum -y install postgresql-devel

安装:

./autogen.sh
# Add --with-pgsql to build with PostgreSQL support
./configure [--with-mysql-libs=/data/mysql/lib/ --with-mysql-includes=/data/mysql/include/]
make -j `grep processor /proc/cpuinfo | wc -l`
make install

设置环境变量:

export LD_LIBRARY_PATH=/data/mysql/lib/

3.1 CPU的准测试

CPU测试使用64位整数,测试计算质数直到某个最大值所需要的时间,cpu测试主要是进行素数的加法运算,在上面的例子中,指定了最大的素数为 20000,自己可以根据机器cpu的性能来适当调整数值,主要看total time所花费的时间.

sysbench cpu --cpu-max-prime=10000 --threads=`grep processor /proc/cpuinfo | wc -l` --time=60 run

输出:

3.2 线程基准测试

thread-locks小于线程数除以2,lock越少,处理时间越长.

sysbench  --test=threads --num-threads=800 --thread-yields=100 --thread-locks=10 run

相关参数

sysbench --test=threads help
sysbench 0.5:  multi-threaded system evaluation benchmark
  
threads options:
  --thread-yields=N   每个请求产生多少个线程。默认是1000
  --thread-locks=N    每个线程的锁的数量。默认是8

3.3 文件IO基准测试

磁盘IO性能测试[主要看每秒请求数(request)和总体的吞吐量(total)

sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw prepare
sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw run
sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw cleanup
上述参数指定了最大创建16个线程,创建的文件总大小为3G,文件读写模式为随机读。
文件测试有6种模式:seqwr(顺序写), seqrewr(顺序读写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)

3.4 内存基准测试

测试了内存的连续读写性能

sysbench --test=memory --memory-block-size=8k --memory-total-size=1G run

3.5 互斥锁基准测试

sysbench --test=mutex --num-threads=100 --mutex-num=1000 --mutex-locks=100000 --mutex-loops=10000 run   

3.6 OLTP基准测试

Note: 完整过程分为3个阶段:prepare » run » cleanup (准备数据,测试,清理测试数据)

Note: 建议将sysbench测试机器和MySQL数据库机器分开部署,避免影响性能!

3.6.1 准备

# 创建test库
mysql -uroot -p -e 'create database test;'
# 10个表,每个表有1000万条数据,客户端的并发线程数为10,执行时间为120秒,每3秒输出一次报告
sysbench /usr/share/sysbench/oltp_common.lua \
    --mysql-host=x.x.x.x \
    --mysql-port=3306 \
    --mysql-user=xxx\
    --mysql-password=xxx\
    --mysql-db=test \
    --db-driver=mysql \
    --table-size=10000000 \
    --tables=10 \
    --threads=10 \
    --report-interval=3 \
    prepare

3.6.2 测试

# 10个表,每个表有1000万条数据,客户端的并发线程数为10,测试最多300秒,每3秒输出一次报告
sysbench /usr/share/sysbench/oltp_read_write.lua \
    --mysql-host=x.x.x.x \
    --mysql-port=3306 \
    --mysql-user=xxx \
    --mysql-password=xxxxx \
    --mysql-db=test \
    --db-driver=mysql \
    --table-size=10000000 \
    --tables=10 \
    --threads=10 \
    --report-interval=3 \
    --time=300 \
    run

结果输出:

3.6.3 清理

sysbench /usr/share/sysbench/oltp_common.lua \
    --mysql-host=x.x.x.x \
    --mysql-port=3306 \
    --mysql-user=xxx\
    --mysql-password=xxx\
    --mysql-db=test \
    --db-driver=mysql \
    --table-size=10000000 \
    --tables=10 \
    --threads=10 \
    --report-interval=3 \
    cleanup

  • linux/performance/sysbench手册.txt
  • 最后更改: 2019/09/06 10:29
  • 由 mrco