温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

sysbench安装、使用、出图

发布时间:2020-08-05 21:42:08 来源:网络 阅读:6915 作者:武的博客 栏目:MySQL数据库

背景

最近着迷于性能测试,遂学习一把压测神器sysbench

sysbench是github上开源的项目

链接地址:https://github.com/akopytov/sysbench

通用安装方法

1.clone and download选择copy URL

2.cd /tmp --> Centos终端输入git clone https://github.com/akopytov/sysbench.git

3.按照README.MD中源码安装指导一步步操作即可。
yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel
./autogen.sh
./configure
make -j
make install

sysbench测试I/O

关键词:随机产生数据,测试不同磁盘,在不同磁盘目录下执行命令

准备阶段:sysbench --test=fileio --num-threads=4 --file-total-size=10G --file-test-mode=rndrw prepare

压力测试阶段:sysbench --test=fileio --num-threads=4 --file-total-size=10G --file-test-mode=rndrw run

清理数据阶段:sysbench --test=fileio --num-threads=4 --file-total-size=10G --file-test-mode=rndrw cleanup

基础名称解析==压测要关注什么

TPS:Transactions Per Second,每秒传输的事务处理个数。这是指服务器每秒处理的事务数,是支持事务的存储引擎特有的一个性能指标。

QPS:Queries Per Second,每秒查询处理量,适用大多数存储引擎。

tpmC:Transactions Per Minute,每分钟处理的交易量,等同于TPS,是TPC-C的测试指标(tpcc-mysql)。

iops:每秒磁盘进行的I/O操作次数

iowait:一个采样周期内有百分之几的时间处于:CPU空闲、并且有仍未完成的I/O请求

svctm:设备处理请求的平均时间(ms)。指的是读写请求脱离linux内核调度,进入设备读写阶段所耗时间。

%util:可以简单的理解为:单位时间内,设备繁忙比。比如,10秒钟,有6秒在进行读写,则util = 60%。

每秒I/O字节数(I/O吞吐)

事务响应时间

I/O设备提供的设备级别IOPS、读写延时数据

一般要关注的指标

response time avg:平均响应时间

TPS and OPS

系统层面的cpu、io、mem相关指标

如何判定哪个测试模式性能更好

如果两次tps/tpmC一样,那么谁的事务响应时间、iowait、svctm、%util、读写延时更低,就是谁更好

mysql压测举例

sysbench /tmp/sysbench/src/lua/oltp_read_write.lua \
--mysql-host=127.0.0.1 --mysql-port=3306 \
--mysql-user=sysbench --mysql-password=sysbench \
--mysql-db=sbtest --tables=10 --table-size=100000 --threads=1 \
--report-interval=10 --rand-type=uniform --max-time=300 \
--max-requests=0 --percentile=99 prepare/run/cleanup

结果指定到文件:
run >>./log/sysbench_oltpX_20180313.log

参数解释:
./src/lua/oltp_read_write.lua 表示调用本脚本进行oltp模式测试
--mysql-db=sbtest 表示指定测试库
--tables=10 表示生成10个测试表
--table-size=100000 表示每个测试表填充数据量为100000

run模式的参数:
--threads=1 表示发起1个并发连接
--report-interval=10 表示每10秒输出一次测试进度报告
--rand-type=uniform 表示随机类型为固定模式
--max-time=300 表示最大执行时长300秒
--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长
--percentile=99 表示设定采样比例,默认是 95%;即丢弃1%的长请求,在剩余的99%里取最大值

压测三部曲

prepare:准备阶段,准备数据
run:压测执行
cleanup:压测后马上清理数据

每次压测后要做什么

每轮测试完成后,都重启mysqld实例,并且用下面的方法删除系统cache,释放swap(如果用到了swap的话),甚至可以重启整个OS
shell> sync --将脏数据刷新到磁盘
shell> echo 3 > /proc/sys/vm/drop_caches --清楚OS Cache
shell> swapoff -a && swapon -a

出图

安装windows客户端,用于出图
软件:gp507-win64-mingw
下载url:https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.0.7/gp507-win64-mingw.exe
举例:
plot 'C:\Users\limin\Downloads\20180314.log' using 7 with linespoint title 'vm1-TPS',
'C:\Users\limin\Downloads\20180314-10.log' using 7 with linespoint title 'vm2-TPS'
sysbench安装、使用、出图

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI