sysbench--OLTP数据库性能测试与服务器基准功能测试工具
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 sudo yum -y install sysbench
Debian/Ubuntu
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash sudo apt -y install sysbench
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。
要在没有 MySQL 支持的情况下编译 sysbench,请使用--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 rndrw 混合随机读/写
详细内容的学习参考链接,讲解的特别详细【推荐】:安装 sysbench 压测服务器以及 MySQL
其他的参考学习链接:
https://wiki.gentoo.org/wiki/Sysbench
1.作者:Syw 2.出处:http://www.cnblogs.com/syw20170419/ 3.本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 4.如果文中有什么错误,欢迎指出。以免更多的人被误导。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?