暂无图片
暂无图片
8
暂无图片
暂无图片
暂无图片

Oracle IO压测工具SLOB

白鳝的洞穴 2020-09-02
4868
存储系统的压力测试实际上对数据库的安全运行十分重要。如果IO系统存在问题或者说IO资源不足,Oracle运行的稳定性会大打折扣。不过传统的IO压测工具,比如iometer等,只能进行标准的IO负载测试,和运行ORACLE数据库还不能直接对标。oracle IO压测最著名的工具就是orion,也就是现在的Resource Manager,orion可以比较准确的模拟Oracle数据库的IO访问方式,对存储系统的评估比iometer等更为准确。不过再怎么模拟IO都不如用实际的SQL对存储系统产生压力来的准确,因为对于实际的系统,SGA的配置等,都会对数据库的IO行为产生较大的影响。SLOB就是一个通过SQL产生IO压力的IO压测工具。如果要想下载slob或者了解slob如何使用,可以到https://kevinclosson.net/slob/去查看。在Git上也有SLOB的代码下载https://github.com/therealkevinc/。
SLOB是一组SHELL编写的工具,使用sqlplus执行SQL来给数据库加压,从而测试数据库在大并发下的IO负载情况。这也是目前少有的通过真实SQL语句实现IO性能压测的工具,是我们在系统建设阶段实际测试高负载IO下的系统IO性能的最有效的工具。
SLOB的使用十分简便,通过setup.sh可以初始化数据,为了避免热块冲突等影响并发IO,因此可以通过创建多个账户,同时并发访问更大范围的数据来提高IO并发量。由于SLOB更多的是通过表扫描和UPDATE来产生IO,因此SLOB并不会像普通的BENCHMARK工具一样,需要大量的存储空间。

通过配置slob.conf,你可以修改负载的属性,包括表扫描的大小和UPDATE的比例。从而调整压力的负载类型。起到不同场景的压测作用。

启动压测后,系统负载很快就可以达到最高峰:

可以看出,当前的IO负载很快就让dm-12压到出现性能问题了。从系统的健康模型上看:

IO相关的问题也已经显现出来了。从数据库的实时监控情况看,在IO方面的问题也显现出来了:

对于SLOB,通过调整下面的参数,可以修改相关的行为,进行一些除了IO压测之外的压测:

UPDATE_PCT=5  调整UPDATE的比例到0,可以大幅度减少修改操作,从而把测试重点放在读IO上,增加UPDATE的比例,可以测试高修改比例下的IO性能

SCAN_PCT=10  调整全表扫描的比例

RUN_TIME=900  运行时间

WORK_LOOP=0

SCALE=80M   目标表的大小

SCAN_TABLE_SZ=20M  扫描大小

WORK_UNIT=64

REDO_STRESS=LITE  REDO产生量的大小

LOAD_PARALLEL_DEGREE=8

THREADS_PER_SCHEMA=20  每个SCHEMA的会话数,在SETUP的时候可以创建多个SCHEMA,压测时runit.sh <schema_num>的数量不能超过SETUP时创建的SCHEMA数量。

如果有人对SLOB有兴趣,可以深度修改相关代码,做一些自己想做的压测。同时,因为SLOB的2.4版本对12c支持不够,因此要用2.4版本压测12c,需要对代码做一些修改,最新的2.5版本对12c的支持已经比较完善了。
最后修改时间:2020-09-03 09:58:05
文章转载自白鳝的洞穴,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论