# databench-t-c **Repository Path**: caict-databench/databench-t-c ## Basic Information - **Project Name**: databench-t-c - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-24 - **Last Updated**: 2024-02-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 事务型数据库稳定性测试 ## 硬件环境 事务型数据库稳定性测试的硬件环境由中国信通院提供。测试人员需在中国信通院实验室机房使用指定的标准测试服务器集群进行测试,整个服务器集群不连接外网,内网通过一套千兆内网和一套万兆内网互相连接。测试共使用17台服务器,10台用于部署被测数据库,6台用于按照1台主节点5台子节点的方式部署事务型数据库性能测试工具,1台用于部署分布式系统混沌测试工具。 ## 测试用例 在进行稳定性测试时,要先进行一组基准实验。基准实验在不注入任何故障的情况下进行,模拟被测系统在生产环境中处于稳定状态的工作情况。通过基准实验可得出被测系统在无故障时的性能指标$E_0$。基准实验完毕后,开始进行故障实验。在进行故障实验时,需在运行与基准实验相同的压力测试的同时使用混沌测试工具对被测系统注入规定的故障,目的是测试被测系统在相应故障场景下的工作情况。被测系统在故障场景下完成压力测试后可得出被测系统在相应故障场景下的性能指标$E_i$。在完成所有故障场景测试用例后,应再进行一次在无故障环境下进行的性能测试,这次测试称为恢复性验证,可得出恢复性验证性能指标$E_{11}$。 ## 基准实验 对于事务型数据库稳定性测试,应先对待测数据库进行一次在无故障环境下进行的性能测试,这次测试称为基准实验。基准实验使用事务型数据库性能测试工具进行。性能测试工具的部署和使用方式请参考《事务型数据库性能测试》和《事务型数据库性能测试工具》。基准实验采用的数据规模和测试规模设置如下: 数据规模设置为: * 网点数2000、科目数10、账户数100000000、客户数10000000 测试规模设置为: * 转账5000000、查询10000000、代发工资10000、存款2500000、取款2500000、资产盘点1 请注意,在按照规定的测试方法实际进行测试时(按照1台主节点5台子节点的方式部署测试工具)测试规模插入trancfg表时的数量应该除以子节点数量,即三种测试规模在trancfg表中的数量应为: * 转账1000000、查询2000000、代发工资2000、存款500000、取款500000、资产盘点1。 完成性能测试后,应记录测试工具展示的TPS测试结果,以该结果作为被测系统在无故障时的性能指标$E_0$。 ## 故障实验 事务型数据库稳定性测试共设置10个故障场景测试用例: 1. 扰动类别:CPU负载,扰动程度:99%,扰动节点数:4,扰动类型:计算 2. 扰动类别:硬盘空间填充,扰动程度:98%,扰动节点数:4,扰动类型:存储 3. 扰动类别:内存空间填充,扰动程度:98%,扰动节点数:4,扰动类型:存储 4. 扰动类别:读写高负载,扰动程度:区块重复读写>90%,扰动节点数:4,扰动类型:存储 5. 扰动类别:网络抖动(万兆网卡),扰动程度:200ms~800ms随机延迟,扰动节点数:4,扰动类型:网络 6. 扰动类别:网络丢包(万兆网卡),扰动程度:10%,扰动节点数:4,扰动类型:网络 7. 扰动类别:包损坏(万兆网卡),扰动程度:10%,扰动节点数:4,扰动类型:网络 8. 每隔60s,随机选取3项分别属于计算、存储、网络的扰动,分别注入到随机2个节点中 9. 每隔60s,随机选取3项分别属于计算、存储、网络的扰动,分别注入到随机4个节点中 10. 扰动类别:杀掉一主要线程,扰动节点数:1 每个测试用例的配置均为每隔60s注入一次故障,每次故障持续30s。 在执行事务型数据库稳定性测试时,应按顺序进行上述10个测试用例的测试。对于每个测试用例,应先正确配置分布式系统混沌测试工具的配置参数,配置方式详见《分布式系统混沌测试工具》中的说明。配置文件的配置方式可参考"chaostest"文件。 正确配置后,先运行混沌测试工具,观察到故障注入生效后,开始使用事务型数据库性能测试工具进行性能测试,数据规模和测试规模设置与基准实验相同。完成性能测试后,应记录测试工具展示的TPS测试结果,以该结果作为被测系统在故障场景下的性能指标$E_i$($i$对应故障场景的测试用例编号,即$E_1$至$E_{10}$)。 记录性能指标并确认无误后,请移除该故障场景所注入的故障并确认性能测试工具停止工作,准备下一个故障场景的测试。 ## 恢复性验证 在完成所有故障场景测试用例后,应再进行一次在无故障环境下进行的性能测试,这次测试称为恢复性验证。恢复性验证的数据规模和测试规模设置与基准实验相同。完成性能测试后,应记录测试工具展示的TPS测试结果,以该结果作为恢复性验证性能指标$E_{11}$。 ## 测试用例合计 事务型数据库稳定性测试合计共12个测试用例: 0. 基准实验 1. CPU负载注入测试(扰动类别:CPU负载,扰动程度:99%,扰动节点数:4,扰动类型:计算) 2. 硬盘负载注入测试(扰动类别:硬盘空间填充,扰动程度:98%,扰动节点数:4,扰动类型:存储) 3. 内存负载注入测试(扰动类别:内存空间填充,扰动程度:98%,扰动节点数:4,扰动类型:存储) 4. 读写负载注入测试(扰动类别:读写高负载,扰动程度:区块重复读写>90%,扰动节点数:4,扰动类型:存储) 5. 网络抖动注入测试(扰动类别:网络抖动(万兆网卡),扰动程度:200ms~800ms随机延迟,扰动节点数:4,扰动类型:网络) 6. 网络丢包注入测试(扰动类别:网络丢包(万兆网卡),扰动程度:10%,扰动节点数:4,扰动类型:网络) 7. 网络包损坏注入测试(扰动类别:包损坏(万兆网卡),扰动程度:10%,扰动节点数:4,扰动类型:网络) 8. 低强度综合故障注入测试(每隔60s,随机选取3项分别属于计算、存储、网络的扰动,分别注入到随机2个节点中) 9. 高强度综合故障注入测试(每隔60s,随机选取3项分别属于计算、存储、网络的扰动,分别注入到随机4个节点中) 10. 单节点线程故障测试(扰动类别:杀掉一主要线程,扰动节点数:1) 11. 恢复性验证 ## 测试流程 测试时间为7天。测试人员进入中国信通院实验室机房7*24小时后未完成所有测试用例则视为未通过测试。 测试人员进入机房后,需要在指定的服务器集群中选择规定数量的服务器并按照需要设置RAID、安装操作系统、部署测试工具和被测数据库。测试人员可自带笔记本电脑连接千兆内网进行操作。由于服务器集群不连接外网,且机房没有可连接外网的有线网络或WIFI网络,请测试人员提前准备测试需要的操作系统安装镜像和相关软件。推荐使用U盘安装操作系统。 被测数据库部署完成后,测试人员需对被测数据库的主界面或版本信息界面进行截图,填入检验报告中“检验样品照片”页。注意测试人员应在开始测试的当天或合理时间范围内进行截图,请留意图片上的时间信息。 本项测试需使用事务型数据库性能测试工具和测试工具和分布式系统混沌测试工具,测试工具的部署请参考《事务型数据库性能测试工具》和《分布式系统混沌测试工具》。被测数据库和测试工具部署完成后,需进行测试前审核以确认测试配置无误。测试前审核的具体要求可参考检验报告附件中“测试审核”部分,请按照要求操作并对操作结果进行截图填入相应位置。测试前审核结果无误后可执行测试用例的测试。测试审核部分填入的内容应为截图形式,不得直接复制粘贴代码或命令行界面输出的文字。 各测试用例的测试执行完毕后,需对测试工具展示的测试结果进行截图填入检验报告附件中“测试记录”部分。测试记录中填入的内容应为截图形式,不得直接复制粘贴测试工具输出的文字。 测试结果确认无误后,需将测试得出的各项指标的精确数值以文字的形式填入检验报告中“检验结果”页的相应位置。测试指标的计算方法详见《分布式数据库系统稳定性测试的基本测试过程和指标计算方法》。 性能指标为性能测试工具直接测得的平均TPS值,结果记为$E_0$到$E_{11}$。 RP指相对性能指标(Relative Performance),可反映被测系统的性能受故障影响的程度。数值越高说明故障对被测系统的影响越小。对于恢复性验证,这个指标反映了被测系统移除故障后的恢复能力(系统恢复率)。该指标记为$RP_1$到$RP_{11}$,计算公式为: $RP_i=\frac{E_i}{E_0}$ * $RP_i$:第i组实验的相对性能指标 * $E_i$:第i组实验的性能指标 * $E_0$:基准实验的性能指标 CPU、存储、网络丢包、网络包损坏部分的测试用例需计算RCP指对性价比指标(Relative Cost Performance),可反映各实验组的系统性价比(单位时间、单位硬件资源所完成的工作总量)相对于基准实验组的变化情况。该数值越高说明系统对相应的故障的韧性越强。该指标记为$RCP_1$到$RCP_{11}$,可由系统性价比指标(CP)计算: 系统性价比指标由主要性能评估指标除以实验可用的硬件资源量得到。反映了单位时间,单位硬件资源所完成的工作总量: 基准实验组: $CP_0=\frac{E_0}{NR}$ 故障实验组: $CP_i=\frac{E_i}{(N-{N_i}{P_i}{\Lambda})R}$ 然后可计算相对性价比指标: $RCP_i=\frac{CP_i}{CP_0}=\frac{E_iN}{E_0(N-{N_i}{P_i}{\Lambda})}$ * $RCP_i$:第i组实验的相对性价比指标 * $R$:各节点的系统资源总量 * $E_i$:第i组实验的性能指标 * $E_0$:基准实验的性能指标 * $N$:被测集群总节点数 * $N_i$:第i组实验注入故障的节点数 * $P_i$:第i组实验故障平均占用资源比率 * $\Lambda$:故障时间覆盖率(一般的故障实验中每分钟对节点注入一次持续30秒的故障,该值取${30s}/{60s}=0.5$) ## 测试终止条件 单项测试用例的测试中如出现以下状况,测试人员需考虑终止该项测试,该项的测试结果部分记录为“未完成”。 * 单项实验的运行时间过长,被测系统无能够正常完成压力测试的迹象 * 被测产品发生故障导致实验终止,重复2次后仍有发生 * 基础功能指标错误,重复2次后仍有发生