查看原文
其他

牛刀小试--Oracle Swingbench 压力测试

JiekeXu JiekeXu DBA之路 2024-03-03

作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来学习 Oracle Swingbench 压力测试,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

1、Swingbench 简介

Swingbench是一个免费的负载生成器和基准测试工具,其支持Oracle数据库(11g、12c、18c、19c)。Swingbench的开发目的主要是展示RAC的负载和测试,也可用于单实例环境。下载地址为 http://www.dominicgiles.com/downloads.html

Swingbench模拟了一套订单业务逻辑,通过创建SOE用户,模拟产品和订单业务,可以自定义数据量的大小,本次测试将生成50GB的业务数据。


2.下载 swingbench 工具


我们使用如下 github 地址下载:https://github.com/domgiles/swingbench-public/releases/tag/production

如果有需要可下载 java JDK https://www.oracle.com/java/technologies/downloads/

安装Swingbench 2.5或2.6,运行环境需要是Java 8及以上版本,Oracle 19c 默认使用 JDK 1.8版本,如果系统 JDK 版本为1.8以下的版本,则需要将JDK版本升级到1.8及以上版本。上传安装包解压即可。

上传后验证文件完整性并解压

cksum swingbenchlatest.zip

1679811525 41211958 swingbenchlatest.zip

unzip swingbenchlatest.zip

cd swingbenchls -l-rw-rw-rw- 1 oracle oinstall 6163 Mar 16 19:01 README.txtdrwxr-xr-x 3 oracle oinstall 283 Mar 15 21:30 bindrwxr-xr-x 2 oracle oinstall 4096 Mar 16 03:29 configsdrwxr-xr-x 2 oracle oinstall 112 Mar 14 05:14 launcherdrwxr-xr-x 3 oracle oinstall 237 Mar 15 20:17 libdrwxr-xr-x 2 oracle oinstall 6 Mar 3 2010 logdrwxr-xr-x 3 oracle oinstall 50 Mar 16 18:05 sourcedrwxr-xr-x 2 oracle oinstall 8192 Mar 15 20:17 sqldrwxr-xr-x 2 oracle oinstall 61 Nov 7 2018 utilsdrwx------ 3 oracle oinstall 4096 Mar 14 05:39 winbindrwxr-xr-x 2 oracle oinstall 155 Mar 14 05:23 wizardconfigs



3.数据生成

进入 swingbench/bin 目录,Linux 系统在 bin 目录执行(需要调出图形化界面),

不然会报错Exception: java.lang.NoClassDefFoundError thrown from the UncaughtExceptionHandler in thread "AWT-EventQueue-0"


使用 xshell

# echo $DISPLAYlocalhost:11.0$ export DISPLAY=localhost:11.0cd /home/oracle/tmp/swingbench/bin./oewizard

B.     选择version2.0 ,点击next;


C.     选择创建数据

 

填写连接串,格式 SCANIP:Port/service_names
//192.168.221.75:1770/jiekedb及 sys 用户密码

可以选择默认用户密码及表空间,也可以选择现有表空间,如OLTP,这里默认,点击 next


如下图选择普通表空间:


为基准测试选择一个预先配置的大小。或者指定你自己的。选项1 = 1GB。根据你的Buffer Cache的大小,我们建议模式大小为 CPU 密集型工作负载为 6.9 GB, I/O 密集型工作负载至少为 322.7GB 数据。


由于测试环境配置较低,这里选择自定义 50 GB 的数据。如下图,使用不同的数据量对表空间的要求也不尽相同,我这里选择 50GB 的数据,需要表空间大小160GB,临时表空间 30G。


并行度调整,默认为 16 可根据个人机器自行调整,我这里选择 40


到此处,根据上图去创建需要的表空间,和调整临时表空间大小,并将日志组大小调大,例如每个实例5*10g。

create tablespace SOE datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;alter tablespace SOE add datafile '+DATA' size 10240M autoextend on maxsize 30g;
col FILE_NAME for a89col TABLESPACE_NAME for a8selectFILE_ID,FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024/1024 GB from dba_temp_files;alter database tempfile 1 resize 32767m;
--Redo 日志组由原来的各两组变成四组。select GROUP#,THREAD#,BYTES/1024/1024 mb,status from v$log;ALTER DATABASE ADD  LOGFILE THREAD 1 ('+DATA','+DATA') size 2048M;ALTER DATABASE ADD  LOGFILE THREAD 2 ('+DATA','+DATA') size 2048M;

当上面操作都完成后,重新执行./oewizard,可以看到已经选择了数据文件。


点击完成后则开始创建数据,新建用户,表,序列、索引、约束等对象,并收集统计信息。50G 的数据创建还是比较慢的,还是静静的等待完成吧。

由于是测试虚拟机器,我这里创建 50G 的数据 40 个并行,也大概需要 52 分钟,还是比较慢的。

SQL> col owner for a10SQL> col table_name for a30SQL> selectowner,table_name,TABLESPACE_NAME,NUM_ROWS from dba_tables where owner='SOE'order by num_rows desc;OWNER TABLE_NAME TABLESPACE_NAME NUM_ROWS---------------------------------------- ------------------------------ ----------SOE ORDER_ITEMS SOE 359864756SOE LOGON SOE 119149200SOE ADDRESSES SOE 75000000SOE CARD_DETAILS SOE 75000000SOE ORDERS SOE 71489500SOE CUSTOMERS SOE 50000000SOE INVENTORIES SOE 901018SOE PRODUCT_INFORMATION SOE 1000SOE PRODUCT_DESCRIPTIONS SOE 1000SOE WAREHOUSES SOE 1000SOE ORDERENTRY_METADATA SOE 0col INDEX_NAME for a30select owner,table_name,INDEX_NAME,INDEX_TYPE,TABLESPACE_NAME from dba_indexes where owner='SOE';OWNER TABLE_NAME INDEX_NAME INDEX_TYPE TABLESPACE_NAME---------------------------------------- --------------------------------------------------------- ---------------SOE CUSTOMERS CUSTOMERS_PK NORMAL/REV SOESOE CUSTOMERS CUST_ACCOUNT_MANAGER_IX NORMAL SOESOE CUSTOMERS CUST_DOB_IX NORMAL SOESOE PRODUCT_DESCRIPTIONS PRD_DESC_PK NORMAL SOESOE INVENTORIES INVENTORY_PK NORMAL SOESOE ADDRESSES ADDRESS_PK NORMAL/REV SOESOE WAREHOUSES WHS_LOCATION_IX NORMAL SOESOE ORDERS ORD_SALES_REP_IX NORMAL/REV SOESOE CARD_DETAILS CARD_DETAILS_PK NORMAL/REV SOESOE INVENTORIES INV_PRODUCT_IX NORMAL SOESOE INVENTORIES INV_WAREHOUSE_IX NORMAL SOESOE WAREHOUSES WAREHOUSES_PK NORMAL SOESOE ORDERS ORD_CUSTOMER_IX NORMAL/REV SOESOE ORDER_ITEMS ORDER_ITEMS_PK NORMAL/REV SOESOE ORDERS ORD_ORDER_DATE_IX NORMAL/REV SOESOE ORDERS ORDER_PK NORMAL/REV SOESOE PRODUCT_INFORMATION PRODUCT_INFORMATION_PK NORMAL SOESOE        CUSTOMERS                     CUST_FUNC_LOWER_NAME_IX        FUNCTION-BASED NORMAL       SOESOE ORDER_ITEMS ITEM_ORDER_IX NORMAL/REV SOESOE PRODUCT_INFORMATION PROD_CATEGORY_IX NORMAL SOESOE ORDERS ORD_WAREHOUSE_IX NORMAL SOESOE CARD_DETAILS CARDDETAILS_CUST_IX NORMAL SOESOE ADDRESSES ADDRESS_CUST_IX NORMAL/REV SOESOE PRODUCT_INFORMATION PROD_SUPPLIER_IX NORMAL SOESOE ORDER_ITEMS ITEM_PRODUCT_IX NORMAL/REV SOESOE CUSTOMERS CUST_EMAIL_IX NORMAL SOESOE PRODUCT_DESCRIPTIONS PROD_NAME_IX NORMAL SOE
27 rows selected.

点击 ok,完成数据创建,这样就创建成功了。

接下来调整参数,重启数据库就可以测试了,调整参数如下:

alter system set processes=4000 scope=spfile;alter system set db_files=2500 scope=spfile;alter system set standby_file_management='AUTO';alter system set control_file_record_keep_time=30;alter system set fast_start_mttr_target=120 scope=spfile;alter system set open_links_per_instance=10 scope=spfile;alter system set session_cached_cursors=600 scope=spfile; alter system set archive_lag_target=1800 scope=spfile;alter system set open_cursors=1500 scope=spfile;alter system set open_links=10 scope=spfile;alter system set undo_retention=10800 scope=spfile;alter system set lock_sga=FALSE scope=spfile;alter system set remote_login_passwordfile='EXCLUSIVE' scope=spfile;alter system set resource_manager_plan='' scope=spfile;alter system set statistics_level='TYPICAL' scope=spfile;alter system set timed_statistics=TRUE scope=spfile;alter system set undo_management='AUTO' scope=spfile;alter system set db_cache_advice='OFF' scope=spfile;alter system set audit_trail='NONE' scope=spfile;alter system set audit_sys_operations=false scope=spfile;alter system set "_gc_policy_time"=0 scope=spfile;alter system set "_sort_elimination_cost_ratio"=0 scope=spfile;alter system set "_use_adaptive_log_file_sync"= FALSE scope=spfile;alter system set "result_cache_max_size"= 0 scope=spfile;alter system set use_large_pages=only scope=spfile;alter system set "_optimizer_use_feedback"=false scope=spfile;

调整好参数后,重启数据库

srvctl stop database -d jxrt4db

srvctl start database -d jxrt4db

srvctl status database -d jxrt4db


Instance jiekedb1 is running on node jieke19cr1Instance jiekedb2 is running on node jieke19cr2

3.测试


cd /home/oracle/tmp/swingbench/bin执行./swingbenchApplication : SwingbenchAuthor : Dominic GilesVersion : 2.6.0.1163

进入 Swingbench/bin目录运行 swingbench,执行测试,修改数据库连接串、用户连接数设置,勾选要测试的选项,开始测试。

填入要监控的主机信息,对主机进行监控,测试一下是否能连接成功,上述都配置完以后,点击绿色的开始按钮,开始测试,当测试的图形平稳后截图。

 


4.总结

压测总共使用 23 分钟,500 并发会话连接,大约有 350 活跃会话。我们需要观察 TPS(吞吐量)、IOPS(每秒读写次数)、RT(响应时间)CPU等数据。如下:

TPS:4628

RT:2419

CPU:100%

IOPS:53821

好了,这次就先这样吧,欢迎一起来讨论。全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

❤️ 欢迎关注我的视频号,一起学习新知识!!!


————————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————



Oracle 表碎片检查及整理方案

OGG|Oracle GoldenGate 基础

2021 年公众号历史文章合集整理

2020 年公众号历史文章合集整理

我的 2021 年终总结和 2022 展望

Oracle 19c  RAC 遇到的几个问题

利用 OGG 迁移 Oracle11g 到 19C

OGG|Oracle GoldenGate 微服务架构

Oracle 查询表空间使用率超慢问题一则

国产数据库|TiDB 5.4 单机快速安装初体验

Oracle ADG 备库停启维护流程及增量恢复

Linux 环境搭建 MySQL8.0.28 主从同步环境



继续滑动看下一个

牛刀小试--Oracle Swingbench 压力测试

JiekeXu JiekeXu DBA之路
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存