测试架构测试OceanBase集群由3台服务器组成,数据表有3个副本,副本之间通过Paxos协议进行日志同步,确保任何单机故障不丢失数据;另有3台相同配置的服务器作为测试客户端。
在测试过程中,OceanBase集群中只有一台服务器节点(上图中的机器A)对外提供读、写服务,其他两个节点不对外提供服务,仅进行日志同步和应答(Paxos协议),以满足高可用的需求。3个测试客户端只连接集群中对外提供服务的数据库节点(机器A)进行测试。
测试程序采用sysbench 0.5版本。
机器配置
CPU: Intel(R) Xeon(R) CPU E5-2682 v4 2.50GHz * 2 ( 32
Core/64 Thread)
Memory: 512GB (16 * 32 GB, 2133 MHz)
Disk: PCIe SSD ( 6.4TB * 3)
NIC: 10Gb * 2
上述配置的机器共6台,其中3台运行OceanBase服务;3台运行测试客户端程序。
网络环境
客户端和 OceanBase服务器之间的 RTT
rtt min/avg/max/mdev =
0.047/0.052/0.069/0.004 ms
三台OceanBase服务器之间的 RTT
rtt min/avg/max/mdev =
0.050/0.054/0.073/0.010 ms
测试工具及参数设置
sysbench --mysql-host=***.***.***.***
--mysql-port=*** --mysql-db=*** --test=insert.lua --oltp-tables-count=10
--oltp_table_size=0 --max-time=180 --max-requests=0 --report-interval=1
--num-threads=1000 --mysql-user=*** --db-ps-mode=auto --oltp-read-only=off
sysbench --mysql-host=***.***.***.***
--mysql-port=*** --mysql-db=*** --test=select.lua --oltp-tables-count=10
--oltp_table_size=1000000 --max-time=180 --max-requests=0
--report-interval=1 --num-threads=1000 --mysql-user=*** --db-ps-mode=auto
--oltp-read-only=off
sysbench --mysql-host=***.***.***.***
--mysql-port=*** --mysql-db=*** --mysql-user=*** --report-interval=1
--test=oltp.lua --db-ps-mode=auto --num-threads=2000
--oltp-tables-count=10 --oltp_table_size=10000000 --max-time=180
--max-requests=0 --rand-type=uniform run
主要测试参数含义如下:
三种测试场景表数量都是10张,测试时间均为180秒;
INSERT、SELECT两个场景的客户端线程数是3000个(1000 * 3),OLTP场景的客户端线程数是6000个(2000 * 3);
INSERT场景,测试前表中无数据,测试完成时表的总行数超过1亿8千万;SELECT场景单表行数为100万;OLTP场景,测试前单表行数为1000万;
性能结果
数值格式:括号前面数字是 QPS/TPS;括号内第一个时间是平均 RT;括号内第二个时间是 95% RT;OLTP 的 RT 是整个事务的,包含了 18 条语句。