一种任务挑选方法和装置与流程

文档序号:17475447发布日期:2019-04-20 06:05阅读:160来源:国知局
一种任务挑选方法和装置与流程

本发明实施例涉及测试技术领域,尤其涉及一种任务挑选方法和装置。



背景技术:

性能测试是通过自动化的测试工具模拟多种正常以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试确定在各种工作负载下系统的性能,目的是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是用于获得系统能够提供的最大服务级别的测试。

在开源压测平台中,如ngrinder、jmeter等,压测模型通常是一个开环压测过程,即利用预先指定的多个施压机对压测任务进行并发压力测试。通常,每个压测任务所需资源不同,而且每个施压机因配置不同使得具有的资源以及消耗资源的能力也不同,从而在进行压力测试时,易导致因压测任务所需资源较少使得施压机资源利用率低,或者因压测任务所需资源较多使得施压机资源过载的情况。

当施压机资源较少,压测任务较多时,若逐个执行压测任务,则会大大降低施压机资源利用率,以及降低测试效率。若同时执行所有压测任务,则会使得每个施压机资源过载并且每个压测任务也无法达到压力设定值,从而导致测试结果不准确,统计的测试数据不具备参考意义。



技术实现要素:

本发明实施例提供了一种任务挑选方法和装置,以提高施压机的资源利用率,并避免出现资源过载的情况,从而提高了测试效率和准确性。

第一方面,本发明实施例提供了一种任务挑选方法,包括:

根据目标施压机集群中每个目标施压机的目标配置信息,以及参考施压机的参考配置信息和参考算力值,确定所述目标施压机集群对应的空载算力和;

确定在所述目标施压机集群中当前执行的各第一任务对应的第一任务算力和;

在所述空载算力和大于所述第一任务算力和时,对当前待测任务列表中的各第二任务进行遍历,并将满足所述预设挑选条件的第二任务的任务状态更新为准备运行状态,以在所述目标施压机集群中执行满足所述预设挑选条件的第二任务。

第二方面,本发明实施例还提供了一种任务挑选装置,包括:

空载算力和确定模块,用于根据目标施压机集群中每个目标施压机的目标配置信息,以及参考施压机的参考配置信息和参考算力值,确定所述目标施压机集群对应的空载算力和;

第一任务算力和确定模块,用于确定在所述目标施压机集群中当前执行的各第一任务对应的第一任务算力和;

第二任务挑选模块,用于在所述空载算力和大于所述第一任务算力和时,对当前待测任务列表中的各第二任务进行遍历,并将满足所述预设挑选条件的第二任务的任务状态更新为准备运行状态,以在所述目标施压机集群中执行满足所述预设挑选条件的第二任务。

本发明实施例通过基于一个参考施压机的参考配置信息和参考算力值,对目标施压机集群中每个目标施压机资源以及当前执行的每个第一任务所需资源进行了归一化处理和统一度量,并在目标施压机集群对应的空载算力和大于第一任务算力和时,表明当前目标施压机集群还可以执行额外的压测任务,此时可以在当前待测任务列表中,挑选出满足预设挑选条件的第二任务,从而通过继续执行满足预设挑选条件的第二任务,可以大大提高施压机资源的利用率,并且也可以避免出现资源过载的情况,进而提高了测试效率以及准确性。

附图说明

图1是本发明实施例一提供的一种任务挑选方法的流程图;

图2是本发明实施例二提供的一种任务挑选方法的流程图;

图3是本发明实施例三提供的一种任务挑选方法的流程图;

图4是本发明实施例三提供的另一种任务挑选方法的流程图;

图5是本发明实施例四提供的一种任务挑选装置的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种任务挑选方法的流程图,本实施例可适用于为目标施压机集群挑选适宜的压测任务以避免出现资源过载的情况。该方法可以由任务挑选装置来执行,该装置可以由软件和/或硬件的方式来实现,集成于控制施压机集群进行压测的控制设备中。该方法具体包括以下步骤:

s110、根据目标施压机集群中每个目标施压机的目标配置信息,以及参考施压机的参考配置信息和参考算力值,确定目标施压机集群对应的空载算力和。

其中,施压机是指在系统性能测试时可以产生压测流量的机器,其可以是虚拟机,也可以是物理机,比如服务器、电脑和手机等。目标施压机可以用于根据压测任务的压测脚本进行并发压力测试,以执行压测任务。目标施压机集群可以由多个目标施压机组成,目标施压机的总数量可以根据业务需求和实际情况预先确定。本实施例中的每个目标施压机可以执行一个或多个压测任务,每个压测任务也可以由一个或多个目标施压机进行执行。目标配置信息可以是指目标施压机的硬件配置信息,比如中央处理器(centralprocessingunit,cpu)的核心数、主频、内存大小、硬盘存取速度等。参考施压机是为了统一算力标准而选取的一个固定的施压机。参考配置信息是指选取的参考施压机的硬件配置信息。参考算力值可以是根据参考施压机的参考配置信息预先设置的一个算力值。示例性地,可以选取一个4核每核2100mhz的施压机作为参考施压机,该参考施压机的参考算力值可以设置为100。本实施例中的算力值可以用于反映施压机的计算能力,即衡量当前施压机资源的大小。空载算力和可以是指目标施压机集群中每个目标施压机对应的空载算力值之和。空载算力值是指目标施压机在未执行任何压测任务时,所具备的最大计算能力。若目标施压机的空载算力值越大,则表明目标施压机的计算能力越大,具备的资源也越多。目标施压机集群对应的空载算力和是指目标施压机集群所具有的最大资源值。本实施例中的参考算力值是指参考施压机对应的空载算力值。

具体地,对于目标施压机集群中的每个目标施压机而言,可以将目标施压机的目标配置信息与参考施压机的参考配置信息进行比较,根据比较结果和参考施压机的参考算力值可以确定目标施压机对应的空载算力值,从而可以对每个目标施压机的空载资源进行归一化处理。

示例性地,s110可以包括:根据目标施压机集群中每个目标施压机的目标配置信息,以及参考施压机的参考配置信息,确定每个目标施压机与参考施压机之间的性能比值;根据参考施压机的参考算力值和性能比值,确定每个目标施压机对应的目标空载算力值;将各目标施压机对应的目标空载算力值进行相加,并将相加结果确定为目标施压机集群对应的空载算力和。

具体地,本实施例可以对参考配置信息和目标配置信息进行量化,将量化后的目标配置信息与量化后的参考配置信息之间的比值确定为目标施压机与参加施压机之间的性能比值。将参考施压机的参考算力值与性能比值之间的乘积可以确定为目标施压机对应的空载算力值。通过将每个目标施压机对应的空载算力值进行相加的结果确定为目标施压机集群对应的空载算力和,从而可以衡量目标施压机集群所具备的最大资源,以避免执行大于空载算力和的任务,防止出现施压机资源过载的情况。

s120、确定在目标施压机集群中当前执行的各第一任务对应的第一任务算力和。

其中,第一任务可以是指处于正在运行状态的任务。当前时刻下的目标施压机集群可以对一个或多个任务进行并发压力测试,即第一任务的数量可以为一个多个。第一任务算力和可以是指当前执行的每个第一任务对应的第一任务算力值之和。

具体地,本实施例可以通过基于参考施压机的参考配置信息和参考算力值,对当前处于正在运行状态的每个第一任务所需资源进行统一度量,以确定所有第一任务对应的第一任务算力值和,从而可以将目标施压机集群对应的空载算力和与第一任务算力值和进行比较,了解当前目标施压机集群对应的剩余算力值,便于后续进行合理的任务挑选。

s130、在空载算力和大于第一任务算力和时,对当前待测任务列表中的各第二任务进行遍历,并将满足预设挑选条件的第二任务的任务状态更新为准备运行状态,以在目标施压机集群中执行满足预设挑选条件的第二任务。

其中,第二任务可以是指处于等待状态的待测任务。当前待测任务列表可以包括当前时刻下的一个或多个第二任务。在当前待测任务列表中,可以根据第二任务的创建时间进行排列,比如将最先创建的第二任务位于当前待测任务列表中的起始位置处。若当前创建一个新的第二任务,则可以按照创建时间先后的顺序,将新创建的第二任务添加至当前待测任务列表中最后一个第二任务的后面,并更新当前待测任务列表。预设挑选条件可以是指对当前待测任务列表中的第二任务进行挑选时所依据的规则,以在目标施压机集群中执行挑选出的第二任务时可以避免资源过载的情况。准备运行状态可以是目标施压机集群准备执行的任务对应的状态。

具体地,在空载算力和大于第一任务算力和时,表明当前目标施压机集群还具有一定的剩余算力值,即当前目标施压机集群的资源还未被充分利用,对应的资源利用率还未达到最大值,此时可以对当前待测任务列表中的各第二任务进行依次遍历,并可以根据遍历到的第二任务对应的第二任务算力值确定该第二任务是否满足预设挑选条件,若满足,则可以将该第二任务的任务状态从等待状态变更为准备运行状态,从而在目标施压机集群中可以直接执行该第二任务,此时的第二任务可以视为一个处于运行状态的新的第一任务。通过在目标施压机集群中执行挑选出的第二任务,从而利用有限的施压机资源可以测试更多的任务,大大提高了施压机资源的利用率并且避免了资源过载的情况,进而提高了测试效率以及测试准确性。

需要注意的是,当目标施压机集群中当前执行的各第一任务发生变化时,比如增加新的第一任务或者之前的第一任务执行结束时,需要重新确定当前时刻下的第一任务算力和,以便根据当前的第一任务算力和,准确地挑选出符合预设挑选条件的第二任务,进一步提高资源利用率。

示例性地,在空载算力和小于或等于第一任务算力和时,即当前剩余算力值为零时,表明当前目标施压机集群已经过载或者达到了资源利用率的最大值,此时目标施压机集群无法执行额外的任务,需要在空载算力和大于第一任务算力和时,再进行任务挑选的操作。

本实施例提供的性能压测平台可以包括一个目标施压机集群以及一个控制目标施压机集群的控制中心集群。控制中心集群可以用于任务的挑选、施压机集群的管理、任务脚本的下发等。控制中心集群可以包括多个控制中心。每个控制中心可以是指用于控制目标施压机集群中的一个或多个目标施压机的控制设备,并且控制中心所控制的目标施压机数量可以根据压测任务所需资源的大小进行实时调整。每个压测任务由一个控制中心进行控制,控制中心的数量可以根据压测任务的数量进行确定。本实施例中的控制中心集群是一个水平扩展的集群,从而可以在控制中心集群中的每个控制中心均启动一个间隔1秒的定时任务线程,用于任务的实时挑选。本实施例还可以基于数据库原始索引建立一种分布式锁,通过分布式锁可以将每个控制中心的并行挑选变为串行挑选,保证同一时刻只有一个控制中心进行任务的挑选,解决了任务挑选时的资源竞争,从而每次获得到锁的控制中心可以通过定时任务线程进行上述任务挑选的操作。

本实施例的技术方案,通过基于一个参考施压机的参考配置信息和参考算力值,对目标施压机集群中每个目标施压机资源以及当前执行的每个第一任务所需资源进行了归一化处理和统一度量,并在目标施压机集群对应的空载算力和大于第一任务算力和时,表明当前目标施压机集群还可以执行额外的压测任务,此时可以在当前待测任务列表中,挑选出满足预设挑选条件的第二任务,从而通过继续执行满足预设挑选条件的第二任务,可以大大提高施压机资源的利用率,并且也可以避免出现资源过载的情况,进而提高了测试效率以及准确性。

在性能压测平台的压测过程中,对施压机资源影响最大的配置信息为cpu核心数和主频,其他配置信息可以忽略,从而本实施例可以基于核心数和主频进行配置量化。示例性地,“根据目标施压机集群中每个目标施压机的目标配置信息,以及参考施压机的参考配置信息,确定每个目标施压机与参考施压机之间的性能比值”可以包括:根据参考施压机的参考核心数和参考主频,确定参考施压机对应的参考性能值;根据目标施压机集群中每个目标施压机的目标核心数和目标主频,确定每个目标施压机对应的目标性能值;将目标性能值与参考性能值的比值确定为目标施压机与参考施压机之间的性能比值。

具体地,本实施例可以将参考施压机的参考核心数与参考主频的乘积确定为参考施压机对应的参考性能值,将目标施压机的目标核心数和目标主频的乘积确定为目标施压机对应的目标性能值。示例性地,若参考施压机为4核每核2100mhz,目标施压机为8核每核4200mhz,则参考施压机对应的参考性能值为8400,目标施压机对应的目标性能值为33600,目标施压机与参考施压机之间的性能比值为33600/8400=4,从而基于相同的方式,可以更加便捷地确定每个目标施压机与参考施压机之间的性能比值,以便进行归一化处理以及统一度量目标施压机所具备的资源大小。

在上述技术方案的基础上,s130可以包括:根据空载算力和以及第一任务算力和,计算目标施压机集群对应的当前剩余算力值,并将当前待测任务列表中的第一个第二任务确定为当前第二任务;根据预设计算规则、当前第二任务对应的压测脚本响应时间和目标并发线程数以及参考施压机的参考算力值,确定当前第二任务对应的当前第二任务算力值;若当前第二任务算力值小于或等于当前剩余算力值,则确定当前第二任务满足预设挑选条件,并将当前第二任务的任务状态更新为准备运行状态,以在目标施压机集群中执行当前第二任务;若当前第二任务算力值大于当前剩余算力值,则基于当前待测任务列表的排列顺序,将当前第二任务的下一第二任务更新为当前第二任务,并返回执行根据预设计算规则、当前第二任务对应的压测脚本响应时间和目标并发线程数以及参考施压机的参考算力值,确定当前第二任务对应的当前第二任务算力值的操作。

其中,预设计算规则可以是根据大量业务脚本在参考施压机上的运行情况预先设置的,用于计算第二任务的压测脚本在该参考施压机上的最大线程数的规则。示例性地,预设计算规则可以是预先对大量业务脚本进行统计分析而设置的每个脚本响应时间与最大线程数之间的对应关系。压测脚本响应时间可以是指脚本运行时间和阻塞时间的总和。压测脚本响应时间可以预先在脚本调试过程中,即试运行环境中,进行测量。当前第二任务对应的目标并发线程数可以是指在当前第二任务对应的压测场景中的最终并发线程数。目标并发线程数可以根据业务需求预先进行设置。示例性地,当前第二任务对应的压测场景通常为一个梯度施压模型,比如初始并发线程数为10,每隔100秒增加10个线程,直到增加到1000线程时,稳定施压1小时,此为一个压测场景,该压测场景对应的目标并发线程数为1000。

具体地,将空载算力和减去第一任务算力和得到的结果确定为目标施压机集群对应的当前剩余算力值。将当前待测任务列表中的第一个第二任务,即创建时间最早的第二任务确定为当前第二任务。本实施例中的第二任务为还未运行的任务,无法准确地确定当前第二任务对应的最大线程数,从而可以利用预设计算规则估算当前第二任务对应的当前第二任务算力值。本实施例根据预设计算规则中的脚本响应时间与最大线程数之间的对应关系,可以确定当前第二任务对应的压测脚本响应时间对应的最大线程数,即当前第二任务对应的压测脚本在参考施压机上的最大线程数。本实施例可以根据参考施压机在使用全部参考算力值时,基于当前第二任务的压测脚本可以加载的最大线程数,以及当前第二任务对应的目标并发线程数,可以确定当前第二任务对应的当前第二任务算力值。例如,根据目标并发线程数与压测脚本对应的最大线程数之间的倍数,可以确定在加载目标并发线程数时所需参考施压机的数量,然后可以将参考施压机的数量与参考算力值的乘积确定为当前第二任务对应的当前第二任务算力值。

在确定当前第二任务对应的当前第二任务算力值之后,可以比较当前第二任务算力值是否小于或等于当前剩余算力值,若是,则表明当前目标施压机集群在资源不过载的情况下,可以继续执行当前第二任务,此时可以确定当前第二任务满足预设挑选条件;若否,则表明若当前目标施压机集群执行当前第二任务,则会出现资源过载的情况,此时可以通过将当前待测任务列表中当前第二任务的下一第二任务更新为当前第二任务的方式,检测下一第二任务是否满足预设挑选条件,从而可以对当前待测任务列表进行遍历挑选,直到挑选出满足预设挑选条件的第二任务。本实施例通过基于当前待测任务列表的排列顺序进行挑选,以便可以按照第二任务的创建时间进行挑选和执行。

实施例二

图2为本发明实施例二提供的一种任务挑选方法的流程图,本实施例在上述实施例的基础上,对“确定在目标施压机集群中当前执行的各第一任务对应的第一任务算力和”进行了优化。其中与上述实施例相同或相应的术语的解释在此不再赘述。

参见图2,本实施例提供的任务挑选方法具体包括以下步骤:

s210、根据目标施压机集群中每个目标施压机的目标配置信息,以及参考施压机的参考配置信息和参考算力值,确定目标施压机集群对应的空载算力和。

s220、确定在目标施压机集群中当前执行的每个第一任务对应的各关联施压机,并采集每个关联施压机的关联配置信息、当前资源消耗信息和当前加载线程数。

其中,关联施压机是指与第一任务关联的施压机。当控制中心将第一任务对应的并发线程分配至指定的一个或多个施压机上,此时可以将指定的施压机确定为关联施压机,即将与第一任务的压测脚本相关联的施压机确定为关联施压机。以利用第一任务对应的关联施压机对第一任务进行并发压力测试。本实施例中第一任务对应的关联施压机的数量可以为一个或多个,其可以根据压测任务所需资源的大小进行确定。关联配置信息可以是指关联施压机的硬件配置信息。当前资源消耗信息可以是指关联施压机在执行对应第一任务时当前所消耗的资源信息。当前资源消耗信息可以包括但不限于cpu使用率、内存使用率和平均负载信息等。当前加载线程数可以是关联施压机当前加载的第一任务中的线程数量。

具体地,对于每个第一任务而言,将当前执行第一任务的各目标施压机确定为第一任务对应的各关联施压机。本实施例可以基于预设采集频率,通过系统信息收集和报告sigar接口采集第一任务对应的每个关联施压机的关联配置信息、当前资源消耗信息和当前加载线程数。示例性地,预设采集频率可以是每隔200ms采集一次。sigar是hyperichq主要的数据收集组件,可兼容多数平台,例如windows系列平台、linux系列平台以及aix系列平台等,可以用于收集关联施压机的信息。sigar接口是一个用来收集施压机信息的极为方便使用的接口。在性能压测平台中,控制中心与每个施压机之间会预先建立一条长连接,从而可以将采集的关联配置信息、当前资源消耗信息和当前加载线程数上报至控制中心,并且控制中心在接收后,也可以将这些信息存储至redis存储系统中,以便控制中心集群可以共享施压机的资源信息,从而可以更加便捷地进行任务挑选。

s230、根据参考施压机的参考配置信息、参考算力值以及关联配置信息,确定每个关联施压机对应的关联空载算力值。

其中,关联空载算力值可以是指关联施压机对应的空载算力值。

本实施例可以通过与确定目标施压机对应的目标空载算力值相同的方式,确定每个关联施压机对应的关联空载算力值。具体地,本实施例可以对参考配置信息和关联配置信息进行量化,将量化后的关联配置信息与量化后的参考配置信息之间的比值确定为关联施压机与参加施压机之间的性能比值。将参考施压机的参考算力值与性能比值之间的乘积可以确定为关联施压机对应的关联空载算力值。

s240、根据关联空载算力值和当前资源消耗信息,确定每个关联施压机对应的当前消耗算力值。

其中,当前消耗算力值是指关联施压机在运行第一任务时所消耗的算力值。

具体地,在资源消耗信息为资源使用率时,可以将关联施压机的资源使用率与关联空载算力值的乘积确定为关联施压机的当前消耗算力值。在性能压测平台的压测过程中,对施压机资源影响最大的参数为cpu使用率,从而可以以cpu使用率来表示施压机的资源消耗情况。示例性地,若某个关联施压机t1的cpu使用率为50%,关联空载算力值为200,则关联施压机t1对应的消耗算力值为100。通过计算关联施压机的消耗算力值,可以更加便捷地监控每个关联施压机的资源消耗情况。本实施例也可以根据关联施压机对应的关联空载算力值和当前消耗算力值确定关联施压机对应的剩余算力值,从而在资源调度时,可以向关联施压机分配与该剩余算力值相匹配的任务,从而提高施压机的资源利用率以及避免出现过载的情况。

s250、根据关联施压机对应的当前消耗算力值、当前加载线程数和第一任务对应的目标并发线程数,确定每个第一任务对应的第一任务算力值。

具体地,对于每个第一任务而言,本实施例可以根据每个关联施压机在加载对应的当前加载线程数时所消耗的当前消耗算力值,以及第一任务对应的目标并发线程数,可以确定运行第一任务实际所需要的资源大小,即对应的第一任务算力值。

需要注意的是,在计算第一任务对应的第一任务算力值时,需要假设关联施压机对应的消耗算力值均是被第一任务所消耗,忽略操作系统等其他进程的消耗情况。

示例性地,可以根据如下公式确定第一任务对应的第一任务算力值:

其中,s是第一任务对应的第一任务算力值;tm是第一任务对应的目标并发线程数;n是与第一任务关联的关联施压机的个数;ci是第i个关联施压机对应的当前消耗算力值;ti是第i个关联施压机对应的当前加载线程数。

具体地,根据每个关联施压机对应的当前消耗算力值以及每个关联施压机对应的当前加载线程数,确定加载每个任务线程所需的平均算力值,然后可以将平均算力值与目标并发线程数的乘积确定为第一任务对应的第一任务算力值。通过计算第一任务对应的第一任务算力值,可以获得准确的处于运行状态的任务算力值,以便提高任务挑选的准确性。

示例性地,若第一任务的目标并发线程数为100,分配至两个关联施压机上,每个关联施压机当前均加载了20个线程,对应的当前消耗算力值分别为150和250,则该第一任务对应的第一任务算力值为:

s260、将各第一任务对应的第一任务算力值进行相加,并将相加结果确定为各第一任务对应的第一任务算力和。

s270、在空载算力和大于第一任务算力和时,对当前待测任务列表中的各第二任务进行遍历,并将满足预设挑选条件的第二任务的任务状态更新为准备运行状态,以在目标施压机集群中执行满足预设挑选条件的第二任务。

本实施例的技术方案,通过根据采集的每个关联施压机的关联配置信息、当前资源消耗信息和当前加载线程数,可以更加准确的计算出处于运行状态的第一任务对应的第一任务算力值,从而可以提高挑选的准确性,并且进一步保证避免出现施压机资源利用率低或者资源过载的情况,进一步提高测试准确性。

实施例三

图3为本发明实施例三提供的一种任务挑选方法的流程图,本实施例在上述各实施例的基础上,对当前待测任务列表中的各第二任务进行遍历和挑选的过程进行了优化。其中与上述各实施例相同或相应的术语的解释在此不再赘述。

参见图3,本实施例提供的任务挑选方法具体包括以下步骤:

s310、根据目标施压机集群中每个目标施压机的目标配置信息,以及参考施压机的参考配置信息和参考算力值,确定目标施压机集群对应的空载算力和。

s320、确定在目标施压机集群中当前执行的各第一任务对应的第一任务算力和。

s330、在空载算力和大于第一任务算力和时,根据空载算力和以及第一任务算力和,计算目标施压机集群对应的当前剩余算力值,并将当前待测任务列表中的第一个第二任务确定为当前第二任务。

具体地,在第一个循环周期内,可以将当前待测任务列表中的第一个第二任务作为当前第二任务,即将当前待测任务列表中创建时间最早的第二任务作为当前第二任务。

s340、根据预设计算规则、当前第二任务对应的压测脚本响应时间和目标并发线程数以及参考施压机的参考算力值,确定当前第二任务对应的当前第二任务算力值。

s350、检测当前第二任务算力值是否大于当前剩余算力值;若是,则在不存在最小阻塞任务时,进入s360;在存在最小阻塞任务时,进入s370;若否,则在不存在最小阻塞任务时,进入s380;在存在最小阻塞任务时,进入s390。

其中,最小阻塞任务可以是指在目标施压机集群中当前执行的各第一任务中,最快结束的任务,即剩余压测时间最短的任务。

具体地,若当前第二任务算力值大于当前剩余算力值,则表明利用当前的目标施压机集群无法执行当前第二任务,需要增大目标施压机集群对应的当前剩余算力值才可能执行当前第二任务,即在目标施压机集群中所执行的部分第一任务执行结束释放对应的施压机资源后,增加当前剩余算力值时才可能执行当前第二任务。在当前第二任务算力值大于当前剩余算力值且不存在最小阻塞任务时,表明需要确定目标施压机集群对应的最小阻塞任务,此时可以执行步骤s360的操作。在当前第二任务算力值大于当前剩余算力值且存在最小阻塞任务时,表明当前已经确定出最小阻塞任务,此时可以直接执行步骤s370的操作。

在当前第二任务算力值小于或等于当前剩余算力值且不存在最小阻塞任务时,表明之前还未出现过无法执行的第二任务,即当前第二任务为当前待测任务列表中创建时间最早的任务,此时可以直接执行步骤s380的操作。在当前第二任务算力值小于或等于当前剩余算力值且存在最小阻塞任务时,表明当前第二任务可以在当前目标施压机集群中进行执行,但之前已经出现过无法执行的第二任务,此时为了使之前无法执行的第二任务可以尽快执行,可以执行步骤s390的操作。

s360、在各第一任务中,挑选剩余压测时间最短的第一任务作为最小阻塞任务,并进入s370。

具体地,在当前第二任务算力值大于当前剩余算力值,且不存在最小阻塞任务时,表明利用当前的目标施压机集群无法执行当前第二任务,此时可以将目标施压机集群所执行的每个第一任务对应的剩余压测时间进行比较,并将剩余压测时间最短的第一任务作为最小阻塞任务,从而可以在经过最小阻塞任务对应的剩余压测时间后,最小阻塞任务的压测过程结束,此时可以释放最小阻塞任务对应的施压机资源,以增加目标施压机集群对应的当前剩余算力值,便于后续可以尽快执行此时无法执行的当前第二任务,避免当前第二任务等待执行的时间过长。

s370、基于当前待测任务列表的排列顺序,将当前第二任务的下一第二任务更新为当前第二任务,并返回执行s340。

具体地,在无法执行当前第二任务时,可以基于当前待测任务列表的排列顺序,比如创建时间顺序,通过将当前待测任务列表中当前第二任务的下一第二任务作为当前第二任务,以对当前第二任务进行更新的方式,可以检测下一第二任务是否满足本实施例所提供的预设挑选条件。

s380、确定当前第二任务满足预设挑选条件,并将当前第二任务的任务状态更新为准备运行状态,以在目标施压机集群中执行当前第二任务。

具体地,在当前第二任务的任务状态更新为准备运行状态时,也相应删除当前待测任务列表中的该当前第二任务,以更新当前待测任务列表,并使得当前待测任务列表中只包含任务状态为等待状态的第二任务。

s390、检测当前第二任务的目标压测时间是否小于或等于最小阻塞任务对应的剩余压测时间,若是,则进入s380;若否,则进入s370。

其中,当前第二任务的目标压测时间可以是指在创建第二任务时,根据业务需求预先设置的压测持续时间。当达到目标压测时间时,表明对应的第二任务的测试结束。

具体地,在当前第二任务算力值小于或等于当前剩余算力值且存在最小阻塞任务时,需要检测当前第二任务的目标压测时间是否小于或等于最小阻塞任务对应的剩余压测时间,若是,则表明在剩余压测时间内,还可以利用当前目标施压机集群执行当前第二任务,并且在到达剩余压测时间时,当前第二任务也执行结束,此时可以通过执行s380操作,执行当前第二任务,从而在保证尽快执行之前无法执行的第二任务的情况下,也可以进一步提高了当前施压机的资源利用率,进而进一步提高了测试效率。若当前第二任务的目标压测时间大于最小阻塞任务对应的剩余压测时间,则表明在到达最小阻塞任务对应的剩余压测时间时,当前第二任务无法执行结束,从而无法获取更大的剩余算力值来执行之前无法执行的第二任务,此时可以执行s370的操作,对下一个第二任务进行检测,直到获得目标压测时间小于剩余压测时间的第二任务。

需要注意的是,在执行操作s380之后,可以返回执行s320-s390的操作,以为目标施压机集群实时挑选符合条件的任务,提高目标施压机集群的资源利用率并且避免出现资源过载的情况。

示例性地,假设当前待测任务列表包含4个第二任务,分别为a-b-c-d,若第二任务a对应的第二任务算力值大于当前剩余算力值,此时当前目标施压机集群中的最小阻塞任务的剩余压测时间假设确定为10分钟,并且假设第二任务b对应的目标压测时间为20分钟,第二任务c对应的目标压测时间为5分钟,则在检测到第二任务c对应的第二任务算力值小于或等于当前剩余算力值时,可以将第二任务c的任务状态更新为准备运行状态,以在当前目标施压机集群中执行第二任务c。10分钟后,最小阻塞任务和第二任务c均测试结束,对应的资源均被释放,剩余算力值增加,当前待测任务列表更新为a-b-d,通过重复执行s320-s390,在第二任务a对应的第二任务算力值小于或等于当前剩余算力值时,可以执行第二任务a,从而可以避免创建较早的任务等待执行的时间过长的情况,以便尽量根据任务的创建时间来执行任务。

本实施例的技术方案,通过在当前第二任务算力值大于当前剩余算力值时,设置一个最小阻塞任务,并挑选目标压测时间小于最小阻塞任务对应的剩余压测时间的第二任务,通过执行挑选出的第二任务,可以在保证尽快执行之前无法执行的第二任务的情况下,进一步提高了当前施压机的资源利用率。

在上述实施例的基础上,s340可以包括:根据在参考施压机上脚本响应时间与最大线程数之间的分段线性函数,以及当前第二任务对应的压测脚本响应时间,确定压测脚本在参考施压机上的最大线程数;根据参考施压机的参考算力值和压测脚本对应的最大线程数,确定单线程脚本算力值;根据单线程脚本算力值和当前第二任务对应的目标并发线程数,确定当前第二任务对应的当前第二任务算力值。

其中,本实施例中的预设计算规则可以是预先对在参考施压机上运行的大量业务脚本的运行结果进行统计分析而得到的一个脚本响应时间与最大线程数之间的分段线性函数。分段线性函数用于反映在每个脚本响应时间区间内,脚本响应时间与最大线程数之间的线性关系。示例性地,脚本响应时间与最大线程数之间的分段线性函数可以为:

其中,x是指脚本响应时间;y是指脚本在参考施压机上的最大线程数。

单线程脚本算力值可以是参考施压机在根据压测脚本加载一个线程时所需要消耗的资源大小。

具体地,可以将当前第二任务对应的压测脚本响应时间代入分段线性函数中,从而可以确定当前第二任务的压测脚本对应的最大线程数。本实施例通过设置脚本响应时间与最大线程数之间的分段线性函数,可以更加准确地确定脚本对应的最大线程数,以便提高当前第二任务算力值计算的准确性。本实施例可以将参考施压机的参考算力值除以压测脚本对应的最大线程数,并将得到的计算结果确定为单线程脚本算力值。将单线程脚本算力值与目标并发线程数的乘积可以确定为当前第二任务对应的当前第二任务算力值,从而根据当前第二任务算力值可以估计运行当前第二任务所需的资源大小,以便可以进行合理的任务挑选,避免出现施压机资源利用率过低或资源过载的情况。

在上述实施例的基础上,如图4所示,步骤s380可以包括以下步骤s381-s384。

s381、确定当前第二任务满足预设挑选条件,并将当前第二任务存入待处理任务列表中,以更新待处理任务列表。

其中,待处理任务列表可以用于存储当前满足预设挑选条件的第二任务。

具体地,在确定当前第二任务满足预设挑选条件后,可以暂时先不更新当前第二任务的任务状态,而是将当前第二任务存入待处理任务列表中。

s382、检测更新后的待处理任务列表包含的待处理任务数量是否等于预设任务数量,若是,则进入s383;若否,则进入s384。

其中,预设任务数量是根据业务需求预先设置的每次挑选的任务数量。本实施例中的预设任务数量也可以是一个经验值,其设置的值不能太小,以避免因每次挑选任务都要扫描数据库,导致挑选效率太低;其设置的值也不能太大,以避免待执行任务的等待时间过长。

s383、将各待处理任务的任务状态更新为准备运行状态,以在目标施压机集群中执行各待处理任务。

具体地,当更新后的待处理任务列表包含的待处理任务数量等于预设任务数量,则表明当前可以执行各待处理任务,此时通过将待处理任务列表中的每个待处理任务的任务状态更新为准备运行状态,以利用目标施压机集群同时执行各待处理任务,在避免出现资源过载的情况下,提高挑选效率。

需要注意的是,在将各待处理任务的任务状态更新为准备运行状态之后,需要将待处理任务列表清空,以便存储下次挑选的第二任务。

s384、根据当前第二任务算力值更新当前剩余算力值,并进入s370。

具体地,在将当前第二任务存入待处理任务列表后,可以将当前第二任务视为已经执行的任务,从而需要对当前剩余算力值进行更新,此时可以将当前剩余算力值减去当前第二任务算力值得到的算力值确定为当前剩余算力值,并返回执行s370的操作,以获取其它满足预设挑选条件的第二任务。

实施例四

图5为本发明实施例四提供的一种任务挑选装置的结构示意图,本实施例可适用于为目标施压机集群挑选适宜的压测任务以避免出现资源过载的情况,该装置具体包括:空载算力和确定模块510、第一任务算力和确定模块520和第二任务挑选模块530。

其中,空载算力和确定模块510,用于根据目标施压机集群中每个目标施压机的目标配置信息,以及参考施压机的参考配置信息和参考算力值,确定目标施压机集群对应的空载算力和;第一任务算力和确定模块520,用于确定在目标施压机集群中当前执行的各第一任务对应的第一任务算力和;第二任务挑选模块530,用于在空载算力和大于第一任务算力和时,对当前待测任务列表中的各第二任务进行遍历,并将满足预设挑选条件的第二任务的任务状态更新为准备运行状态,以在目标施压机集群中执行满足预设挑选条件的第二任务。

可选地,空载算力和确定模块510,包括:

性能比值确定单元,用于根据目标施压机集群中每个目标施压机的目标配置信息,以及参考施压机的参考配置信息,确定每个目标施压机与参考施压机之间的性能比值;

目标空载算力值确定单元,用于根据参考施压机的参考算力值和性能比值,确定每个目标施压机对应的目标空载算力值;

空载算力和确定单元,用于将各目标施压机对应的目标空载算力值进行相加,并将相加结果确定为目标施压机集群对应的空载算力和。

可选地,性能比值确定单元,具体用于:

根据参考施压机的参考核心数和参考主频,确定参考施压机对应的参考性能值;根据目标施压机集群中每个目标施压机的目标核心数和目标主频,确定每个目标施压机对应的目标性能值;将目标性能值与参考性能值的比值确定为目标施压机与参考施压机之间的性能比值。

可选地,第一任务算力和确定模块520,具体用于:

确定在目标施压机集群中当前执行的每个第一任务对应的各关联施压机,并采集每个关联施压机的关联配置信息、当前资源消耗信息和当前加载线程数;根据参考施压机的参考配置信息、参考算力值以及关联配置信息,确定每个关联施压机对应的关联空载算力值;根据关联空载算力值和当前资源消耗信息,确定每个关联施压机对应的当前消耗算力值;根据关联施压机对应的当前消耗算力值、当前加载线程数和第一任务对应的目标并发线程数,确定每个第一任务对应的第一任务算力值;将各第一任务对应的第一任务算力值进行相加,并将相加结果确定为各第一任务对应的第一任务算力和。

可选地,根据如下公式确定第一任务对应的第一任务算力值:

其中,s是第一任务对应的第一任务算力值;tm是第一任务对应的目标并发线程数;n是与第一任务关联的关联施压机的个数;ci是第i个关联施压机对应的当前消耗算力值;ti是第i个关联施压机对应的当前加载线程数。

可选地,第二任务挑选模块530,包括:

当前第二任务确定单元,用于根据空载算力和以及第一任务算力和,计算目标施压机集群对应的当前剩余算力值,并将当前待测任务列表中的第一个第二任务确定为当前第二任务;

当前第二任务算力值确定单元,用于根据预设计算规则、当前第二任务对应的压测脚本响应时间和目标并发线程数以及参考施压机的参考算力值,确定当前第二任务对应的当前第二任务算力值;

任务状态更新单元,用于若当前第二任务算力值小于或等于当前剩余算力值,则确定当前第二任务满足预设挑选条件,并将当前第二任务的任务状态更新为准备运行状态,以在目标施压机集群中执行当前第二任务;

当前第二任务更新单元,用于若当前第二任务算力值大于当前剩余算力值,则基于当前待测任务列表的排列顺序,将当前第二任务的下一第二任务更新为当前第二任务,并返回执行根据预设计算规则、当前第二任务对应的压测脚本响应时间和目标并发线程数以及参考施压机的参考算力值,确定当前第二任务对应的当前第二任务算力值的操作。

可选地,第二任务挑选模块530,具体用于:

当前第二任务确定单元,用于根据空载算力和以及第一任务算力和,计算目标施压机集群对应的当前剩余算力值,并将当前待测任务列表中的第一个第二任务确定为当前第二任务;

当前第二任务算力值确定单元,用于根据预设计算规则、当前第二任务对应的压测脚本响应时间和目标并发线程数以及参考施压机的参考算力值,确定当前第二任务对应的当前第二任务算力值;

最小阻塞任务确定单元,用于若当前第二任务算力值大于当前剩余算力值,且不存在最小阻塞任务,则在各第一任务中,挑选剩余压测时间最短的第一任务作为最小阻塞任务;

当前第二任务更新单元,用于若当前第二任务算力值大于当前剩余算力值,且存在最小阻塞任务,则基于当前待测任务列表的排列顺序,将当前第二任务的下一第二任务更新为当前第二任务,并返回执行根据预设计算规则、当前第二任务对应的压测脚本响应时间和目标并发线程数以及参考施压机的参考算力值,确定当前第二任务对应的当前第二任务算力值的操作;

任务状态更新单元,用于若当前第二任务算力值小于或等于当前剩余算力值,且不存在最小阻塞任务,则确定当前第二任务满足预设挑选条件,并将当前第二任务的任务状态更新为准备运行状态,以在目标施压机集群中执行当前第二任务;

压测时间检测单元,用于若当前第二任务算力值小于或等于当前剩余算力值,且存在最小阻塞任务,则检测当前第二任务的目标压测时间是否小于或等于最小阻塞任务对应的剩余压测时间;

任务状态更新单元,还用于若是,则确定当前第二任务满足预设挑选条件,并将当前第二任务的任务状态更新为准备运行状态,以在目标施压机集群中执行当前第二任务;

当前第二任务更新单元,还用于若否,则基于当前待测任务列表的排列顺序,将当前第二任务的下一第二任务更新为当前第二任务,并返回执行根据预设计算规则、当前第二任务对应的压测脚本响应时间和目标并发线程数以及参考施压机的参考算力值,确定当前第二任务对应的当前第二任务算力值的操作。

可选地,当前第二任务算力值确定单元,具体用于:

根据在参考施压机上脚本响应时间与最大线程数之间的分段线性函数,以及当前第二任务对应的压测脚本响应时间,确定压测脚本在参考施压机上的最大线程数;根据参考施压机的参考算力值和压测脚本对应的最大线程数,确定单线程脚本算力值;根据单线程脚本算力值和当前第二任务对应的目标并发线程数,确定当前第二任务对应的当前第二任务算力值。

可选地,该装置还包括:

待处理任务列表更新模块,用于在确定当前第二任务满足预设挑选条件之后,将满足预设挑选条件的当前第二任务存入待处理任务列表中,以更新待处理任务列表;

待处理任务数量检测模块,用于检测更新后的待处理任务列表包含的待处理任务数量是否等于预设任务数量;

待处理任务状态更新模块,用于若是,则将各待处理任务的任务状态更新为准备运行状态,以在目标施压机集群中执行各待处理任务;

当前剩余算力值更新模块,用于若否,则根据当前第二任务算力值更新当前剩余算力值,并基于当前待测任务列表的排列顺序,将当前第二任务的下一第二任务更新为当前第二任务,并返回执行根据预设计算规则、当前第二任务对应的压测脚本响应时间和目标并发线程数以及参考施压机的参考算力值,确定当前第二任务对应的当前第二任务算力值的操作。

本发明实施例所提供的任务挑选装置可执行本发明任意实施例所提供的任务挑选方法,具备执行任务挑选方法相应的功能模块和有益效果。

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