目 录
图表目录
Swingbench安装测试指导书
关键词Key words:Oracle swingbench
摘 要Abstract:本文主要介绍swingbench的安装和测试步骤,对于数据库的基础性能测试有借鉴意义。
缩略语清单List of abbreviations:
图表 1 缩略语清单
1. 概述
SwingBench是由Oracle UK的员工Dominic Giles在一个被抛弃项目的基础上开发,主要用于Oracle数据库的性能测试,最新版本为2.5,该测试套件为免费工具,可以在作者官方博客自由下载。
SwingBench 是基于Java开发的测试套件,可以测试Oracle 10g,11g,12c,并支持Oracle RAC,以及TimesTen内存数据库的测试。
SwingBench工具(2.3版本以后)中包含Order Entry、Calling Circle、Stress Test和Sales History 4种业务模型,其中Order Entry模型最为常用,是一种典型的OLTP业务模型。拥有三种前端展示方式Swingbench/Charbench/Minibench,其中 Charbench是字符模式的,另外两种是GUI模式的。另外还可以通过ClusterOverview聚合显示所有的结果。
支持的4种测试模型
2. 安装
Swingbench使用Java开发,windows,linux安装和使用步骤类似,此处以windows为例。
2.1 软件准备
软件 |
下载地址 |
说明 |
SwingBench 2.5 |
||
JDK |
http://www.oracle.com/technetwork/java/javase/downloads/index.html |
JDK 6或者7 |
2.2 安装JDK
Step1: 双击安装文件,进行弹出的界面,点击“Next”,进行安装
图表 2 java安装(1)
Step2: 选择安装目录,点击“Next”
图表 3 java安装(2)
Step3: 安装完成“Close”关闭
图表 4 java安装(3)
2.3 配置环境变量
Step1: 打开系统配置界面,选择“Advanced system settings”
图表 5 java环境变量设置(1)
Step2: 选择“Environment Variables”
图表 6 java环境变量设置(2)
Step3: 系统变量,界面选择“New”,创建JAVA_HOME,CLASSPATH
图表 7 java环境变量设置(3)
JAVA_HOME=C:/Program Files/Java/jdk1.7.0_51
CLASSPATH=.;%JAVA_HOME%/lib/tools.jar
Step4: 选择“Edit”修改“Path”变量,添加JDK bin路径
图表 8 java环境变量设置(4)
PATH变量最后添加;%JAVA_HOME%/bin
Step5: 运行javac命令检查是否配置成功
图表 9 java安装成功
注:x64版本最新的JDK一般不需要配置环境变量,直接测试javac即可。
2.4 安装Swingbench
Step1: 解压缩Swingbench安装包,即安装成功。
图表 10 解压swingbench
2.5 数据库准备
登陆数据库(oracle用户)
sqlplus / as sysdba
检查temp文件大小,默认一般较小需要重新设置(默认30MB),通过如下命令增加至30GB,一般测试够用了。
alter tablespace TEMP add tempfile '/oradata/orcl/temp02.dbf' size 10G;
alter tablespace TEMP add tempfile '/oradata/orcl/temp03.dbf' size 10G;
alter tablespace TEMP add tempfile '/oradata/orcl/temp04.dbf' size 10G;
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 8
gcs_server_processes integer 0
global_txn_processes integer 1
job_queue_processes integer 1000
log_archive_max_processes integer 4
processes integer 2500
上面的processes值建议设大一些,以免测试用户数增多导致无法运行。
3. Order Entry 测试
Order Entry:接收客户订单并把客户所需要的东西转换为企业惯用的术语的过程,最简单的情况是生成成品的发货文件,较为复杂的情况是描述包括按订单生产产品的工程要求的一系列活动。
3.1 数据生成
Step1: 进入运行目录winbin(linux bin)修改配置文件oewizard.xml
图表 11修改配置文件oewizard.xml
Step2: 修改连接数据库dba用户名密码,修改需要生成的用户名,密码,表名和密码,表空间数据文件位置,连接字符串,此处只修改dba用户名密码和连接字符串。
图表 12修改dba用户名密码和连接字符串
注:此处不使用asm,表空间数据文件的位置也要修改。
connectstring://数据库host或者IP//SID(全称)
此处不修改可以在GUI界面修改
Step3: 运行“oewizard.bat”,启动配置向导
图表 13运行“oewizard.bat”
Step4: 保持默认,选择2.0
图表 14选择2.0
Step5: 创建Order Entry Schema 测试场景
图表 14选择create
Step6: 设置连接字符串,以及dba用户名和密码
图表 14输入连接字符串
Step7: 输入要创建测试所需的用户名密码,表空间及数据文件名称和位置。
图表 17输入连接字符串
注:如果不使用ASM此处修改为
图表 18 Schema Details
Step8: 设置数据库创建的细节信息,无特殊要求保持默认即可
图表 19 Database Option
Step9: 输入生成测试数据的大小
图表 20 Sizing Details
注:设置大小根据数据库内存综合考虑,测试IO性能将测试数据大小要大于数据库内存设置。测试CPU性能,将数据文件较小即可。
Step10: 点击“Finish”开始数据导入
图表 21 完成设置
开始导入数据
图表 22 数据正在导入
日志窗口显示进度
图表 23 数据导入日志
Step11: 导入完成点击“OK”,关闭所有窗口
图表 24 数据导入完成
注:此处根据选择的数据规模不同,导入的时间不同,1G,需要15分钟左右。
3.2 性能测试
Step1: 在winbin目录(linux bin)找到文件swingconfig.xml
图表 25 swingbench.xml配置文件
Step2: 修改配置文件/swingbench/winbin/swingconfig.xml,
<Name>"Order Entry (PLSQL) V2"</Name>
<Comment>""</Comment>
<Connection>
<UserName>soe</UserName>
<Password>soe</Password>
<ConnectString>//192.135.183.9/orcl</ConnectString>
<DriverType>Oracle jdbc Driver</DriverType>
<Properties>
<Property Key="StatementCaching">50</Property>
<Property Key="FetchSize">20</Property>
</Properties>
</Connection>
connectstring:数据库连接字符串,//host//SID。
username:测试数据生成的用户名。
password:测试数据生成的数据库用户密码
注:此处可以不修改,在GUI界面修改。
Step3: 运行swingbench.bat文件
Step4: 修改测试用户信息,如果配置文件已修改此处保持默认
图表 26 配置swingbench.xml(1)
Step5: 修改测试信息,这里主要是用户数等信息,如果配置文件已修改此处保持默认
图表 27 配置swingbench.xml(2)
注:测试时间如果不设置默认是手动停止或者执行到测试崩溃退出。
Step6: 设置监控信息,输入数据库服务器的账户密码
图表 28 配置监控信息
Step7: 设置测试模型各个部分的比例,无特殊要求,保持默认
图表 26 配置测试模型
Step8: 选择,保存配置。
图表 30 保存运行按钮
Step9: 点击,开始测试
Step10: 查看测试监控
图表 31 运行图示
Step11: 点击,停止测试。
Step12: 保存测试结果
图表 32 保存测试结果
Step13: 生成,查看测试结果
Cmd命令行下运行
bmcompare.bat –r results02.xml
注:此处可以填写多个results文件,生成对比测试结果。
4. Calling Circle 测试
Calling Circle模拟一个在线电信应用的SQL。它需要在每次运行之前生成数据文件,并且从数据库服务器端复制到负载生成器,通常需要1GB到8GB磁盘空间。该基准测试是CPU密集型的。经验表明,对于数据库服务器的每2个CPU,负载生成器至少需要1个CPU。它用于测试CPU和内存,不需要强大的I/O子系统。它可以通过bin目录中的“ccwizard”进行安装。
4.1 数据生成
Step1: 进入运行目录winbin(linux bin)运行ccwizard.bat
图表 33 运行ccwizard.bat文件
Step2: 启动向导,点击“Next”
图表 34 ccwizard安装向导
Step3: 选择创建Calling Circle测试场景
图表 35 创建场景
Step4: 配置数据库信息
图表 36 配置数据库信息
注:connectstring://数据库host或者IP//SID(全称)
Step5: 配置创建的测试场景信息,要创建的账户信息,表空间存储位置
图表 37 添加账户信息,表空间存储位置
Step6: 设置测试数据的规模
图表 38 设置创建的数据文件大小
Step7: 配置完成,点击“Finish”开始数据导入
图表 39 设置完成开始创建测试数据
弹出日志窗口,查看导入进度
图表 40 日志文件
Step8: 场景创建成功,关闭所有窗口
图表 41 测试文件创建成果
注:1G大约需要3~5分钟。
4.2 生成测试脚本
1、 关闭数据生成成功的页面,再次运行ccwizard.bat脚本,点击“next”选择,之后选择“Generate Data for Benchmark Run”,之后点击“next”。
图表 42 点击Generate Data
2、 输入生成数据的时候的数据信息,点击“next”,和创建的时候保持一致,若是默认则无需更改,但是注意Connecting String的IP修改。
图表 43 添加账户信息,表空间存储位置
3、 输入Transactions的数量,这里建议100000,测试软件首先为支持这么多交易建立空间,分配位置,一旦交易超出该值测试自动终止,用户数越多,这个值需要越大。
Directory Locations:这里填写本地创建脚本的目录,默认为winbin下的data目录,设置完成后点击“finish”开始创建脚本。
图表 44 transactions设置
4、 完成之后可以看到winbin/data/目录下三个生成的文件,这三个文件是测试需要的。
图表 45 生成的三个测试文件
4.3 性能测试
Step1: 启动cmd,输入如下命令,启动Swingbench
swingbench.bat -c "D:/kankan/swingbench25909/swingbench/configs/ccconfig.xml"
Step2: 设置测试数据库信息,主要填写Connecting String字段,需要修改IP地址。
图表 46 配置数据库信息
Step3: 配置测试相关信息,设置用户数等信息,其他的可以保持默认。
图表 47 负责信息设置,用户数设置
Step4: 设置测试模型各个部分的比例,这里默认即可。
图表 48 测试模型设置
Step5: 设置测试脚本文件目录(测试环境配置),即上面生成的测试脚本文件,也可以通过配置文件修改,配置文件在/swingbench/configs/cconfig目录下的ccconfig.xml。
图表 49 测试环境参数设置
<EnvironmentVariables>
<Variable Key="CC_QUERYPROCESS_FILE_LOC">E:/swingbench25971/swingbench/winbin/data/qryccprocess.txt</Variable>
<Variable Key="CC_UPDATEPROCESS_FILE_LOC">E:/swingbench25971/swingbench/winbin/data/updccprocess.txt</Variable>
<Variable Key="CC_NEWPROCESS_FILE_LOC">E:/swingbench25971/swingbench/winbin/data/newccprocess.txt</Variable>
</EnvironmentVariables>
Step6: 设置监控信息,输入数据库服务器的账户密码
图表 50 ssh参数设置
Step7: 选择,保存配置。
Step8: 点击,开始测试
,测试的过程会不断生成transactions,随着生产数量的增加会超出设置脚本的设置值,这时候将会自动停止,报出如下图示的日志。
图表 51 超出transactions后退出运行退出日志
Step9: 查看测试监控
图表 52 运行监控图
Step10: 点击,停止测试。
Step11: 保存测试结果
Step12: 生成,查看测试结果,但是目前脚本好像有错误,生成结果文件的时候上报一个错误,暂未解决。
bmcompare.bat -r "D:/ swingbench240845/results.xml"
注:此处可以填写多个results文件,生成对比测试结果。
5. Sales History测试
Sales History基于Oracle 11g/12c的示例模式“sh”,用于测试针对大表的负载查询的性能。表是只读的,并且大小能够从1GB扩展到1TB。也可以使用自定义模式创建更小或者更大的模式。
5.1 数据生成
Step1: 运行“shwizard.bat”,启动向导
图表 53 启动向导
Step2: 创建“Sales History”场景
图表 54 创建测试数据库
Step3: 配置测试数据库信息,这里也可以再shwizard.xml的文件中修改。
图表 55 填写数据库配置信息
<DefaultParameters>
<Parameter Key="dbapassword" Value="oracle"/>
<Parameter Key="connectiontype" Value="thin"/>
<Parameter Key="tablespace" Value="SH"/>
<Parameter Key="datafile" Value=""/>
<Parameter Key="dbausername" Value="sys as sysdba"/>
<Parameter Key="connectionstring" Value="//192.135.183.9/orcl"/>
<Parameter Key="username" Value="sh1"/>
<Parameter Key="scale" Value="0.1"/>
<Parameter Key="password" Value="sh1"/>
Step4: 配置测试生成数据信息,默认的时候有时候有SH用户,这里可以修改为sh1等其他的。
图表 56 设置数据库用户名密码及数据库名称
Step5: 设置测试数据规模
图表 57 设置数据库规模
Step6: 设置根据CPU数量设置并行度(2*CPU数量),点击“Finish”
图表 58 设置完成
日志查看导入情况
图表 59 日志
Step7: 导入完成,关闭所有窗口
图表 60 数据库创建完毕
5.2 性能测试
Step1: 启动cmd,输入如下命令,启动Swingbench
swingbench.bat -c "D:/kankan/swingbench240845/swingbench/configs/shconfig.xml"
Step2: 设置测试数据库信息,保持和创建的数据库一致,也可以预先修改配置文件在swingbench/configs/目录下修改shwizard.xml。
图表 61 填写测试数据库信息
<Connection>
<UserName>sh1</UserName>
<Password>sh1</Password>
<ConnectString>//192.135.183.9/orcl</ConnectString>
<DriverType>Oracle jdbc Driver</DriverType>
<Properties>
<Property Key="TcpNoDelay">true</Property>
<Property Key="StatementCaching">50</Property>
<Property Key="FetchSize">20</Property>
</Properties>
Step3: 配置测试相关信息,设置用户数,其他参数可以根据需要设置,也可以默认设置,测试时间默认表示一直测试进行,需要手动停止。
图表 62 测试负载参数设置
Step4: 设置测试模型各个部分的比例,根据需要设置,这里保持默认。
图表 63 测试模型各个部分比例设置
Step5: 设置ssh登陆监控,这里设置测试数据库服务器的IP和用户名密码。
图表 64 测试模型各个部分比例设置
Step6: 选择,保存配置。
Step7: 点击,开始测试
Step8: 查看监控数据
图表 65 测试监控数据
Step9: 点击,停止测试。
Step10: 保存测试结果
Step11: 生成,查看测试结果
bmcompare.bat -r "D:/ swingbench240845/results.xml"
注:此处可以填写多个results文件,生成对比测试结果。
图表 66 生成的测试结果文件
6. Stress Test 测试
主要是压力测试
6.1 数据生成
参考Order Entry 测试数据生成
6.2 性能测试
Step1: 启动cmd,输入如下命令,启动Swingbench
swingbench.bat -c "D:/swingbench240845/swingbench/configs/stresstest.xml"
Step2: 设置测试数据库信息,保持和生成的数据库文件一致。
图表 67 配置数据库文件
Step3: 配置测试相关信息,用户数等信息。
图表 68 配置压力参数
Step4: 设置测试模型各个部分的比例,默认即可。
图表 68 配置模型各个部分比例
Step5: 选择,保存配置。
Step6: 点击,开始测试
Step7: 查看监控数据
图表 70 监控图
Step8: 点击,停止测试。
Step9: 保存测试结果
Step10: 生成,查看测试结果
bmcompare.bat -r "D:/ swingbench240845/results.xml"
注:此处可以填写多个results文件,生成对比测试结果。
附录:
A,swingbench的相关测试参数
1. swingbench GUI上的users:the number of users(threads) that attach to a database and the amount and tye of work they perform. users can dynamically monitor the response times and loadwhich is displayed in a series of graphs.
这里的users是控制同时连接到oracle的用户数量。我们知道每个连接到oracle的用户都将分配PGA,所以这里应该是理解为并行度。
2. min/max think time: 每个交易之间最小/大的思考时间。如果设置min think time,每个交易之间将间隔规定时间。
3. max trans:如果设置将限制最大的交易数量。
4. 最顶端的transaction面板:load: Indicates the "weight" of the transaction in comparison to othe transactions. A higher weight indicates that it more likely to be run.
这个面板主要是可以取消一些固定的交易类型。load这个栏主要是用于调整整个测试中某些交易的权重。例如:browse product主要是select 语句,可以增加他的权重,表示更多的人查询。
关于oewizard中的几个参数:
Number of Customers: 预加载到数据库表中的用户数量。
Number of Orders:预加载到数据库表中的Orders数量。
整个OE的测试是基于9张表的,那么用oewizard预加载数据量不同,测试结果是不是不同呢?
对oracle自己来说,有索引的表性能在大小一定的时候是不会有什么区别的,但是当表的行数达到一定的程度,例如几个亿行,索引性能还不如全表扫描的性能。因此对于OE所允许的范围,我认为表数据大小对性能影响不会很大。
Swingbench是一个压力测试工具,其结果tpmc也是表示每分钟所能做的交易数量。
B,TPMC介绍
按照TPC的定义,流量指标描述了系统在执行Payment、Order-status、Delivery、Stock-Level这四种交易的同时,每分钟可以处理多少个New-Order交易。所有交易的响应时间必须满足TPC-C测试规范的要求。
流量指标值越大越好!
TPMC计算依据
为了方便计算数据库服务器的造型,若约定:
" 系统同时在线用户数为1500人(U1);
" 平均每个用户每分钟发出2次业务请求(N1);
" 系统发出的业务请求中,更新、查询、统计各占1/3;
" 平均每次更新业务产生3个事务(T1);
" 平均每次查询业务产生8个事务(T2);
" 平均每次统计业务产生13个事务(T3);
" 一天内忙时的处理量为平均值的5倍;
" 经验系数为1.6;(实际工程经验)
" 考虑服务器保留30%的冗余;
服务器需要的处理能力为:
TPC-C=U1*N1*(T1+T2+T3)/3*3*经验系数/冗余系数
则应用服务器的处理性能估算为:
TPC-C= 1500*2*(3+8+13)/3*5*1.6/0.7= 274,285 tpmC
数据库服务器关系到整个系统的稳定运行,考虑到高可靠性和高可用性,并注重设备的可扩展性和性价比,系统将配置两台TPC-C值不小于28万的高性能数据库服务器
FAQ
1、 运行Calling Circle测试的时候上报如下错误,说明生成测试脚本的过程中设置的transactions的值太小。
参考资料
1、《Linux下Oracle 11.2 安装说明书》作者吴晨秋 221479
2、《SwingBench Reference and User Guide》是Oracle官方版本2004年版本
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 上一篇:oracle 巡检内容
- 下一篇:oracle 容灾产品 goldengate