一、目的
使用iSCSI共享块存储(NVMe SSD)搭建Oracle RAC集群,进行性能测试,并对块存储网关进行性能调优,得出测试结果。
二、测试环境
- 测试的Oracle RAC集群拓扑图
客户端*1、RAC服务节点*2、iscsi tgt节点*1
- TPC-C测试工具
BenchmarkSQL:5.0
三、测试过程
1. Oracle RAC集群配置信息:
节点名称 |
存储设备 |
网卡IP配置 |
RAC Instance01 |
Oracle集群两个节点共享存储方式为ASM,ASM磁盘组通过ISCSI方式挂载,共8块盘,包括: (1)OCR磁盘组:10G * 3 (2)DATA磁盘组:500G * 3 (3)FRA磁盘组:500G * 2 |
Oracle集群每个节点配置2张网卡eth0和eth1,其中eth0上配置了public IP,eth1上配置了private IP。部署集群时每个节点再分配好1个VIP,整个集群分配1个scan IP,且都在eth0网卡上。这里测试时集群的scan IP分配在了RAC Instance01节点上。 |
RAC Instance02 |
2. 测试准备
在oracle rac集群上创建测试用户ractester,并给该用户分配了300G表空间进行测试。在oracle客户端使用Benchmarksql工具配置用Scan IP登陆Oracle数据库集群,进行TPC-C测试。修改Benchmarksql工具测试配置文件props.ora:warehouses=1000, loadWorkers=100, newOrderWeight、paymentWeight、orderStatusWeight、deliveryWeight、stockLevelWeight分别设置为45、43、4、4、4。
3. 测试流程
- 预埋数据
./runDatabaseBuild.sh props.ora
- 进行压测
修改配置文件props.ora中的terminals参数,然后运行Benchmarksql脚本。这里依次遍历10、20、50、100、150、200、250。
./runBenchmark.sh props.ora
- 清除数据
./runDatabaseDestroy.sh props.ora
然后对测试模型进行以下优化:
- 优化1:每个DATA磁盘分别使用不同的target,并且修改R2T参数,多核启动target进程,并为各线程绑定不同核。
- 优化2:在优化1的基础上,在iSCSI客户端将每个DATA磁盘的session数量增加至4个。
四、测试结果
1. 优化前测试性能
- TPC-C测试结果
1)各订单时延图:
2)tpmC(NEW_ORDER only)和tpmTotal曲线图:
2. Target、iSCSI参数优化和线程模型优化测试结果
(1)TPC-C测试结果
1)各订单时延图:
2)tpmC(NEW_ORDER only)和tpmTotal曲线图:
3. 客户端增加session测试结果
- TPC-C测试结果
1)各订单时延图:
2)tpmC(NEW_ORDER only)和tpmTotal曲线图:
4. tmpC和tmpTotal曲线汇总图
(1)tmpC曲线对比:
- tmpTotal曲线对比
五、总结
本文使用iscsi tgt网关创建块存储磁盘,挂载到两台主机供Oracle RAC实例使用,并测试数据库的的性能。然后根据测试结果对iscsi tgt网关进行了相关优化:
(1)每个DATA磁盘分别使用不同的target,并且修改R2T参数,多核启动target进程,并为各线程绑定不同核。
(2)在(1)的基础上,在iSCSI客户端将每个DATA磁盘的session数量增加至4个。
根据优化后的测试结果对比,可以发现,在iscsi tgt侧将多块磁盘分配到不同的核上以及在客户端侧增加挂载磁盘的session数量,可以使块存储的性能有较大幅度的提升,优化效果比较明显。