1 背景描述
针对目前的某 oracle 核心库升级到 19c 的项目,通过对不同架构下的 rac 进行压力测试,最终确定升级后生产环境的架构选择。基于此目的,对于压测结果着重分析集群相关的指标。
2 压测方案说明
利用工具 swingbench 进行测试,swingbench 是一个免费的负载生成器和基准测试工具,其支持 oracle 数据库(11g、12c、18c、19c),以前写过一篇压测工具的使用,。swingbench 的开发目的主要是展示 rac 的负载和测试,也可用于单实例环境。swingbench 模拟了一套订单业务逻辑,通过创建 soe 用户,模拟产品和订单业务,然后自定义数据量 50g 的大小,本次测试生成 50gb 的业务数据,在准生产环境新 19c 物理机下模拟并发数为 5000 的并发测试。四台物理机版本和数据库配置如下:
节点 ip | os | cpu/memory | sga/pga |
---|---|---|---|
192.16.75.131 | rhel7.8 | 144c/512g | 200g/50g |
192.16.75.132 | rhel7.8 | 144c/512g | 200g/50g |
192.16.75.133 | rhel7.8 | 144c/512g | 200g/50g |
192.16.75.134 | rhel7.8 | 144c/512g | 200g/50g |
192.16.75.131 和 192.16.75.132 位于同城 a 中心,利用存储双活技术,192.16.75.133 和 192.16.75.134 在距离不远的同城 b 中心,构建出一套基于补丁 ru15 的 19c 四节点 rac。数据库参数也是根据最佳参数实践进行配置,具体参数可参考:https://www.modb.pro/doc/99630
四个压测方案分别为:
1)、生产环境使用同城双中心共 4 个节点的 rac,ip 分别为192.16.75.131、192.16.75.132、192.16.75.133、192.16.75.134,进行连接数为 5000 并发压力测试,共计 50 分钟;
2)、生产环境使用同城 a 中心 2 个节点的 rac,分别为 192.16.75.133、192.16.75.134,进行 5000 并发压力测试,共计 50 分钟;
3)、生产环境使用同城 a 中心、同城 b 中心各 1 个节点的 rac,分别为192.16.75.131、192.16.75.133,进行 5000 并发压力测试,共计 50 分钟。
4)、生产环境使用同城 a 中心 2 个节点、同城 b 中心 1 个节点的 rac,分别为192.16.75.131、192.16.75.132、192.16.75.134,进行 5000 并发压力测试,共计 50 分钟。
节点 ip | 方案一 | 方案二 | 方案三 | 方案四 |
---|---|---|---|---|
192.16.75.131 | √ | √ | √ | |
192.16.75.132 | √ | √ | ||
192.16.75.133 | √ | √ | √ | |
192.16.75.134 | √ | √ | √ |
3 压测结果分析
3.1 双中心 4 节点 rac
测试时间 50 分钟,5000 并发会话连接,测试过程中观察到 tps(吞吐量)、iops(每秒io读写次数)、rt(响应时间)、cpu使用情况等数据,结果如下表:
tps | rt | ipos | 平均 cpu 使用率 | 平均活跃会话 | 集群等待时间 |
---|---|---|---|---|---|
17567 | 123796 | 1148598 | 99% | 1500 | 489312 |
另外针对数据库指标分析如下:
如上图总体资源利用率有倾斜,4 节点压力并不均匀,swingbench 看来还是压测单节点比较好。
如上图集群相关等待事件汇总情况,平均等待 489,312.23 秒,总计 1,957,248.90 秒,占 db time 的 14.24%。
如上图集群相关等待事件明细情况,4 节点压测时,在 top event 中共出现 8 种集群类等待事件,分别为 gc buffer busy acquire、gc current block busy、gc cr multi block mixed、gc cr block lost、gc cr block 3-way、gc cr block 2-way、gc current block lost、gc current grant 2-way。
3.2 同城 a中心 2 节点rac
测试时间 50 分钟,5000 并发会话连接,测试过程中观察到 tps(吞吐量)、iops(每秒 io 读写次数)、rt(响应时间)、cpu 使用情况、集群等待时间等数据,结果如下:
tps | rt | ipos | 平均 cpu 使用率 | 平均活跃会话 | 集群等待时间 |
---|---|---|---|---|---|
16435 | 104459 | 1189467 | 88% | 2300 | 1586569 |
另外针对数据库指标分析如下:
如上图总体资源利用率,2 节点压力较均匀。
如上图集群相关等待事件汇总情况,平均等待 1,586,569.06 秒,总计3,173,138.13 秒,占 db time 的 18.89%。
如上图集群相关等待事件明细情况,同城 a 中心 2 节点压测时,在 top event 中只出现 4 种集群类等待事件,分别为 gc buffer busy acquire、gc current block busy、gc cr block lost、gc cr block 2-way。
3.3 同城 a、同城 b 各 1 节点
测试时间 50 分钟,5000 并发会话连接,测试过程中观察到 tps(吞吐量)、iops(每秒io读写次数)、rt(响应时间)、cpu 使用情况等数据,结果如下:
tps | rt | ipos | 平均 cpu 使用率 | 平均活跃会话 | 集群等待时间 |
---|---|---|---|---|---|
16691 | 110489 | 1528353 | 99% | 2200 | 4263328 |
另外针对数据库指标分析如下:
如上图总体资源利用率,2 节点压力较均匀。
如上图集群相关等待事件汇总情况,平均等待 4,263,328.07 秒,总计 8,526,656.15 秒,占 db time 的 61.59%。
如上图集群相关等待事件明细情况,同城 a、同城 b 各 1 节点压测时,在 top event中出现了7种集群类等待事件,分别为gc buffer busy acquire、gc current block busy、gc cr block lost、gc cr block 2-way、gc current grant busy、gc current grant 2-way、gc cr grant busy。
3.4 同城 a 中心 2 节点、同城 b 1节点
测试时间 50 分钟,5000 并发会话连接,测试过程中观察到 tps(吞吐量)、iops(每秒io读写次数)、rt(响应时间)、cpu 使用情况等数据,结果如下:
tps | rt | ipos | 平均 cpu 使用率 | 平均活跃会话 | 集群等待时间 |
---|---|---|---|---|---|
16691 | 110489 | 1528353 | 99% | 2200 | 4263328 |
另外针对数据库指标分析如下:
如上图总体资源利用率,3节点压力也较均匀。
如上图集群相关等待事件汇总情况,平均等待 4,146,727.87 秒,总计 12,440,183.62 秒,占 db time 的 87.13%。
如上图集群相关等待事件明细情况,同城 a 中心 2 节点、同城 b 中心 1 节点压测时,在 top event 中出现了 9 种集群类等待事件,分别为gc buffer busy acquire、gc cr block lost、gc current block busy、gc current grant busy、gc cr block 3-way、gc cr block 2-way、gc current grant 2-way、gc current block 2-way、gc current block lost。
4 压测结果分析汇总
tps | rt | ipos | 平均 cpu 使用率 | 平均活跃会话 | 集群等待时间 | total db time | 集群等待时间 db time 占比 | |
---|---|---|---|---|---|---|---|---|
双中心 4 节点 | 17567 | 123796 | 1148598 | 100% | 1500 | 489312 | 229022 | 14.24% |
同城 a 中心 2 节点 | 16435 | 104459 | 1189467 | 88% | 2300 | 1586569 | 279897 | 18.29% |
同城 a 同城 b 各 1 节点 | 16691 | 110489 | 1528353 | 99% | 2200 | 4263328 | 230743 | 61.59% |
双中心 3 节点 | 16691 | 110489 | 1528353 | 99% | 2200 | 4263328 | 237950 | 87.13% |
根据上表汇总结果,从集群相关指标来看,4 节点时集群等待事件平均等待时间为 489,312.23 秒,等待时间最小,同中心 2 节点平均等待时间为 1,586,569.06 秒,不同中心 2 节点平均等待时间为 4,263,328.07 秒,是同中心的三倍,双中心 3 节点平均等待时间为 4,146,727.87 秒,也是同中心 2 节点的三倍;从集群类等待事件的种类来看,4 节点压测时 top event 中出现了 8 种不同的集群类等待事件,同中心 2 节点压测只出现了 4 种不同的集群类等待事件,而不同中心 2 节点压测则出现了 7 种,双中心 3 节点压测出现了 9 种不同的集群类等待事件。
针对以上压测数据以及上表相关指标分析,可选方案要么为同中心2 节点 rac,要么为双中心 4 节点 rac;最后再结合目前生产数据库的实际情况,综合评估推荐使用同中心两节点 rac 作为最终的生产架构。本次测评则使用同城 a 两节点 rac 及同城 b 单机 adg 架构,此架构性能最优且有较好的高可用保障, 但是面对机房级的灾难时,要比双中心 4 节点 rac 稍逊一筹。由于 rac 数据库在使用的过程中,不可避免的会进行节点间数据(数据块、消息)传输,这对于不同机房的两节点 rac 来说可能会是个很大的压力,当然 4 节点中的各个节点交叉传输数据也是不可避免的需要跨机房进行,这块对于私网要求是很高的。
最后,由于个人经验不足,第一次使用 swingbench 进行 rac 压力测试,存在一定的实验偏差,对于 awr 报告的阅读及指标分析也存在一定的不足之处,如果您有不同意见或建议,可以添加我个人微信【jiekexu_dba】一起交流,近期打算新开通一个微信交流群,由于文章缺少留言功能,可直接在微信群中交流数据库相关技术和文章,也会邀请更多技术大牛一起交流,相互学习,谢谢!
全文完,希望可以帮到正在阅读的你,如果觉得此文对你有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
欢迎关注我的公众号【jiekexu dba之路】,第一时间一起学习新知识!
————————————————————————————
公众号:jiekexu dba之路
csdn :https://blog.csdn.net/jiekexu
墨天轮:https://www.modb.pro/u/4347
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————