侧边栏壁纸
博主头像
与晚风述往事博主等级

万般皆下品,唯有读书高。

  • 累计撰写 149 篇文章
  • 累计创建 29 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Oracle Swingbench压测工具的使用

与晚风述往事
2022-08-06 / 0 评论 / 0 点赞 / 77 阅读 / 2,867 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-08-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

引言

前几天,突然就接到领导的通知,XXX项目准备要上线了,因此要对正式库进行压测一下。我听到这里是很懵逼的,压测?我哪会儿那玩意儿啊!

但是呢,没办法,这就跟天有不测风云一样,轮到你的时候,你躲是躲不过去的,只能被迫选择接受。因此,我就开始了在网上狂刷压测的文章,也恰巧之前有加过一个DBA前辈的微信,更巧的是这位DBA前辈在前段时间发过一篇关于压测的公众号,而我也撇了几眼,就这样顺理成章的有了本篇的内容。

介绍

Swingbench是被Oracle放弃的一个用来做压力测试的项目,现在是由前Oracle,现谷歌就职的一款员工在维护。它是一款支持跨平台的软件,不用担心只能用于Windows或Linux系统。

Swingbench有四种类型的基准给到我们用来做性能测试,分别是:

  • oewizard 简单的订单输入模式,用来创建繁重的写入工作负载。
  • shwizard 简单的星型模式,用于创建分析类型(OLAP)的工作负载。
  • jsonwizard 简单的JSON模式,用于创建JSON CRUD的工作负载。
  • tpcdswizard 类似于TPC-DS模式,用于创建复杂的分析工作负载。

我们可以使用这几种类型,来分别测试不同的业务场景。

使用

注:此软件必须要先安装JDK 1.8+才能使用,JDK的安装就不再这里写了。

Windows使用

1、下载Swingbench

下载链接有两种选择,分别是:

  • Swingbench官网下载
  • github下载

我这里选择从Swingbench官网上下载,各位请根据自己喜好来选择。这两个下载链接地址,我也列在下面。

官网:http://www.dominicgiles.com/downloads.html
image

Github:https://github.com/domgiles/swingbench-public/releases/tag/production
image-1659695834340

2、解压

解压后有多个文件,分别是:

  • bin 存放Linux的启动Shell脚本,Linux操作系统中使用。
  • configs 存放压力测试使用的模板,常用的模板是SOE_Server_Side_V2.xml。
  • launcher 存放与launcher相关的文件
  • lib 存放使用的jar包
  • log 存放运行的日志
  • source 存放java文件
  • sql 存放压力测试过程中使用到的sql文件,例如创建表语句等。
  • utils 存放一些python小工具。
  • winbin 存放Windows的启动bat脚本,Windows操作系统中使用。
  • wizardconfigs 存储与压力测试相关的xml脚本

我们可以根据自己的操作系统,去选择具体是使用bat还是shell启动。另外,常用的启动脚本就几个,也简单介绍一下。

  • oewizard.bat/oewizard.sh 创建一个简单的订单输入schema,为压力测试提供基础数据。
  • shwizard.bat/shwizard.sh 创建一个包含星型模型的schema,同理是为压力测试OLAP业务提供基础数据。
  • jsonwizard.bat/jsonwizard.sh 创建一个包括JSON的schema,同理是为压力测试JSON提供基础数据。
  • tpcdswizard.bat/tpcdswizard.sh 创建一个类似于TPC-DS的schema,用于创建复杂的分析工作负载。
  • swingbench.bat/swingbench.sh 调用最丰富的界面,能够让我们修改所有参数和监控工作负载,延迟和吞吐量会在界面上体现。
  • minibench.bat/minibench.sh 调用更简洁的界面,让我们能够运行工作负载和监控,但必须在命令行或通过配置文件设置参数。
  • charbench.bat/charbench.sh 仅命令行运行的工具,所有参数必须命令行上设置,延迟和吞吐量等指标写入标准输出或文件中。

使用示例

图型界面操作

1、造数据

1.1、调用图型界面

在确定要进行压力测试后,首先选择要测试的类型,例如我这里由于业务主要是OLTP业务,想测试一下峰值事务数,就可以使用oewizard类型来测试。

Windows系统就双击winbin目录下的oewizard.bat,就能够调出来图型界面;Linux下进入到bin目录下然后执行 ./oewizard.sh,就能够调出来图型界面,但前提是有配置xmanger或直接在图型界面中调用。
image-1659705782303

1.2、选择benchmark版本

选择benchmark的版本,Swingbench推荐使用2.0,那我们直接就默认即可。
image-1659705837300

1.3、选择操作类型

选择是创建还是删除schema,也就是模式。选择创建模式会去创建用户、表、索引和数据。
image-1659705930157

1.4、配置链接串、用户名和密码

如果你的数据库Oracle云,则需要指定认证的ZIP压缩包;否则,输入连接串、用户名和密码。注意,这里建议配置成sys权限,如果你配置的是system或具有dba权限的用户,则在创建完模式后,还需要使用SYS权限授权DBMS_LOCK和DBMS_RANDOM给该用户。
image-1659706495643

1.5、配置Schema

创建的schema用户名称,并指定用户使用的表空间,默认全部都是SOE。如果当前数据库没有SOE表空间,则需要先关闭图型界面,待创建好SOE表空间,再重新调用图型界面,一步步操作到这里。如果不想用SOE表空间,也可以使用其他已创建的表空间。注意,千万不要选择已经有业务数据或不可删除的表空间作为测试,千万不要给自己挖坑。表空间选择后,下一列的表空间的数据文件会自动填充,这里不需要调整。如果这里有空白,则表名此表空间没有在当前数据库中创建。最后,如果不想等待太长时间,可以勾选上只安装元数据,勾选后,它只会创建表空间,不会插入数据。
image-1659707765074

1.6、数据库选项

通常这里只需要将表空间类型调整为正常表空间,一般生产环境或测试环境不会有人使用bigfile表空间,其他不需要修改。
image-1659707830774

1.7、配置并行级别

默认情况下,会根据系统的cpu数据去设置并行级别,例如6个CPU,则会配置12个并行级别。自己根据实际情况去调整,可能不准确。
image-1659708205293

1.8、完成

到这里,就完成了,由于我勾选了只安装元数据,会比正常的步骤少。
image-1659708241071

2、测试

2.1、调用图型界面

Windows系统就双击winbin目录下的swingbench.bat,就能够调出来图型界面;Linux下进入到bin目录下然后执行 ./swingbench.sh,就能够调出来图型界面,但前提是有配置xmanger或直接在图型界面中调用。

根据数据选择要进行压力测试的类型,你总不可能数据造的都是JSON的,但是测试常用的业务吧。
image-1659709243417

2.2、配置参数

参考:https://cdn.modb.pro/db/245637

注:默认情况下启动后,需要手动停止才行,当然也可以自己配置压测的时间,在界面平稳后截图保存结果。

根据网上的某篇文章,参数可分为两种,分别是OLTP业务和OLAP业务时,去选择配置不同的参数。

OLTP swingbench参数参考

属性 配置
Customer Registration 15
Update Customer Details 10
Browse Products 50
Order Products 40
Process Orders 5
Browse Orders 5
USERS 200
DATASIZE 300 GB

OLAP swingbench参数参考

属性 配置
Sales Rep Query 50
Warehouse Query 50
Warehouse Activity Query 50
USERS 200
DATASIZE 300 GB

除此之外,其他就是配置数据库的链接信息和数据库服务器的链接信息。下图是为本地虚拟机测试图,由于我没有配置服务器连接信息,结果可能显示不太完整。

image-1659710218851

命令行操作

1、造数据

1.1、创建表空间

提前创建测试使用的表空间,预估测试的数据量,尽量给足够的表空间,我这里模拟就创建最大32G表空间的数据文件。

create tablespace soe logging datafile '/home/oracle/oradata/orcl/soe01.dbf' size 50m autoextend on next 50m maxsize 34359721984;

1.2、造基础数据

打开cmd创建,进入到swingbench的bin或winbin目录下,执行shell或bat脚本,创建数据,我这里以windows系统为例。

windows系统执行

oewizard.bat -cl -create -cs //192.168.1.20/orcl -u soe -p soe -scale 1 -tc 2 -dba "sys as sysdba" -dbap orcl -ts soe -nc

Linux系统执行

./oewizard.sh -cl -create -cs //192.168.1.20/orcl -u soe -p soe -scale 1 -tc 2 -dba "sys as sysdba" -dbap orcl -ts soe -nc

参数说明:

  • cl 指定运行在字符模式,也就是命令行模式
  • create 创建benchmarks schema,提供基础数据
  • cs 指定数据库的链接串,格式为://ip:端口//实例名
  • u 基准模式的用户名,也就是接下来连接数据库做压力测试的用户名。
  • p 基准模式用户名的密码。
  • scale 基准数据的大小,单位是GB。
  • tc 指定造数据时使用的并行度,也可以简单理解为线程数。
  • dba 指定使用哪个dba用户来执行创建schema、表、索引等。
  • dbap dba用户的密码。
  • ts 指定基准数据存储的表空间。
  • nc 指定打印输出时,不使用彩色,这里在我这个版本中有点小bug,建议在造基准数据时,有图型界面条件的,就使用图型界面。

1.3、压力测试

数据造好后,就可以开始做压力测试了。

参数说明:

  • c 指定进行的压力测试类型
  • cs 指定数据库的链接串,格式为://ip:端口//实例名
  • uc 指定压测时的用户数
  • rt 指定压测的时间,如果不指定,则会一直压测,直至手动停止,但手动停止不会生成results.xml报告,格式是hh:mm.sec。
  • v 指定运行时显示的状态,可以包括trans|cpu|disk|dml|errs|tpm|tps|users|resp|vresp|tottx|trem,多个用英文逗号分割。经过我测试后发现,此参数也有bug,或者是我理解有误。

更多参数可以使用-h获取到。

Windows系统执行

charbench.bat -c ../configs/SOE_Server_Side_V2.xml -cs //192.168.125.20:1521/orcl -uc 10 -rt 00:01 -v users,tpm,tps,cpu,disk

image-1659747080296

Linux系统执行

./charbench.sh -c ../configs/SOE_Server_Side_V2.xml -cs //192.168.125.20:1521/orcl -uc 10 -rt 00:01 -v users,tpm,tps,cpu,disk
0

评论区