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

SwingBench压测简介

原创 黑獭 2024-08-06
337

SwingBench下载地址:http://www.dominicgiles.com/downloads.html

SwingBench文档下载地址:http://www.dominicgiles.com/Swingbench.pdf

一、环境

Linux虚拟机版本:oracle linux 6.9

Oracle:11.2.0.4 RAC

SwingBench:2.6(此版本要求JDK1.8以上)

Windows 宿主机版本:wind7

JDK:1.8.0_144

在windows7 上运行swingbench测试脚本,对linux中的oracle数据库进行压力测试。

二、配置windows环境变量

2.1 打开环境变量窗口

计算机(右键)-属性-高级系统设置-环境变量

2.2 新建系统变量:JAVA_HOME

C:\Program Files\Java\jdk1.8.0_144 (你的JDK安装路径)

2.3 修改系统变量:PATH

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

2.4 新建系统变量:CLASSPATH

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径) 

2.5 验证生效

分别输入java,javac,java -version,javac -version命令以验证环境变量是否生效

2.6 注意事项

有个事情要特别注意,千万不要把swingbench放到中文目录下,否则可能点击后无反应,切记! (java和swingbench目录就尽量不要有中文)

三、执行压测

3.1 在wind7上运行swingbench\winbin下的oewizard.bat脚本

  • oewizard :安装一个简单的订单输入架构,用于创建繁重的写入工作负载
  • shwizard :安装用于创建分析工作负载的简单星型架构
  • jsonwizard :安装用于创建JSON CRUD工作负载的简单JSON模式
  • tpcdswizard :安装类似 TPC-DS 的模式,用于创建复杂的分析工作负载
  • tpchwizard :安装类似 TPC-H 的架构,用于创建中等复杂度的分析工作负载
  • moviewizard :安装一个 Movie Stream 架构,该架构主要具有类似 OLTP 的事务,但也使用 AQ 分片队列来模拟微服务中使用的事件。

该向导将引导您完成可以为数据库架构的配置指定的各种选项。使您能够定义其大小以及要使用的 Oracle 数据库的功能,甚至要在数据生成中使用多少个线程。完成后,它将创建用户、表、逻辑并将数据直接生成到数据库中。在完成数据生成后,它将对表进行索引和分析。它的最后一步是验证架构,以确保所有内容都已正确创建。如果没有,则可以使用命令行工具来重建某些方面,例如索引或存储过程


也可以通过命令创建:

./oewizard -cl -create -cs //localhost/PDB1 -u soe -p soepassword -scale 50 -tc 32 -dba "sys as sysdba" -dbap welcome1 -ts +DATA上述命令将在命令行模式下运行向导,设置 username、password、connectstring,比例为 50 (50GB),使用 32 个线程还设置 dba 用户名、密码和表空间。对于命令行生成,您需要指定命令行上所需的所有参数。

有关向导的所有可能命令行参数的完整列表,请运行以下命令

./oewizard -h


点击NEXT

3.2 选择Version2.0下一步

这里选2就行。

3.3 创建测试数据

由于是第一次运行所以我们选择第一个create the order entry创建测试数据,然后点击NEXT。

3.4 编辑数据库信息

connect string的格式为//oracle数据库所在主机的IP地址/oracle数据库的实例名,DBA PASSWORD填sys用户的密码,其他默认
点击next前请确认你的oracle所在主机开启了监听并且监听成功听到了数据库,如果没有满足任一点,点击next后会报错;
还有一点要注意的是虚拟机IP地址和默认网段等配置需要和win7(宿主机)的本地连接的IP信息匹配而不是网络连接的IP信息;如果你在此步一开始因为没有配置好报错,那么请你在修改后关闭此界面再次运行一次,否则有可能无端报错。
然后next

3.5 编辑要创建对象信息

前三项默认,第四项表空间可以按自己的情况进行修改,当前环境为RAC,所以Tablespace’s Datafile位置为+DATA,提前建立好表空间。

3.6 数据库选项

这里的tablespace type选择normal,绝大部分情况下我们都是用的normal。

我选择默认,可根据实际需求修改。NEXT

3.7 选择测试数据大小

根据自己情况选择测试数据的大小,这里我选择1GB,Next。

可以按照它的建议来,cpu密集型的测试数据量0.4g就可以,IO密集型的需要18G,这里注意,临时表空间已经建立好,并且空间要够,否则io密集型的数据索引可能创建失败。

测试要确定对生产没有影响,测试库如果和生产用同一台可能会影响生产库的IO

3.8 选择并行度

选择并行度,这里我选择默认的8。

并行度考虑下主机的实际情况。

3.9 执行finsh建立测试数据

点击finsh开始建立测试数据。建立测试数据时可以监视数据库的alert日志,查看数据库是否在建立数据。你可以在建立测试数据前将oracle数据库的日志组增大以提高效率。

测试数据建立完成后是以下页面,然后关闭。

3.10 运行swingbench\winbin\swingbench.bat脚本

进入swingbench目录,双击swingbench.bat脚本

  • swingbench :是一个图形丰富的前端,使您能够修改所有参数以及运行和监控工作负载。
  • minibench :是一个更简单的前端,使您能够运行工作负载和监控,但必须在命令行中或通过编辑配置文件来设置参数。
  • charbench :是一个仅限命令行的工具,其中所有参数都在命令行上设置,并且延迟和吞吐量等指标被写入标准输出或文件。

charbench 样例

./charbench -c ../configs/SOE_Server_Side_V2.xml -u soe -p soe -uc 4 -cs //localhost/orderentry -min 0 -max 10 -intermin 200 -intermax 500 -v users,tpm,tps,errs,vresp
Author  :	 Dominic Giles
Version :	 2.6.0.1137

Results will be written to results.xml.
Hit Return to Terminate Run...

Time     Users       TPM      TPS     Errors   NCR   UCD   BP    OP    PO    BO    SQ    WQ    WA    
10:58:35 [0/4]       0        0       0        0     0     0     0     0     0     0     0     0     
10:58:37 [4/4]       0        0       0        0     0     248   414   0     0     0     0     0     
10:58:38 [4/4]       8        8       0        0     0     32    213   0     19    209   0     0     
10:58:39 [4/4]       17       9       0        0     19    39    33    0     10    198   0     0     
10:58:40 [4/4]       26       9       0        0     7     12    150   0     10    198   0     0     
10:58:41 [4/4]       37       11      0        93    7     10    109   0     10    198   0     0     
10:58:42 [4/4]       46       9       0        22    7     30    89    0     28    198   0     0

3.11 执行压测

USERNAME:soe
PASSWORD:soe
connectstring:oracle数据库所在虚拟机IP地址\实例名
用户数可自己根据实际情况修改,最后点击上图中红色圆形标注按钮,开始压力测试。

 如果将每个交易的最小间隔时间改为 0ms,最大间隔时间改为 0ms,那么 Number of users 建议设置为 CPU 核数的 2~4 倍。我们知道每个连接到 oracle 的用户都将分配 PGA,所以这里应该是理解为并行度。

 如果将每个交易的最小间隔时间改为 5ms,最大间隔时间改为 30ms,那么为了能够测试出最佳的TPS值,那么需要不断调整Number of users数,直到获取一个稳定且最佳的值为止。

如果将每个交易的最小间隔时间改为 0ms,最大间隔时间改为 0ms,那么 Number of users 建议设置为 CPU 核数的 2~4 倍。我们知道每个连接到 oracle 的用户都将分配 PGA,所以这里应该是理解为并行度。

如果将每个交易的最小间隔时间改为 5ms,最大间隔时间改为 30ms,那么为了能够测试出最佳的TPS值,那么需要不断调整Number of users数,直到获取一个稳定且最佳的值为止。

SwingBench 附带的代码包括 7 个基准测试,OrderEntry、SalesHistory、TPC-DS Like、TPC-H Like、JSON、Movie Stream 和 StressTest。

介绍:https://www.dominicgiles.com/swingbench/

四、删除测试对象

压力测试完毕后,可以将soe用户及其数据文件和表空间删除。

[oracle@rac1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sun Sep 24 03:54:21 2017

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,

Data Mining and Real Application Testing options

SQL> drop user soe cascade;

User dropped.

SQL> drop tablespace soe INCLUDING CONTENTS;

Tablespace dropped.





「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论