DBMS_TEST系统包
📄字数 2.4K
👁️阅读量 加载中...
一、概述
DBMS_TEST 系统包是一个数据库集群内部网络测试包,用于在分布式部署环境中评估各节点之间的通信性能。它通过发送测试消息来检测节点之间的网络延迟、带宽瓶颈和通信效率,为数据库部署、运维、调优提供重要的网络质量指标支撑。
在该系统包中提供了以下接口:
包体函数名 | 简要描述 |
---|---|
TEST_PING_PONG1 | 测试节点间ping时延 |
TEST_PING_PONG2 | 指定数据包大小,测试节点间ping时延 |
TEST_MSG_SEND1 | 测试非可信(不回执)包的发送时延 |
TEST_MSG_SEND2 | 测试可信包的发送时延 |
TEST_RPC_SEND | 测试 RPC 方式发送数据的时延 |
典型应用场景,如:
- 使用TEST_PING_PONG1测试节点间网络基础延迟,验证集群部署前网络质量
- 使用TEST_PING_PONG2模拟大数据传输性能,验证大包传输是否存在延迟或丢包
- 利用TEST_MSG_SEND1和TEST_MSG_SEND2,模拟通信模型选择,对比“可靠、非可靠”消息差异
- 利用TEST_RPC_SEND进行 RPC 性能评估,测试远程调用方式的数据响应效率
二、TEST_PING_PONG1
2.1 功能描述
该接口用于测试节点间 ping 通的时延,并作为返回值返回
2.2 方法声明
sql
FUNCTION TEST_PING_PONG1(
TARG_NID INTEGER,
PACK_NUM INTEGER
) RETURN INTEGER;
2.3 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
TARG_NID | INTEGER | 无 | 否 | 目标节点 |
PACK_NUM | INTEGER | 无 | 否 | 数据包个数 |
2.4 示例
sql
--向2号节点发送50000个数据包,返回总时延
SQL> exec DBMS_TEST.TEST_PING_PONG1(2,50000);
2.5 应用场景
- 场景一:测试数据库节点间网络是否通畅,快速判断节点是否”可连通“
- 场景二:诊断集群异常、负载不均。排查某节点延迟高、宕机或变慢的原因
- 场景三:测试主备间同步链路延迟。主库到备库是否网络阻塞或抖动
三、TEST_PING_PONG2
3.1 功能描述
该接口同样用于测试节点间ping通的时延,并作为返回值返回。与TEST_PING_PONG1接口的区别在于:此接口可以指定数据包大小
3.2 方法声明
sql
FUNCTION TEST_PING_PONG2(
TARG_NID INTEGER,
PACK_SIZE INTEGER,
PACK_NUM INTEGER
) RETURN INTEGER;
3.3 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
TARG_NID | INTEGER | 无 | 否 | 目标节点 |
PACK_SIZE | INTEGER | 无 | 否 | 数据包大小(单位:字节) |
PACK_NUM | INTEGER | 无 | 否 | 数据包个数 |
3.4 示例
sql
--向2号节点发送50000个数据包,指定数据包大小为100字节,总容量:(50000 * 100)字节,返回总时延
SQL> exec DBMS_TEST.TEST_PING_PONG2(2,100,50000);
3.5 应用场景
- 场景一:自定义数据包大小,更贴近实际业务中的数据通信特性。通过设置如 4KB、8KB、64KB 等不同大小的数据包,可用于测试包传输过程中的抖动情况,评估网络在不同负载下的延迟表现。
四、TEST_MSG_SEND1
4.1 功能描述
该接口用于测试非可信(不回执,即不要求对方确认,不保证成功接受)包发送率,返回时间花销
4.2 方法声明
sql
FUNCTION TEST_MSG_SEND1(
TARG_NID INTEGER,
PACK_SIZE INTEGER,
PACK_NUM INTEGER
) RETURN INTEGER;
4.3 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
TARG_NID | INTEGER | 无 | 否 | 目标节点 |
PACK_SIZE | INTEGER | 无 | 否 | 数据包大小(单位:字节) |
PACK_NUM | INTEGER | 无 | 否 | 数据包个数 |
4.4 示例
sql
-- 向2号节点发送50000个数据包,指定大小为200字节,总容量:(50000 * 200)字节
SQL> exec DBMS_TEST.TEST_MSG_SEND1(2,200,50000);
4.5 应用场景
- 场景一:判断集群内部是否能高速发消息,排查网络或消息通道瓶颈
- 场景二:集群新节点上线前压力测试,确保新增节点不会因消息堆积造成网络堵塞
五、TEST_MSG_SEND2
5.1 功能描述
该接口用于测试可信包的发送率,返回时间花销。
5.2 方法声明
sql
FUNCTION TEST_MSG_SEND2(
TARG_NID INTEGER,
PACK_SIZE INTEGER,
PACK_NUM INTEGER
) RETURN INTEGER;
5.3 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
TARG_NID | INTEGER | 无 | 否 | 目标节点 |
PACK_SIZE | INTEGER | 无 | 否 | 数据包大小(单位:字节) |
PACK_NUM | INTEGER | 无 | 否 | 数据包个数 |
5.4 示例
sql
-- 向2号节点发送50000个数据包,指定数据包大小为200字节,总容量:(50000 * 200)字节
SQL> exec DBMS_TEST.TEST_MSG_SEND2(2,200,50000);
5.5 应用场景
- 场景一:验证消息链路是否可靠送达,确保数据库节点间可靠通信未出现丢包或超时
- 场景二:用于故障节点前检测和切换判断。如某节点发送确认延迟或失败,可作为切换依据之一
六、TEST_RPC_SEND
6.1 功能描述
该接口用于测试 RPC 方式发送数据的时延,返回时间花销
6.2 方法声明
sql
FUNCTION TEST_RPC_SEND(
TARG_NID INTEGER,
SEND_SIZE INTEGER
) RETURN INTEGER;
6.3 参数说明
参数名 | 类型 | 取值范围 | 是否可选 | 描述 |
---|---|---|---|---|
TARG_NID | INTEGER | 无, | 否 | 目标节点 |
SEND_SIZE | INTEGER | [1,1000000] | 否 | 数据量(单位:KB) |
提示
SEND_SIZE 不在取值范围内,不进行 RPC 时延测试,直接返回 0
6.4 示例
sql
-- 向2号节点发送50000KB的数据量
SQL> exec DBMS_TEST.TEST_RPC_SEND(2,50000);
6.5 应用场景
- 场景一:测试集群节点间RPC调用是否畅通,确保数据库节点之间的服务调用路径响应及时,无异常延迟