Sysbench 性能测试(小白快速上手)

news2024/10/4 18:47:30

文末有惊喜哦 !

Sysbench 介绍


Sysbench 是一个在Linux系统上进行性能测试和基准测试的工具。它可以用于评估计算机系统的各种性能指标,如 CPU 性能、内存性能、文件 I/O性 能和数据库性能等。Sysbench 提供了多种测试模式和选项,可以帮助用户模拟不同负载条件下的性能表现,从而有助于优化系统配置和应用程序性能。

1)Sysbench 附带了以下捆绑的基准测试

  • oltp_*.lua:类似oltp的数据库基准的集合
  • fileio:文件系统级基准测试
  • cpu:简单的cpu基准测试
  • memory:内存访问基准
  • threads:基于线程的调度器基准
  • mutex:POSIX互斥基准

2)Sysbench 特性

  • 关于速率和延迟的大量统计数据是可用的,包括延迟百分比和直方图
  • 即使有数千个并发线程,开销也很低。Sysbench能够每秒生成和跟踪数亿个事件
  • 通过在用户提供的Lua脚本中实现预定义的钩子,可以轻松创建新的基准测试
  • 可以用作通用的Lua解释器,只需使用#!/usr/bin/sysbench替换#!/usr/bin/lua

Sysbench 安装


1)二进制安装

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

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

不同系统安装 sysbench 参考:项目概览 - sysbench - GitCode、架构师必备之性能测试--压测工具sysbench的安装及使用_sysbench安装-CSDN博客

Sysbench 使用


sysbench 的命令行语法如下:

sysbench [options]... [testname] [command]

1)testname:testname 是一个可选的内置测试名称(如 fileio、memory、cpu等),或一个捆绑的 Lua 脚本名称(如 oltp_read_only),或一个自定义 Lua 脚本的路径。

2)command:command 是一个可选参数,sysbench 将把它传递给内置测试或用 testname 指定的脚本。可用命令列表取决于特定测试。有些测试还实现了自己的自定义命令。将由sysbench传递给内置测试或用testname指定的脚本。命令定义测试必须执行的动作。可用命令的列表取决于特定的测试。一些测试还实现了它们自己的自定义命令。 下面是典型的测试命令及其用途的描述:

  • prepare:为那些需要它们的测试执行准备操作,例如在磁盘上为文件测试创建必要的文件,或为数据库基准测试填充测试数据库。
  • run:运行testname参数指定的实际测试。所有测试都提供此命令。
  • cleanup:在创建临时数据的测试运行后删除临时数据。
  • help:显示使用参数 testname 指定的测试的使用信息。这包括测试提供的完整命令列表,因此应该使用它来获取可用的命令。

3)options:options是一个包含0个或多个以“--”开头的命令行选项的列表。与命令一样,应该使用sysbench testname help命令描述特定测试提供的可用选项。

命令行选项

支持的常用参数及其说明和默认值如下表所示:

选项

描述

默认值

--threads

创建1的工作线程总数

1

--events

请求总数的限制。0(默认值)表示没有限制

0

--time

总执行时间限制,以秒为单位。0表示不限制

10

--warmup-time

预热时间,可以实现在 CPU/database/page/caches 预热之后再进行统计,这样得到的数据指标更准确

0

--rate

这个数字指定了所有线程平均每秒钟应该执行多少事件(事务)。0(默认)表示无限速率,即事件以尽可能快的速度执行

0

--thread-init-timeout

工作线程初始化的等待时间,单位为秒

30

--thread-stack-size

每个线程的堆栈大小

32k

--report-interval

以间隔时间为秒定期上报中间统计信息。注意,此选项生成的统计信息是按间隔计算的,而不是累积的。0禁用中间报告

0

--debug

打印更多的调试信息

off

--validate

在可能的情况下对测试结果进行验证

off

--help

打印通用语法或指定测试的帮助并退出

off

--verbosity

详细级别(0 -只有关键消息,5 -调试)

4

--percentile

sysbench测量所有已处理请求的执行时间,以显示最小、平均和最大执行时间等统计信息。对于大多数基准测试,知道一个匹配某个百分比的请求执行时间值也是有用的(例如,95%百分比意味着我们应该放弃最长请求的5%,并从剩余的请求中选择最大值)。此选项允许指定查询执行次数的百分位数用于计数

95

--luajit-cmd

执行一个LuaJIT控制命令。这个选项相当于luajit -j

随机数字选项

sysbench提供了许多算法来生成随机数,这些随机数根据给定的概率分布进行分布。下表列出了可用于控制这些算法的选项。

选项

描述

默认值

--rand-type

默认情况下使用随机数分布{uniform,gaussian,special,pareto,zipfian}。基准脚本可以选择使用默认分布,也可以明确指定,即覆盖默认分布。

special

--rand-seed

随机数生成器的种子。当为0时,当前时间用作RNG种子。

0

rand-spec-iter

特殊分布的迭代次数

12

rand-spec-pct

“特殊”值将属于特殊分布的整个范围的百分比

1

rand- spec-res

用于特殊分布的“特殊”值百分比

75

--rand-pareto-h

帕累托分布的形状参数

0.2

--rand-zipfian-exp

zipfian分布的形状参数

0.8

命令参考

sysbench --help

sysbench --help 命令结果如下:

通用数据库选项
General database options:
  --db-driver=STRING  specifies database driver to use ('help' to get list of available drivers) [mysql]
  --db-ps-mode=STRING prepared statements usage mode {auto, disable} [auto]
  --db-debug[=on|off] print database-specific debug information [off]
MySQL 相关参数

选项

描述

默认值

--mysql-host

mysql ip 地址

localhost

--mysql-port

mysql 端口号

3306

--mysql-socket

mysql 套接字

--mysql-user

用户名

sbtest

--mysql-password

密码

--mysql-db

指定数据库

sbtest

--mysql-ssl

使用 ssl 连接

off

--mysql-ssl-cipher

ssl 使用 specific cipher

--mysql-compression

如果客户端库中有压缩功能,则使用压缩功能

off

--mysql-debug

跟踪所有客户端库调用

off

--mysql-ignore-errors

忽略的错误

[1213,1020,1205]

--mysql-dry-run

模拟运行,假装所有 MySQL 客户端 API 调用都成功,但不执行它们

off

支持的 lua 脚本

选项

描述

oltp_read_only

只读测试

oltp_read_write

读写测试

oltp_insert

简单插入测试

bulk_insert

批量插入测试

oltp_delete

delete 删除测试

oltp_update_index

带索引的更新测试

oltp_update_non_index

不带索引的更新测试

oltp_point_select

等值查询测试

select_random_points

随机等值查询测试

select_random_ranges

随机范围查询测试

注:这些脚本均包含了oltp_common,所以调用这些脚本可以直接使用 oltp_common 脚本中的内容,oltp_common 脚本中编写了数据生成、数据清理等基础函数。

脚本参数

选项

描述

默认值

–auto_inc

使用 AUTO_INCREMENT 列作为主键(对于 MySQL),或者它在其他 DBMS 中的替代项。禁用时,使用客户端生成的 ID

on

-–create_secondary

除了 PRIMARY KEY 创建二级索引

on

–delete_inserts

每个事务的 DELETE/INSERT 组合数

1

–distinct_ranges

每个事务的 SELECT DISTINCT 查询数

1

–index_updates

每个事务的 UPDATE 索引查询数

1

–mysql_storage_engine

存储引擎,如果使用 MySQL

innodb

–non_index_updates

每个事务的 UPDATE 非索引查询数

1

–order_ranges

每个事务的 SELECT ORDER BY 查询数

1

–point_selects

每个事务的点 SELECT 查询数

10

–range_selects

启用/禁用所有范围 SELECT 查询

on

–range_size

范围 SELECT 查询的范围大小

100

–secondary

使用二级索引代替 PRIMARY KEY

off

–simple_ranges

每个事务的简单范围 SELECT 查询数

1

–skip_trx

不要启动显式事务并在 AUTOCOMMIT 模式下执行所有查询

off

–sum_ranges

每个事务的 SELECT SUM() 查询数

1

–table_size

每个表的行数

10000

–tables

表的个数

1

Sysbench 测试


测试环境准备

1)创建远程连接账号,并授予权限

create user 'root_bench'@'%' identified with mysql_native_password by '123456'; grant all privileges on *.* to 'root_bench'@'%';

2)创建数据库test_sysbench

create database test_sysbench;

MySQL 只读测试

1)准备:4张表,每张表个10万行,16线程

sysbench --threads=16 --time=60 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root_bench --mysql-password=123456 --mysql-db=test_sysbench --tables=4 --table-size=100000 oltp_read_only prepare

 2)开始只读测试

sysbench --threads=16 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root_bench --mysql-password=123456 --mysql-db=test_sysbench --tables=4 --table-size=100000 oltp_read_only run

此处结果内容主要包含:

进度信息: 时间计数(1s意为1秒)

thds:线程数

tps:每秒事务数

qps:每秒查询数

r/w/o:分别代表每秒的读/写/其他操作数lat(ms, 95%)时95%操作的耗时-单位为毫秒

err/s:是每秒的错误数

reconn/s:是每秒的重连数

SQL统计信息:

read/write/other/total:SQL的读/写/其他/总计次数

transactions:总事务数及每秒事务数

queries:总查询数及每秒查询数

ignored errors:忽略错误数据

reconnects:重新数据

通用统计信息:

total time:总时间

total number of events:总操作数

耗时信息(单位毫秒):

min:最小耗时

avg:平均耗时

max:最大耗时

95th percentitle:95%耗时

sum:总耗时

线程公平性:

events (avg/stddev):线程执行事务数的平均值和标准差

execution Time (avg/stddev):线程执行时间的平均值和标准差

3)清理只读数据

sysbench --threads=16 --time=600 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root_bench --mysql-password=123456 --mysql-db=test_sysbench --tables=4 --table-size=100000 oltp_read_only cleanup

MySQL 读写测试

1)准备:8张表,每张表个5万行,16线程

sysbench --threads=16 --time=600 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root_bench --mysql-password=123456 --mysql-db=test_sysbench --tables=8 --table-size=50000 oltp_read_write prepare

2)开始读写测试

sysbench --threads=16 --time=30 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root_bench --mysql-password=123456 --mysql-db=test_sysbench --tables=8 --table-size=50000 oltp_read_write run

3)清理读写数据

sysbench --threads=16 --time=600 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root_bench --mysql-password=123456 --mysql-db=test_sysbench --tables=8 --table-size=50000 oltp_read_write cleanup

其他测试也是同样的操作流程,不一一演示了。

获取更多数据库内核干货,请关注微信公众号:东周沉静的青蒿

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1436314.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

感悟笔记——2024年2月5日

今日阅读了一篇挺有深度的文章,主要阐述进入职场后的大部分人,是怎么逐渐沦为螺丝钉的?即使起点巨高的优等生,也不可避免。文章指路: 「优等生思维」正在将你变成「螺丝钉」和「老黄牛」从小到大,我一直都是那个「别…

EMC测试报告怎么看 PK、QP、AV

EMC测试报告怎么看 报告中的字母辐射报告1辐射报告2 测试条件 报告中的字母 1.PK.PEAK,是指峰值(单位时间内的最高值); 2.QP(QUASI-PEAK)是指准峰值(单位时间内的平均值); 3.AV(AVE…

数据采集接口分类:数据采集、数据的采集有哪些?

中国的人工智能会面临着前所未有的发展机遇,她也将会以真正解决人类钢需载入史册,我们也期待着在天津跟在座的各位合作伙伴共同努力,真正的用人工智能建设美好世界。 API接口数据采集 主流电商数据采集 一、 什么是数据采集 确立一个算法模…

算法-2-异或运算

按位异或:相同为0,不同为1 异或运算性质 1)异或运算就是无进位相加(ab写二进制形式每位相加时不进位) 2)异或运算满足交换律、结合律,也就是同一批数字,不管异或顺序是什么&#…

【精选】java继承进阶,子类继承父类(内存图、内存分析工具)

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

5年前端仔的2023年终总结

突然发现已经有好几个月没有写过博客总结过什么,小小辩解一下,其实并不是笔者停止的学习和总结,随着在前端这个行业的逐年深入,渐渐的很多收获不再是像之前简单的技术点的确定性描述讲解了,而是某个领域的知识体系的串…

计算机服务器中了locked勒索病毒怎么处理,locked勒索病毒解密数据恢复

网络技术的不断发展,为企业的生产生活提供了极大便利,但也为网络安全带来严重威胁。近期,云天数据恢复中心接到某集团企业的求助,企业的计算机服务器遭到了locked勒索病毒攻击,导致企业系统内部的金蝶账套全部被加密&a…

鸿蒙踩坑合集

各位网络中的小伙们,关于鸿蒙的踩坑陆陆续续收集中,本文章会持续更新,希望对您有所帮助 1、预览视图无法正常加载 重新编译项目,点击刷新按钮,控制台提示Build task failed. Open the Run window to view details. 解…

生物地理学算法

生物地理学优化算法 生物地理学优化算法(biogeography-based optimization,BBO)源于生物地理学理论,通过模仿栖息地之间物种迁移和变异对优化问题进行求解,由Simon于2008年提出。 BBO算法由一群可行解组成,这些可行解…

港口起重数字化解决方案:PreMaint智能化引领未来

在面对日益增加的货轮和集装箱需求的背景下,港口码头迫切需要高效、智能的解决方案来优化起重设备运行,提高生产效率。数字化技术在港口起重领域的应用,尤其是仿真和数据分析,成为解决这些挑战的重要工具。而PreMaint智能化系统的…

text-generation-webui搭建大模型运行环境与踩坑记录

text-generation-webui搭建大模型运行环境 text-generation-webui环境初始化准备模型启动项目Bug说明降低版本启动项目 text-generation-webui text-generation-webui是一个基于Gradio的LLM Web UI开源项目,可以利用其快速搭建部署各种大模型环境。 环境初始化 下载…

【芯片设计- RTL 数字逻辑设计入门 7 -- 同步复位与异步复位详细介绍】

文章目录 复位的类型和划分同步复位综合后电路优缺点 异步复位优缺点 异步复位的时序分析(recovery time/removal time)异步复位,同步释放综合后电路优缺点 转自:https://blog.csdn.net/qq_40281783/article/details/128969188 复…

2024三掌柜赠书活动第九期:Node.js从基础到项目实践(视频教学版)

目录 前言Node.js从基础到项目实践关于《Node.js从基础到项目实践(视频教学版)》编辑推荐内容简介作者简介图书目录书中前言/序言《Node.js从基础到项目实践(视频教学版)》全书速览结束语 前言 随着Web应用的快速发展,Node.js作为一种强大的JavaScript运行时环境&…

unity实现第一人称和第三人称

在角色设置两个挂载点,第一人称时,相机放在eys上面,切换第三人称时,放置到3rd节点上面,调整节点位置,达到期望效果 代码 void ThirdView(){Debug.Log("切换到第三人称");camera.SetParent(third…

闲聊电脑(5)装个 Windows(一)

​夜深人静,万籁俱寂,老郭趴在电脑桌上打盹,桌子上的小黄鸭和桌子旁的冰箱又开始窃窃私语…… 小黄鸭:冰箱大哥,上次说到硬盘分区和格式化,弄完之后,就该装系统了吧? 冰箱&#x…

AnimateDiffusion文字生成图片--入门

AnimateDiffusion文字生成图片--入门 1. 安装2. 插件2.1 汉化插件2.2 中文提示词插件2.3 模型下载插件2.4 模型下载2.5 c站helper插件2.6 c站秘钥 3. 模型4. 总结 gitio: https://a18792721831.github.io/ 下面基本上所有的操作都需要访问外网,请自行解决外网。 1. …

设备预测性维护、预防性维护、反应性维护的区别与联系

三者象一个三层金字塔: 预测性维护 预防性维护 反应性维护 底部是反应性维护,其操作理念是“等到它坏了,然后修复它”。 中间是预防性维护,即按预定的时间间隔进行维修或改造。预防性维护的目标是延长机器及其零件的使用寿命…

跟着pink老师前端入门教程-day20

二、移动WEB开发之flex布局 1、flex 布局体验 1.1 传统布局与flex布局 传统布局:兼容性好、布局繁琐、局限性、不能再移动端很好的布局 flex弹性布局:操作方便,布局极为简单,移动端应用很广泛;PC 端浏览器支持情况…

OJ_W的密码

题干 c实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<map> #include<string> #include<vector> using namespace std;void Partition(string &str,vector<int> &vec1, vector<int>& vec2, vector<int…

如何在Linux部署Yearning并结合cpolar实现公网访问内网管理界面

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用…