阿里云ECS实例上自建oracle性能评测

1 前言

每种测试工具都有其优点和缺点,本次测试将采用两种工具进行测试数据库部分,借助软件本身提供的方法进行测试,没有对特殊的业务进行逻辑测试。本次测试并不太关注业务表现的等待和性能问题,重点在于数据库运行在云主机所能承受的压力,以及cpu、内存、磁盘在压力期间的性能数据,业务测试返回的TPS、IOPS、RT等数据,以求对oracle运行在云主机提供参考。

2 测试工具

1、Sysbench,是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。Sysbench对于绑定变量的支持存在bug,但它的脚本都是lua语言写的,完全可以自行设计和定制业务逻辑进行测试。 安装方法见《附录9.1》

2、swingbench,是Oracle UK的一个员工在一个被抛弃的项目的基础上开发的。Swingbench可 以执行4种不同的标准测试(benchmark),拥有三种前端展示方式。Swingbench的开发目的主要是用来展示RAC的负载和测试,但也可用于单实例环境。 安装方法见《附录9.2》 两种方法均在测试机上作为客户端对数据库进行压力测试。

3 测试环境

测试阿里ECS+SSD+ORACLE的运行情况。 服务器端配置

103034_qc6O_1464083.png

4 测试方法

Oracle redolog 建议和数据盘分开,本次测试将测试redolog和数据分开存放为主,并测试redolog和数据在同一磁盘的一组数据作为对比。因为表的数量少并发数越大,造成竞争和冲突率就大幅度上升,测试有随机性,因此数据并不能准确反映应用的具体情况,具体应用上线前建议根据业务逻辑设计LUA脚本或者Swingbench测试程序。

1、Sysbench Sysbench数据量初始化10张表,每张表100万条数据,每次测试最大访问条目是1000万,随机进行OLTP的读写更新和删除,并发数据为50、100、200、300、400、500并发值。

2、Swingbench Swingbench也是通过脚本建立测试数据库,相比Sysbench比较全面,从表空间、schema soe是一套订单业务逻辑,同时可以设置并发连接的登陆属性—长连接还是短连接。同样,也进行50、100、200、300、400、500并发值测试。

5  Sysbench进行OS基准测试

1、 Cpu,通过计算最大素数的方式查看cpu的计算速度 /home/oracle/sysbench-0.5/sysbench/sysbench_ora --test=cpu --cpu-max-prime=20000 run total time: 36.4537s

2、 内存,测试内存的吞吐率 /home/oracle/sysbench-0.5/sysbench/sysbench --test=memory --num-threads=16 --memory-block-size=8192 --memory-total-size=1G run ----------------------------------------------------------------------------------

1024.00 MB transferred (2762.18 MB/sec)

3、 磁盘io,测试iops和吞吐率。

 /u01 数据盘

/home/oracle/sysbench-0.5/sysbench/sysbench --test=fileio --num-threads=16 --init-rng=on --file-total-size=5G --file-test-mode=rndrw run

 -----------------------------------------------------------------------------

5368709120 bytes written in 63.74 seconds (80.33 MB/sec). Read 93.734Mb Written 62.516Mb Total transferred 156.25Mb (31.643Mb/sec)

/u02 redolog

/home/oracle/sysbench-0.5/sysbench/sysbench --test=fileio --num-threads=16 --init-rng=on --file-total-size=5G --file-test-mode=rndrw run

------------------------------------------------------------------------------

5368709120 bytes written in 96.23 seconds (53.20 MB/sec). Read 93.812Mb Written 62.438Mb Total transferred 156.25Mb (24.582Mb/sec) 1573.25 Requests/sec executed 6

 

测试一:Sysbench Oracle进行压测

 

6.1 准备数据

./sysbench_ora --test=/home/oracle/sysbench/tests/db/lua/oltp.lua \ --db-driver=oracle \

--oltp-table-name=sysbench \

--oltp-table-size=1000000 \ <<<每张表规格100万行

--oltp-tables-count=10 \ <<<共10张表 --oracle-db=oradb \ <<<这是TNS的配置,SLB负载的TNS是oradbslb

--oracle-user=sysbench \

--oracle-password=XXXX \

--max-time=900 \ <<<测试时长

--max-requests=10000000 \<<<最大访问1000万行

--num-threads=40 \ --report-interval=10 \ prepare

6.2 压测

--压测语法

./sysbench_ora --test=/home/oracle/sysbench/tests/db/lua/oltp.lua \ --db-driver=oracle \

--oltp-table-name=sysbench \

--oltp-table-size=1000000 \

--oltp-tables-count=10 \

--oracle-db=oradb \

--oracle-user=sysbench \

--oracle-password=XXXX \

--max-time=900 \

--max-requests=10000000 \

--num-threads=40 \

--report-interval=10 \ run

--/50并发 transactions: 204610 (227.32 per sec.) read/write requests: 3682980 (4091.84 per sec.) response time: min: 24.70ms avg: 175.88ms max: 1070.85ms approx. 95 percentile: 256.37ms

--/100并发 transactions: 800926 (222.47 per sec.) read/write requests: 14416668 (4004.41 per sec.) response time: min: 20.03ms avg: 359.54ms max: 1766.33ms approx. 95 percentile: 543.96ms

--/200并发 transactions: 115286 (192.01 per sec.) read/write requests: 2075148 (3456.25 per sec.) response time: min: 84.64ms avg: 831.56ms max: 2552.42ms approx. 95 percentile: 1261.25ms

--/300并发 transactions: 121441 (202.12 per sec.) read/write requests: 2185938 (3638.24 per sec.) response time: min: 19.48ms avg: 1573.34ms max: 5466.92ms approx. 95 percentile: 2504.40ms

--/400并发 transactions: 121441 (207.12 per sec.) read/write requests: 2185938 (3638.24 per sec.) response time: min: 19.48ms avg: 1573.34ms max: 5466.92ms approx. 95 percentile: 2810.40ms

--/500并发 由于oltp.lua脚本表少并发太多对象争用太明显,测试执行失败,但我们看到iops、tps数值稳定,rt跟线程多少有关。

 7 测试二:Swingbench对Oracle进行压力测试

Swingbench通过建立soe用户,模拟产品、订单业务,可以自定义数据量大小,本次测试生成10G左右的数据文件。 --/并发50

105139_RddQ_1464083.png

105154_24op_1464083.png

105203_mYCz_1464083.png

--/并发100

105223_OJ1P_1464083.png

105247_VEzD_1464083.png

105255_aYWZ_1464083.png

此时产生了大量的log file sync和log file switch (checkpoint incomplete),redolog现在是6组256m,由于commit频繁,调整为512M,9组。 --/并发200

105321_WaeD_1464083.png

105444_7XWf_1464083.png105452_GnFK_1464083.png

此时测试一组redolog和数据在同一磁盘的情形

105502_dZTe_1464083.png

105515_pUeS_1464083.png

可以看到cpu的io wait 比redo分开存放时明显上升。 现在修改一下swingbench的读写权重,提高读的比例,并发依然是200

105526_sEdt_1464083.png

105534_73uK_1464083.png105555_ETF5_1464083.png

磁盘io达到27M/s,TPS达到1839

 --/并发300

105604_1wJe_1464083.png

105611_8evA_1464083.png

--/并发400

105625_ccBB_1464083.png

--/并发500

105636_XzHQ_1464083.png

8 评测结果 8.1 Sysbench的测试总结

Sysbench:iops

105734_ZGDE_1464083.png

Swingbench的测试效果要比Sysbench的好,Sysbench适合自定义业务逻辑和编辑lua脚本。但Sysbench的测试结果也有一些参考: 1、 Redolog和和数据分开存放,从磁盘io的截图可以看到reodlog所在的磁盘(dev252-16/dev/vdb1)TPS非常高,放在数据盘势必互相影响。 2、 对于批量小io的oltp业务,业务的频繁访问特性必须从业务逻辑设计上保证其性能,其次才是主机性能、数据库性能方面的优化配合。

 

8.2 Swingbench的测试总结

Swingbench:

105750_hlPb_1464083.png

同时收集了awr报告的数据 并发 逻辑读/秒

105800_5eQy_1464083.png

1、iops在25000左右对于读写混合模式是一个理想值,只读时能达到50000以上。

2、cpu成为oltp环境的瓶颈,在400并发时性能严重不足,这时应考虑添加cpu计算能力

3、高并发环境redo和数据文件的IO都比较大,redolog同步和切换又影响数据的访问和变化,因此redolog和数据文件分开存放,而且redolod更需要快速读写的磁盘。通过swingbench的数据可以看到,磁盘IO压力全集中在一个磁盘,而且IOPS明显上升,TPS下降,响应时间增加,cpu等待也增高。

8.3 评测总结

结合以上的数据库性能表现以及云上Oracle压测数据来看,云主机的性能根据业务场景进行选择,中配可以支持300以内的并发,如图:指标折线图,随着并发的增长,iops、cpu、tps会达到一个峰值,此时就是提升性能的时候。 redolog和数据库盘建议分开,同时配置HA方案,可选ADG(Active Dataguard 实时同步并可以支持查询)通过业务指定部分查询到Dataguard的只读节点,分散压力。 建议进行实际业务模拟测试,以观察业务在云上的表现,对ECS的选型和oracle架构进行评估。

参考《附录 9.3 ECS官方性能指标》 指标折线图

133946_tfUw_1464083.png

9 附录

9.1 Sysbench的安装

版本:0.5

测试方法:OLTP、LUA

root用户安

 $export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 $./autogen.sh

$./configure --with-oracle --without-mysql --without-drizzle

$make ORA_LIBS="-L$ORACLE_HOME/lib -lclntsh" ORA_CFLAGS="-I

$ORACLE_HOME/rdbms/demo –I

$ORACLE_HOME/rdbms/public"

$make install

 

9.2 Swingbench的安装

其安装介质下载地址: http://www.dominicgiles.com/swingbench.html 安装方式: 1. 确保服务器上安装配置了JDK1.6以上 2. 下载swingbench,解压即可

 

9.3 ECS官方性能指标

Cpu系列 I 高配是16核64G,系列II 可以达到32核 128G。 SSD云盘4KB I/O块大小时随机读写IOPS高达12000、512KB I/O块大小时顺序读写吞吐量高达300MB。

 

转载于:https://my.oschina.net/u/1464083/blog/751658

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值