ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

sysybench-测试工具

2020-09-05 07:00:19  阅读:252  来源: 互联网

标签:sysybench oltp -- db oracle time 测试工具 sysbench


最近工作中用到了sysbench,查阅了很多资料,最终把自己的一些笔记分享出来。

其中有许多都是出自博客、论坛。在此,道一声谢谢。如果侵犯了你的权益,告诉我,我删掉。

 

一、安装

sysbench源码安装

1、预安装与环境准备

1.0 安装mysql数据库

1.1 登录服务器,安装必要的依赖
yum -y install make automake libtool pkgconfig libaio-devel vim-common

1.2 下载并解压缩sysbench源码包
wget https://codeload.github.com/akopytov/sysbench/zip/master
unzip master

1.3 开始安装
cd sysbench-master/
./autogen.sh ##生成configure文件
./configure --prefix=/usr/local/sysbench/ \ ##安装到哪个目录
--with-mysql \ #如果想要让 sysbench 支持 pgsql/oracle 的话,就需要在编译的时候加上参数--with-pgsql或者--with-oracle
--with-mysql-includes=/usr/local/mysql/include \ ##1.0已经安装了mysql,此处指定mysql数据库的相应目录
--with-mysql-libs=/usr/local/mysql/lib ##1.0已经安装了mysql,此处指定mysql数据库的相应目录

1.4 如果想要支持pgsql/oracle,需要提前安装pgsql/oracle数据库,或者将lib库拷贝过来,编译时指定。

2、安装sysbench
安装
make
make install

3、检查
去安装目录下(/usr/local/sysbench/) 找到 sysbench
./sysbench --version
输出版本号即可

 二、使用

Oracle 数据库 sysbench 压力测试

1、环境准备:
1.1 OS: centos 7.x
1.2 DB:Oracle 11.2.0.4

2、工具和数据库可以不在一台主机上,不过,工具所在的服务器也要有oracle软件。
可以直接把数据库软件(oracle安装后目录结构一般为 /XXX/app/oracle/XXX,则可以是app目录)打包拷贝过来就可以。

3、sysdba角色登录oracle数据库创建sysbench用户并赋予权限
create user sysbench identified by sysbench;
grant connect,resource to sysbench;

4、工具所在服务器上执行
4.0 此次采用别人编译安装打包好的sysbench:  -----刚开始采用1.1和1.0,想要自己安装,浪费了许多时间。最后才发现,0.5以后,好像就不支持oracle了,只得已选择别人打包好的,先用着。

cd /root/sysbench/ ##切换到一个合适的目录下,空间需求,10M即可
git clone https://github.com/osdba/sysbench_lua
git clone https://github.com/osdba/sysbench_bin.git

4.1 export ORACLE_HOME=/mnt/app/oracle/product/11.2.0/db_1/
export LD_LIBRARY_PATH=/mnt/app/oracle/product/11.2.0/db_1/lib

4.2 解压缩
unzip sysbench_lua-master.zip
unzip sysbench_bin-master.zip

4.3 开始测试
cd /root/sysbench/sysbench_bin-master/bin
./sysbench_ora --test=/root/sysbench/sysbench_lua-master/lua/oltp.lua --db-driver=oracle \
--oltp-table-name=sysbench --oltp-table-size=1000 --oltp-tables-count=2 \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
--max-time=60 --max-requests=1000 --num-threads=2 --report-interval=1 prepare

./sysbench_ora --test=/root/sysbench/sysbench_lua-master/lua/oltp.lua --db-driver=oracle \
--oltp-table-name=sysbench --oltp-table-size=1000 --oltp-tables-count=2 \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
--max-time=60 --max-requests=1000000 --num-threads=2 --report-interval=1 run

./sysbench_ora --test=/root/sysbench/sysbench_lua-master/lua/oltp.lua --db-driver=oracle \
--oltp-table-name=sysbench --oltp-table-size=1000 --oltp-tables-count=2 \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
--max-time=60 --max-requests=1000 --num-threads=2 --report-interval=1 cleanup

4.4 简要参数介绍
--test=/root/sysbench/sysbench_lua-master/lua/oltp.lua ##表示调用 .../oltp.lua 脚本进行 oltp 模式测试
--db-driver=oracle #指定数据库引擎
--oracle-db=orcl #指定数据库实例
--oracle-user=sysbench #数据库账号
--oracle-password=Aa123456 #上一条中指定用户的密码
--oltp-table-name=sysbench #测试时使用到的表名,默认是sbtest
--oltp-table-size=1000 #每个测试表填充数据量,默认是10000
--rand-init=on #每个测试表都是用随机数据来填充
--oltp-tables-count=2 #指定表的数量
--max-time=60 #总执行时间,单位为s,默认值为0。持续压测时长不小于30分钟,否则测试数据可能不具参考意义。
#该值非硬性指标,比如某一事物开始了,那么会等待事务结束。所以设置了60秒,可能是61秒、62秒。
--max-requests=1000 #总请求数,默认值为10000,表示总请求数为 10000。0 标识不设置。
#总执行时长(max-time) 和 总请求数(max-requests),设置一个即可。
--num-threads=2 #使用的线程数量,默认值为1,表示发起N个并发连接
--report-interval=1 #表示N秒输出一次测试进度报告,0表示关闭测试进度报告输出,仅输出最终的报告结果,默认值为0
--rand-type=uniform #表示随机类型为固定模式,其他几个可选随机模式:
#uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)
prepare/run/cleanup #测试前准备,包括创建表结构,构造数据/开始测试/测试完成后清理数据和表结构

4.5 其他参数参考(这部分主要来自CSDN的大神,我只是搬运工~~)

sysbench的测试主要包括以下几个方面:

(1)磁盘io性能

参数详解:
--file-num=N #代表生成测试文件的数量,默认为128。
--file-block-size=N #测试时所使用文件块的大小,如果想磁盘针对innodb存储引擎进行测试,可以将其设置为16384,
#即innodb存储引擎页的大小。默认为16384。
--file-total-size=SIZE #创建测试文件的总大小,默认为2G大小。
--file-test-mode=STRING #文件测试模式,包含:seqwr(顺序写), seqrewr(顺序读写),
#seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)。
--file-io-mode=STRING # 文件操作的模式,sync(同步),async(异步),fastmmap(快速mmap),
#slowmmap(慢速mmap),默认为sync同步模式。
--file-async-backlog=N #对应每个线程队列的异步操作数,默认为128。
--file-extra-flags=STRING #打开文件时的选项,这是与API相关的参数。
--file-fsync-freq=N #执行fsync()函数的频率。fsync主要是同步磁盘文件,
#因为可能有系统和磁盘缓冲的关系。 0代表不使用fsync函数。默认值为100。
--file-fsync-all=[on|off] #每执行完一次写操作,就执行一次fsync。默认为off。
--file-fsync-end=[on|off] #在测试结束时执行fsync函数。默认为on。
--file-fsync-mode=STRING #文件同步函数的选择,同样是和API相关的参数,由于多个操作系统对于fdatasync支持不同,
#因此不建议使用fdatasync。默认为fsync。
--file-merged-requests=N #大多情况下,合并可能的IO的请求数,默认为0。
--file-rw-ratio=N #测试时的读写比例,默认时为1.5,即可3:2。

(2)cpu性能

参数详解:
--cpu-max-prime=N #用来选项指定最大的素数,具体参数可以根据CPU的性能来设置,默认为10000

(3)内存分配及传输速度
#sysbench --test=memory help
参数详解:
--memory-block-size=SIZE #测试内存块的大小,默认为1K
--memory-total-size=SIZE #数据传输的总大小,默认为100G
--memory-scope=STRING #内存访问的范围,包括全局和本地范围,默认为global
--memory-hugetlb=[on|off] #是否从HugeTLB池分配内存的开关,默认为off
--memory-oper=STRING #内存操作的类型,包括read, write, none,默认为write
--memory-access-mode=STRING #内存访问模式,包括seq,rnd两种模式,默认为seq

(4)线程性能

参数详解:
--thread-yields=N #指定每个请求的压力,默认为1000
--thread-locks=N #指定每个线程的锁数量,默认为8

(5)mutex性能

参数详解:
--mutex-num=N #数组互斥的总大小。默认是4096
--mutex-locks=N #每个线程互斥锁的数量。默认是50000
--mutex-loops=N #内部互斥锁的空循环数量。默认是10000

(6)OLTP基准测试

参数详解:
--oltp-test-mode=STRING #执行模式{simple,complex(advanced transactional),nontrx(non-transactional),sp}。默认是complex
--oltp-reconnect-mode=STRING #重新连接模式{session(不使用重新连接。每个线程断开只在测试结束),
#transaction(在每次事务结束后重新连接),query(在每个SQL语句执行完重新连接),
#random(对于每个事务随机选择以上重新连接模式)}。默认是session
--oltp-sp-name=STRING #存储过程的名称。默认为空
--oltp-read-only=[on|off] #只读模式。Update,delete,insert语句不可执行。
#默认是off,不要进行只读测试,也就是会采用读写混合模式测试
--oltp-skip-trx=[on|off] #省略begin/commit语句。默认是off
--oltp-range-size=N #查询范围。默认是100
--oltp-point-selects=N #number of point selects [10]
--oltp-simple-ranges=N #number of simple ranges [1]
--oltp-sum-ranges=N #number of sum ranges [1]
--oltp-order-ranges=N #number of ordered ranges [1]
--oltp-distinct-ranges=N #number of distinct ranges [1]
--oltp-index-updates=N #number of index update [1]
--oltp-non-index-updates=N #number of non-index updates [1]
--oltp-nontrx-mode=STRING #查询类型对于非事务执行模式{select, update_key, update_nokey, insert, delete} [select]
--oltp-auto-inc=[on|off] #AUTO_INCREMENT是否开启。默认是on
--oltp-connect-delay=N #在多少微秒后连接数据库。默认是10000
--oltp-user-delay-min=N #每个请求最短等待时间。单位是ms。默认是0
--oltp-user-delay-max=N #每个请求最长等待时间。单位是ms。默认是0
--oltp-table-name=STRING #测试时使用到的表名。默认是sbtest
--oltp-table-size=N #测试表的记录数。默认是10000
--oltp-dist-type=STRING #分布的随机数{uniform(均匀分布),Gaussian(高斯分布),special(空间分布)}。默认是special
--oltp-dist-iter=N #产生数的迭代次数。默认是12
--oltp-dist-pct=N #值的百分比被视为‘special‘ (for special distribution)。默认是1
--oltp-dist-res=N #‘special’的百分比值。默认是75

5、输出结果解读

5.1、CPU测试
./sysbench_ora --test=cpu --db-driver=oracle --oracle-db=orcl \
--oracle-user=sysbench --oracle-password=Aa123456 --max-time=60 --max-requests=1000 run

General statistics:
total time: 43.2617s #总运行时间
total number of events: 10000 #循环的次数
total time taken by event execution: 43.2237s #循环的执行时间
response time:
min: 3.83ms #最小单次执行时间
avg: 4.32ms #平均单次执行时间
max: 67.89ms #最长单次执行时间
approx. 95 percentile: 5.33ms #除去最高的5%剩余的95%中最长的执行时间

Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 43.2237/0.00

#######################################################################################################

5.2、OLTP测试
./sysbench_ora --test=/root/sysbench/sysbench_lua-master/lua/oltp.lua --db-driver=oracle \
--oltp-table-name=sysbench --oltp-table-size=1000 --oltp-tables-count=2 \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
--max-time=60 --max-requests=1000 --num-threads=2 --report-interval=1 prepare

./sysbench_ora --test=/root/sysbench/sysbench_lua-master/lua/oltp.lua --db-driver=oracle \
--oltp-table-name=sysbench --oltp-table-size=1000 --oltp-tables-count=2 \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
--max-time=60 --max-requests=1000000 --num-threads=2 --report-interval=1 run

./sysbench_ora --test=/root/sysbench/sysbench_lua-master/lua/oltp.lua --db-driver=oracle \
--oltp-table-name=sysbench --oltp-table-size=1000 --oltp-tables-count=2 \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
--max-time=60 --max-requests=1000 --num-threads=2 --report-interval=1 cleanup

OLTP test statistics:
queries performed:
read: 8823206 #读总数
write: 2520916 #写总数
other: 1260458 #其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)
total: 12604580 #全部总数
transactions: 630229 (174.94 per sec.) #总事务数(每秒事务数)
deadlocks: 0 (0.00 per sec.) #发生死锁总数
read/write requests: 11344122 (3148.86 per sec.) #读写总数(每秒读写次数)
other operations: 1260458 (349.87 per sec.) #其他操作总数(每秒其他操作次数)
General statistics: #一些统计结果
total time: 3602.6152s #总耗时
total number of events: 630229 #共发生多少事务数
total time taken by event execution: 921887.7227s #所有事务耗时相加(不考虑并行因素)
response time: #响应时间
min: 6.52ms #最小耗时
avg: 1462.78ms #平均耗时
max: 9918.51ms #最长耗时
approx. 99 percentile: 3265.01ms #超过99%平均耗时
Threads fairness: #线程的稳定性
events (avg/stddev): 2461.8320/34.60 #事件(平均值/偏差)
execution time (avg/stddev): 3601.1239/0.63 #执行时间(平均值/偏差)

#######################################################################################################

5.3、threads的测试

./sysbench_ora --test=threads --db-driver=oracle \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
--max-time=60 --num-threads=20 --thread-yields=500 --thread-locks=2222 run

Threads started!


General statistics:
total time: 0.4057s
total number of events: 10000
total time taken by event execution: 8.0491s
response time:
min: 0.48ms
avg: 0.80ms
max: 6.27ms
approx. 95 percentile: 1.00ms

Threads fairness:
events (avg/stddev): 500.0000/61.06
execution time (avg/stddev): 0.4025/0.00

#######################################################################################################

5.4、MUTEX测试

./sysbench_ora --test=mutex --db-driver=oracle \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
--max-time=60 --num-threads=20 --mutex-num=10240 --mutex-locks=1000000 --mutex-loops=50000000 run

Threads started!


General statistics:
total time: 8.7911s
total number of events: 20
total time taken by event execution: 174.5552s
response time:
min: 8590.99ms
avg: 8727.76ms
max: 8791.03ms
approx. 95 percentile: 8788.80ms

Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 8.7278/0.06

#######################################################################################################

5.5、MEMORY测试

./sysbench_ora --test=memory --db-driver=oracle \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
--max-time=60 --memory-block-size=8k --memory-total-size=100G --memory-access-mode=seq run

Threads started!

Operations performed: 13107200 (408382.85 ops/sec)

102400.00 MB transferred (3190.49 MB/sec)


General statistics:
total time: 32.0954s --总体花费时间
total number of events: 13107200 --访问内存的次数 100*1024(M)=8K*1024*128
total time taken by event execution: 16.8145s --纯测试发生的总时间
response time:
min: 0.00ms
avg: 0.00ms
max: 0.38ms
approx. 95 percentile: 0.00ms

Threads fairness:
events (avg/stddev): 13107200.0000/0.00
execution time (avg/stddev): 16.8145/0.00


#######################################################################################################

5.6、FILEIO测试

./sysbench_ora --test=fileio --db-driver=oracle \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
file-num=256 --file-block-size=8K --file-total-size=2G --file-test-mode=rndrw prepare

./sysbench_ora --test=fileio --db-driver=oracle \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
file-num=256 --file-block-size=8K --file-total-size=2G --file-test-mode=rndrw run

./sysbench_ora --test=fileio --db-driver=oracle \
--oracle-db=orcl --oracle-user=sysbench --oracle-password=Aa123456 \
file-num=256 --file-block-size=8K --file-total-size=2G --file-test-mode=cleanup

General statistics:
total time: 57.1536s --总运行时间
total number of events: 10000 --测试次数
total time taken by event execution: 49.6440s --其中纯花费在测试上的时间
response time:
min: 0.00ms --最小时间
avg: 4.96ms --平均时间
max: 88.10ms --最大时间
approx. 95 percentile: 21.75ms --去除最高的5%后的最大时间


Threads fairness:
events (avg/stddev): 10000.0000/0.00

#######################################################################################################

 

标签:sysybench,oltp,--,db,oracle,time,测试工具,sysbench
来源: https://www.cnblogs.com/smallfishy/p/13616963.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有