sysbench 是一个基于 LuaJIT 的可编写脚本的多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不涉及数据库服务器的任意复杂的工作负载。
sysbench的作用:sysbench为 Linux 提供基准测试功能。sysbench 支持测试 CPU、内存、文件 I/O、互斥锁性能,甚至MySQL基准测试。
详细解释为以下的测试:
- oltp_*.lua:一组类似 OLTP 的数据库基准测试,数据库性能测试(OLTP 基准测试,需要通过
/usr/share/sysbench/
目录中的 Lua 脚本执行,例如oltp_read_only.lua
脚本执行只读测试) - fileio:文件系统级基准
- cpu:一个简单的 CPU 基准测试
- memory:内存访问基准
- threads:基于线程的调度程序基准
- mutex: POSIX 互斥量基准
sysbench特点
- 提供有关速率和延迟的广泛统计数据,包括延迟百分位数和直方图;
- 即使有数千个并发线程,开销也很低。sysbench 能够每秒生成和跟踪数亿个事件;
- 通过在用户提供的 Lua 脚本中实现预定义的钩子,可以轻松创建新的基准测试;
- 也可以用作通用 Lua 解释器,只需在脚本中替换#!/usr/bin/lua为#!/usr/bin/sysbench。
提供的常用测试模型
Sysbench压测三个步骤
- prepare,准备数据
- run,运行测试模型
- cleanup,清理测试数据
通常仅需准备一次数据,在此数据基础上测试各种模型即可。
Sysbench 常用参数如下:
-
--oltp-tables-count=1
:表数量 -
--oltp-table-size=10000000
:每个表产生的记录行数 -
--oltp-read-only=off
:是否生成只读SQL,默认 off,如果设置为 on,则 oltp 模型不会生成 update, delete, insert 的 SQL 语句 -
--oltp-skip-trx=[on|off]
:省略 BEGIN / COMMIT 语句。默认是 off -
--rand-init=on
:是否随机初始化数据,如果不随机化那么初始好的数据每行内容除了主键不同外其他完全相同 -
--num-threads=12
: 并发线程数,可以理解为模拟的客户端并发连接数 -
--report-interval=10
:表示每 10s 输出一次性能数据 -
--max-requests=0
:压力测试产生请求的总数,如果以下面的 max-time 来记,这个值设为 0 即可 -
--max-time=120
:测试的持续时间 -
--oltp_auto_inc=off
:ID是否为自增列 -
--oltp_secondary=on
:将ID设置为非主键防止主键冲突 -
--oltp_range_size=5
:连续取值 5 个,必定走到 5 个分片 -
--mysql_table_options='dbpartition by hash(id) tbpartition by hash(id) tbpartitions 2'
:PolarDB-X 支持拆分表,在建表的时候需要指定拆分方式
一、安装操作方式一
下载sysbench
git clone https://github.com/akopytov/sysbench.git
编译构建安装
./autogen.sh
./configure #./configure --without-mysql(不编译测试mysql的功能模块)
make && make install
安装操作方式二
1、下载安装
CentOS:
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
Debian/Ubuntu
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
macOS
# Add --with-postgresql if you need PostgreSQL support(注释)
brew install sysbench
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
macOS
brew install automake libtool openssl pkg-config
# For MySQL support
brew install mysql
# For PostgreSQL support
brew install postgresql
# openssl is not linked by Homebrew, this is to avoid "ld: library not found for -lssl"
export LDFLAGS=-L/usr/local/opt/openssl/lib
3、构建和安装
./autogen.sh
#添加 --with-pgsql 以构建支持 PostgreSQL
./configure
make -j
make install
以上将默认构建支持 MySQL 的 sysbench。如果您在非标准位置有 MySQL 头文件和库(并且 mysql_config在 中找不到PATH),您可以使用--with-mysql-includes和--with-mysql-libs选项显式指定它们./configure。
要在没有--without-mysql. 如果没有可用的数据库驱动程序,则与数据库相关的脚本将无法运行,但其他基准测试将起作用。
二、查看sysbench版本
[gysl@gysl-DevOps ~]$ sysbench --version
sysbench 1.0.9
三、查看帮助信息
1、 sysbench --help(查看所有帮助)
2、 sysbench fileio help (查看文件IO相关内容帮助)【语法为:sysbench <testname> help】
测试文件i/o
1 seqwr 顺序写入
2 seqrewr 顺序重写
3 seqrd 顺序读取
4 rndrd 随机读取
5 rndwr 随机写入
6
详细内容的学习参考链接,讲解的特别详细【推荐】:安装 sysbench 压测服务器以及 MySQL
其他的参考学习链接:
https://wiki.gentoo.org/wiki/Sysbench
作者:Syw