一种内存数据库压力测试方法、系统、终端及存储介质与流程

文档序号:26139432发布日期:2021-08-03 14:22阅读:121来源:国知局
一种内存数据库压力测试方法、系统、终端及存储介质与流程

本发明涉及大数据技术领域,具体涉及一种内存数据库压力测试方法、系统、终端及存储介质。



背景技术:

随着大数据技术的飞速发展,对大数据组件的性能和稳定性的测试要求越来越重要,因此在对大数据组件选型的过程中进行压力测试以确定所选组件性能是否满足业务需求,是非常必要的过程。memkeydb基于antirez维护的redis核心代码,依赖互联网客户积极贡献代码,满足中国互联网客户快速迭代、快速解决业务中痛点的需求而产生的一个redis分支版本。其中,如何更好的对memkeydb进行压力测试是需要考虑的重要问题。

memkeydb作为一个高性能的内存数据库,其测试方法一般是使用自带的benchmark进行压力测试,该测试工具虽然能够实现对memkeydb的性能测试,但只是定义测试的配置及参数,没有实现对memkeydb的所有参数进行自动化配置测试,需要专业的测试人员才能操作,而且测试参数比较多容易出错。



技术实现要素:

针对现有技术的上述不足,本发明提供一种内存数据库压力测试方法、系统、终端及存储介质,以解决上述技术问题。

第一方面,本发明提供一种内存数据库压力测试方法,包括:

设置多个测试实例,每个测试实例对应特定的内存数据库配置参数,将所述多个测试实例保存至配置文件;

依次执行所述配置文件中的测试实例;

从预设压力测试样本库选取当前测试实例对应的测试样本,并利用对应的测试样本执行压力测试;

获取当前测试实例的压力测试结果,并将所述压力测试结果保存至测试日志。

进一步的,所述设置多个测试实例,每个测试实例对应特定的内存数据库配置参数,将所述多个测试实例保存至配置文件,包括:

指定创建内存数据库配置文件,所述配置文件包括控制符、日志;

在配置文件中配置server和client基础配置和测试实例的运行方式、单个测试实例的内存配置和数据持久化目录。

进一步的,所述依次执行所述配置文件中的测试实例,包括:

按照所述运行方式依次将待执行测试实例对应的配置参数导入内存数据库,作为内存数据库的运行参数。

进一步的,所述从预设压力测试样本库选取当前测试实例对应的测试样本,并利用对应的测试样本执行压力测试,包括:

预先设置压力测试样本库,并在所述压力测试样本库存储与各测试实例对应的测试样本;

创建多个并发线程分别从压力测试样本库中提取当前测试实例对应的多个测试样本;

利用当前测试实例对应的多个测试样本对内存数据库发送测试请求。

第二方面,本发明提供一种内存数据库压力测试系统,包括:

文件配置单元,配置用于设置多个测试实例,每个测试实例对应特定的内存数据库配置参数,将所述多个测试实例保存至配置文件;

实例运行单元,配置用于依次执行所述配置文件中的测试实例;

样本测试单元,配置用于从预设压力测试样本库选取当前测试实例对应的测试样本,并利用对应的测试样本执行压力测试;

结果获取单元,配置用于获取当前测试实例的压力测试结果,并将所述压力测试结果保存至测试日志。

进一步的,所述文件配置单元包括:

文件创建模块,配置用于指定创建内存数据库配置文件,所述配置文件包括控制符、日志;

实例配置模块,配置用于在配置文件中配置server和client基础配置和测试实例的运行方式、单个测试实例的内存配置和数据持久化目录。

进一步的,所述实例运行单元包括:

参数导入模块,配置用于按照所述运行方式依次将待执行测试实例对应的配置参数导入内存数据库,作为内存数据库的运行参数。

进一步的,所述样本测试单元包括:

样本存储模块,配置用于预先设置压力测试样本库,并在所述压力测试样本库存储与各测试实例对应的测试样本;

并发提取模块,配置用于创建多个并发线程分别从压力测试样本库中提取当前测试实例对应的多个测试样本;

请求发送模块,配置用于利用当前测试实例对应的多个测试样本对内存数据库发送测试请求。

第三方面,提供一种终端,包括:

处理器、存储器,其中,

该存储器用于存储计算机程序,

该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。

第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

本发明的有益效果在于,

本发明提供的内存数据库压力测试方法、系统、终端及存储介质,可以对memkeydb单实例也可以对memkeydb多实例和集群进行压力测试,且降低对测试人员专业水平的要求,实现对memkeydb自动化测试,降低认为测试风险,提升了测试效率和准确性。

此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例的方法的示意性流程图。

图2是本发明一个实施例的系统的示意性框图。

图3为本发明实施例提供的一种终端的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种内存数据库压力测试系统。

如图1所示,该方法包括:

步骤110,设置多个测试实例,每个测试实例对应特定的内存数据库配置参数,将所述多个测试实例保存至配置文件;

步骤120,依次执行所述配置文件中的测试实例;

步骤130,从预设压力测试样本库选取当前测试实例对应的测试样本,并利用对应的测试样本执行压力测试;

步骤140,获取当前测试实例的压力测试结果,并将所述压力测试结果保存至测试日志。

目前实现memkeydb的压力测试工具有两种:redis-benchmark和memtier_benchmark

redis-benchmark

redis-benchmark是redis自带的压力测试工具,同样集成到memkeydb中,模拟n个客户端同时发送m个请求对memkeydb进行压力测试,只是对测试的配置参数和测试方式的说明,配置参数多且配置复杂,没有考虑自动进行所有功能测试;

2、memtier_benchmark

memtier_benchmark是redislabs推出的一款命令行工具,它能够产生各种各样的流量模式,可以对memkeydb进行基准测试。这个工具提供了丰富的自定义选项和报表功能,通过命令行界面就能够轻松地使用,但该工具目前还不能实现对非易失性内存部分的测试。同样,该工具需要专业人员手动操作。

具体的,所述内存数据库压力测试方法包括:

1)规范参数配置:指定创建memkeydb配置文件、pid、日志等,配置memkeydbserver端和client端基础配置如memkeydb运行实例数量、单个实例内存配置、数据持久化目录等;

2)运行memkeydb实例:启动memkeydb实例并确定实例正确运行;

3)进行压力测试:启动memkeydbclient压力测试程序,压力测试程序从预设的压力测试样本库中一次抽取压力测试样本进行压力测试,其中每个压力测试样本对应被测memkeydb不同的测试配置标识。所述压力测试程序获取所述测试请求的测试结果,并将所述测试结果与所述被测memkeydb的测试配置标识关联保存;

4)输出测试结果:若压力测试程序从所述压力测试样例库中提取压力测试样本时发现所述压力测试样例库中已没有剩余压力测试样本,则汇总输出所述样例测试进程保存的测试结果和对应的测试配置标识。

本发明通过规范测试文件,合理的样本库设计实现memkeydb单实例、多实例和集群的自动化压力测试。该方法包括如下内容:

规范配置文件:指定创建memkeydb配置文件,包括pid、日志等,配置server和client基础配置如memkeydb运行实例方式、单个实例内存配置、数据持久化目录等;

预设压力测试样本库:根据要测试的测试类型、数据大小、数据类型等设置测试样本库,每个测试样本对应不同的测试配置标识;

自动化压力测试:启动压力测试程序,确保server正常启动,然后client根据测试样本库中设置的样本数量通过for循环进行压力测试,直至所有压力测试样本跑完;

收集测试结果:所述测试进程自动获取测试请求的测试结果,并将所述测试结果与所述被测memkeydb的测试配置标识关联保存,待所述压力测试样本库中的所有压力测试样本测试执行完成,则汇总输出所述样例测试进程保存的测试结果和对应的测试配置标识。

该压力测试方法中设定样本测试程序从压力测试样本库提取不同的压力测试样本向被测memkeydb发出测试请求,可实现获取对memkeydb进行压力测试的详细测试结果,当出现测试不成功的测试结果时,可以查找到对应的压力测试样本和对应的测试配置标识。

具体的操作步骤如下:

s101,规范memkeydb配置文件,包括pid、日志、数据持久化等文件存放,持久化类型设置等;

具体的,规范memkeydb配置文件包括memkeydb的配置文件、进程pid、日志log,持久化数据存放目录,基础参数配置包括memkeydb运行ip、端口、实例可用内存等。

s102,压力测试样本库预设多个压力测试样本,其中每个所述压力测试样本对应被测memkeydb的不同的测试配置标识

具体的,压力测试样本库预先定义压力测试样本,在测试开始后,依次从压力测试样本库中读取压力测试样本,该测试样本可以根据不同压力测试配置标识预先设定,例如可以设定压力测试样本,所述压力测试样本是memkeydb支持的不同数据结构、数据值的大小、是否运行在非易失性内存环境下等,还可以包括memkeydb客户端数量、请求数的压力值等。每个压力测试样本被client运行时调用,样本通过多个for循环来实现自动调用。

s103,压力测试进程从所述压力测试样本库中提取不同的压力测试样本,并根据提取到的压力测试样本向被测memkeydb发送测试请求

具体的,根据所属s101和s102的配置,首先启动memkeydbserver,启动的memkeydb可以是单实例、也可以是多实例或者集群方式,本次以memkeydb启动集群图2描述。然后根据s102预设的压力测试样本启动多个client压力进程,所述样本测试进程可以预先通过管理员根据需要设定得到。例如所述样例测试进程依次读取样例测试库中的压力测试样本,假设有3个压力测试样本分别为a、b、c,首先执行第一个压力测试样本a,根据提取到的测试请求样本并发向被测memkeydb实例发送测试请求,如可以根据提取到的测试请求样本中携带的ip地址和端口号向被测memkeydb发送压力请求,并通过不同的压力参数实现对memkeydb的压力测试。带测试样本的压力测试程序启动多个client进程,每个进程带有ip地址、端口号和一个压力测试样本,memkeydb集群接受到client的压力请求,分发给集群中的server进行处理。

同样的,当待测试样本a完成测试,循环读取测试样本b进行如上测试。

s104,所述样本测试进程分别获取所述测试请求的测试结果,并将所述测试结果与所述被测memkeydb的测试配置标识关联保存在log日志文件中。

具体的,压力测试请求处理成功,memkeydb测试程序会生成测试日志,若处理失败,返回处理失败的详细信息。在获取到各个测试请求的测试结果日志后,统计所有实例的测试结果平均值和tps写入新的日志文件中,并将测试结果与该测试请求对应的测试配置标识关联保存,这样当发生测试不成功时,可以方便的查看到测试不成功的测试请求对应的资源标识,并且还以实现后续根据被测memkeydb的测试配置标识查询对应测试请求的测试结果。

s105,汇总输出所述样例测试进程保存的测试结果和对应的测试配置标识

具体的,当所述压力测试样本库中的所有压力测试样本都已被样本测试程序取出并执行测试,即发送测试请求并获取测试结果之后,压力测试装置将所述多个并发线程保存的测试结果和对应的测试配置标识汇总格式化输出。汇总输出memkeydb测试配置标识和对应的memkeydb关键结果,包括平均执行时间、总的tps。从而方便测试人员对测试结果查看和图形化展示使用。

如图2所示,该系统200包括:

文件配置单元210,配置用于设置多个测试实例,每个测试实例对应特定的内存数据库配置参数,将所述多个测试实例保存至配置文件;

实例运行单元220,配置用于依次执行所述配置文件中的测试实例;

样本测试单元230,配置用于从预设压力测试样本库选取当前测试实例对应的测试样本,并利用对应的测试样本执行压力测试;

结果获取单元240,配置用于获取当前测试实例的压力测试结果,并将所述压力测试结果保存至测试日志。

可选地,作为本发明一个实施例,所述文件配置单元包括:

文件创建模块,配置用于指定创建内存数据库配置文件,所述配置文件包括控制符、日志;

实例配置模块,配置用于在配置文件中配置server和client基础配置和测试实例的运行方式、单个测试实例的内存配置和数据持久化目录。

可选地,作为本发明一个实施例,所述实例运行单元包括:

参数导入模块,配置用于按照所述运行方式依次将待执行测试实例对应的配置参数导入内存数据库,作为内存数据库的运行参数。

可选地,作为本发明一个实施例,所述样本测试单元包括:

样本存储模块,配置用于预先设置压力测试样本库,并在所述压力测试样本库存储与各测试实例对应的测试样本;

并发提取模块,配置用于创建多个并发线程分别从压力测试样本库中提取当前测试实例对应的多个测试样本;

请求发送模块,配置用于利用当前测试实例对应的多个测试样本对内存数据库发送测试请求。

图3为本发明实施例提供的一种终端300的结构示意图,该终端300可以用于执行本发明实施例提供的内存数据库压力测试方法。

其中,该终端300可以包括:处理器310、存储器320及通信单元330。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

其中,该存储器320可以用于存储处理器310的执行指令,存储器320可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器320中的执行指令由处理器310执行时,使得终端300能够执行以下上述方法实施例中的部分或全部步骤。

处理器310为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integratedcircuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器310可以仅包括中央处理器(centralprocessingunit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。

通信单元330,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。

本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。

因此,本发明可以对memkeydb单实例也可以对memkeydb多实例和集群进行压力测试,且降低对测试人员专业水平的要求,实现对memkeydb自动化测试,降低认为测试风险,提升了测试效率和准确性,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。

本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1