共计 3398 个字符,预计需要花费 9 分钟才能阅读完成。
1 Swingbench 简述
1.1 概述
这是 Oracle UK 的一个员工在一个被抛弃的项目的基础上开发的。目前稳定版本 2.2,最新版本 2.3,基于 JDK1.5。该工具是免费的,可以在作者的网站上自由下载,并且拥有详细的使用文档。除了 Swingbench,作者还开发了两个相关工具: 测试 数据生成工具 DataGenerator 和跟踪文件分析工具 Trace Analyzer。
Swingbench 可以执行 4 种不同的标准测试 (benchmark),拥有三种前端展示方式 Swingbench/Charbench/Minibench,其中 Charbench 是字符模式的,另外两种是 GUI 模式的。另外还可以通过 ClusterOverview 可以聚合显示所有的结果。Swingbench 的开发目的主要是用来展示RAC 的负载和测试,但也可用于单实例环境。最新的 2.3 版本开始支持 TimesTen 内存 数据库 。
下载地址:http://www.dominicgiles.com/downloads.html
作者博客:http://www.dominicgiles.com/blog/blog.html
文档地址:http://www.dominicgiles.com/Swingbench.pdf
目前网络上开源的 oracle 压力测试工具主要是 orabm 和 swingbench, 由于 orabm 不支持 oracle 11g 版本,因此本次测试使用了 swingben 进行了压力测试。另外,swingbench 还能对 rac 进行测试。swingbench 是 UK based oracle Database Solutions group 开发的一个 oracle 压力测试工具,好像是官方废弃的一个项目,官方页面 http://dominicgiles.com/swingbench.html 上可以下载最新的软件版本。swingbench 可以运行在 windows 和 linux 平台,本次以 windows 为例。
2. 环境配置
测试客户端需要安装 JDK,无需安装 oracle client 端
swingbench 的版本为 2.4 安装后路劲如下,因是 windows 下做测试 所以使用 winbin 目录下的批处理文件
主要使用到的是如下三个 bat 文件
3. 测试
3.1 创建测试数据
swingbench 不使用客户数据,而是按自己的规则创建测试数据,(生成的测试数据只能使用一次,测试过后 需要再次测试的话,需要重新创建测试数据,这点做的不好)
到目标目录下 运行 ccwizard.bat 批处理文件
会看到如下界面
点击 next 可以看到如下界面
选择第一个 create the calling…. 创建测试数据
输入你需要测试的数据库的 //ip/sid 以及 sys 用户的密码 –next
前三项不需要修改,为 swingbench 自动创建的 schema,只需要修改 datafile 的存放路径即可。next
选择创建数据的数据量 最小 100M 最大 1TB, 我选择为 10GB 一般需要 40-60 分钟,(和你硬件 io 性能有关)next–finish ok
PS:做测试时要确定对生产库没有影响,因我测试库磁盘和正式庫使用同一台存储,swingbench 在做这个生产测试数据时,占用大量的 IO,使得我的正式庫出现短暂的 IO 等待。赤果果的教训啊。
数据生产结束
3.2 录制脚本
同样运行 ccwizard.bat 批处理文件,选择 generate data for benchmark run 下一步 下一步即可
开始录制测试脚本
录制结束
3.3 基准测试
运行 winbin 下的 swingbench.bat 但是要加参数,才能使用刚才录制的脚本,如图
swingbench.bat -c configfile
出现如此主界面 主要参数设置 好 对应的 connect string,其他的参数建附录 A
将数据库 OS 的 ssh 打开 则可以统计主机的 cpu disk IO 信息
也可以拉出 AWR 报表
设置 insert,update,select 的比例
测试过程
保存测试结果
3.5 测试结果统计对比
结果为 XML 文档
可以利用 bmcompare.bat 对比两个测试结果,语法如图,结果会生产在本地。
附录:
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也是表示每分钟所能做的交易数量。如果预加载的数据越多,而 TX 中所有类型的权重固定的 话,需要调整并行 users 的数量,以取得一个最佳的 tpms 值。我之前测试的结果来看,并行 user 固定,预加载的数据越多,得到的 tpmc 结果越小,我也有点迷糊了,后来仔细分析了之后才发觉,应该相应修改并行 users 的数量。
通过修改 TX panel 里的各个交易类型的权重,也可以得出 oracle 的一些性能参数,例如查询加重,如果 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 万的高性能数据库服务器
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138408.htm