业务系统的线上压力测试的方法、装置及服务器
技术领域
本说明书实施例涉及数据处理技术领域,尤其涉及一种业务系统的线上压力测试的方法、装置及服务器。
背景技术
现有业务系统为了确立系统稳定性,通常会在线上环境或生产环境下进行压力测试,即针对业务系统进行线上压力测试,而在进行线上压力测试过程中,在压测流量逐渐增大过程中,在压测流量超过了系统极限会发生系统报错,此时,会因为压测导致的系统报错会对实际业务造成损失。
发明内容
本说明书实施例提供了一种业务系统的线上压力测试的方法、装置及服务器,在压测流量到达系统资源极值前自动熔断压测过程,降低实际业务损失的概率。
本说明书实施例第一方面提供了一种业务系统的线上压力测试的方法,包括:
获取待压测的业务系统的系统链路;
为所述系统链路中的每个资源设定对应的资源阈值;
在对所述业务系统进行压力测试过程中检测每个资源的资源实际值是否超过对应的资源阈值;
在检测到任意一个资源的资源实际值超过对应的资源阈值时,停止压力测试。
本说明书实施例第二方面提供了一种业务系统的线上压力测试的装置,包括:
系统链路获取单元,用于获取待压测的业务系统的系统链路;
资源阈值设定单元,用于为所述系统链路中的每个资源设定对应的资源阈值;
检测单元,用于在对所述业务系统进行压力测试过程中检测每个资源的资源实际值是否超过对应的资源阈值;
控制单元,用于在检测到任意一个资源的资源实际值超过对应的资源阈值时,停止压力测试。
本说明书实施例第三方面还提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述业务系统的线上压力测试的方法的步骤。
本说明书实施例第四方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时上述业务系统的线上压力测试的方法的步骤。
本说明书实施例的有益效果如下:
基于上述技术方案,为系统链路中的每个资源设定对应的资源阈值,且在进行压力测试过程中检测每个资源的资源实际值是否超过对应的资源阈值;在检测到任意一个资源的资源实际值超过对应的资源阈值时,停止压力测试,此时,当一个资源的资源实际值超过对应的资源阈值时,所述业务系统通常能够正常运转,此时停止压力测试,能够有效降低实际业务损失的概率。
附图说明
图1为本说明书实施例中业务系统的线上压力测试的应用场景示意图;
图2为本说明书实施例中业务系统的线上压力测试的方法的方法流程图;
图3为本说明书实施例中在对所述业务系统进行压力测试过程中检测每个资源的资源实际值是否超过对应的资源阈值的步骤流程图;
图4为本说明书实施例中业务系统的线上压力测试装置的结构示意图;
图5为本说明书实施例中服务器的结构示意图。
具体实施方式
为了更好的理解上述技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
请参见图1,为本申请说明书实施例提供了一种业务系统的线上压力测试的应用场景示意图。压测服务器10和业务服务器20。压测服务器10中安装有压测系统100,业务服务器20中设置有业务系统200,通过压测系统100对业务系统200进行压力测试,以及在进行压力测试过程中订阅业务系统200中的每个资源的资源实际值;并实时检测是否存在一个系统资源的资源实际值超过对应的资源阈值;在检测到存在一个系统资源的资源实际值超过对应的资源阈值时,自动停止压力测试,如此,在一个资源的资源实际值超过对应的资源阈值时,所述业务系统通常能够正常运转,此时停止压力测试,能够有效降低实际业务损失的概率。
第一方面,如图2所示,本说明书实施例提供一种业务系统的线上压力测试的方法,包括:
S202、获取待压测的业务系统的系统链路;
S204、为所述系统链路中的每个资源设定对应的资源阈值;
S206、在对所述业务系统进行压力测试过程中检测每个资源的资源实际值是否超过对应的资源阈值;
S208、在检测到任意一个资源的资源实际值超过对应的资源阈值时,停止压力测试。
本说明书实施例中,所述业务系统可以包含多个子系统,所述系统链路为所述业务系统中完成某项功能/某个请求时经过的所有子系统。
其中,在步骤S202中,可以通过设定流量的压测请求对所述业务系统进行链路探测,探测出所述系统链路,其中,所述设定流量为小于所述业务系统所能支撑的最大流量,例如所述业务系统的最大流量为每秒100万次请求即100万qps,所述设定流量可以为10qps、20qps等小于100万qps的值。
具体来讲,在对所述业务系统进行链路探测时,可以首先针对所述业务系统编写对应的压测脚本,所述压测脚本包括需要进行压测的特征请求(即压测请求)和初始压测流量例如为10qps;在所述压测脚本编写完成之后,获取所述设定流量,然后通过所述设定流量的压测请求对所述业务系统进行链路探测,探测出所述系统链路。
例如,以业务系统A为例,随机选取一个小流量例如20qps作为所述设定流量,然后通过20qps的压测请求对A进行链路探测,探测出A的系统链路包括a1子系统、a2子系统和a3子系统。
接下来执行步骤S204,在该步骤中,可以自动或手动为每个资源设定对应的资源阈值。在所述系统链路包括多个子系统时,为所述系统链路中每个子系统的每个资源设定对应的资源阈值。
本说明书实施例中,所述资源包括CPU、I/O、线程池和数据库连接池等。进一步地,在为每个资源设定对应的资源阈值时,每个资源的资源阈值小于该资源的资源极值,每个资源的资源极值为该资源能够负荷的最大值,例如cpu的资源极值为CPU使用率100%。
具体来讲,在为每个资源设定对应的资源阈值时,可以首先获取每个资源的自身性能,以此来为每个资源设定对应的资源阈值。
例如,以cpu为例,cpu的性能为2.2HZ,则为cpu设定对应的资源阈值可以为2.2HZ的90%、89%和85%等。相应地,以线程池为例,线程池中能设置的最大线程为100,则为该线程池设定对应的资源阈值为100的90%、85%和81%等。相应地,以数据库db连接池为例,若db连接池的最大数量为200,则可以为该db连接池设定对应的资源阈值为180、175和170等。
接下来执行步骤S206,在该步骤中,可以按照传统压测流程对所述业务系统进行压力测试,在压力测试过程中订阅每个资源的资源实际值,并检测订阅的每个资源的资源实际值是否超过对应的资源阈值。
本说明书实施例中,所述订阅每个资源的资源实际值指的是实时获取每个资源的资源实际值,在订阅每个资源的资源实际值时,可以每秒1次或者每5秒一次获取每个资源的资源实际值。
具体来讲,在对所述业务系统进行压力测试时,可以在所述初始压测流量下对所述业务系统进行压力测试,然后逐渐提高压测流量来对所述业务系统进行压力测试,并同时订阅每个资源的资源实际值,然后检测每个资源的资源实际值是否超过对应的资源阈值。若检测到任意一个资源的资源实际值超过对应的资源阈值时,执行步骤S208;若检测到未存在任意一个资源的资源实际值超过对应的所述阈值阈值时,在间隔设定时间之后,提高压测流量对所述业务系统进行压力测试,直至检测到任意一个资源的资源实际值超过对应的资源阈值,然后执行步骤S208。
例如,以A为例,在探测到A的系统链路包括a1子系统、a2子系统和a3子系统之后,为a1、a2和a3中的每个资源设定对应的资源阈值,然后在10qps下对A进行压力测试,在压力测试过程中每秒获取一次a1、a2和a3中的每个资源的资源实际值,并针对每次获取到a1、a2和a3中的每个资源,检测每个资源的资源实际值是否超过对应的资源阈值。
例如,在压力流量为50qps时,a1、a2和a3中的每个资源的资源实际值与对应资源阈值具体如表1所示:
表1
其中,表1中的Mem表示线程池,Db表示数据库。
以及,由于表1中的每个资源的资源实际值均不超过对应的资源阈值,然后逐渐提高压力流量,直至在压力流量提高为100qps时,a1、a2和a3中的每个资源的资源实际值与对应资源阈值具体如表2所示:
|
a1子系统 |
a2子系统 |
a3子系统 |
cpu资源阈值 |
90% |
90% |
90% |
cpu资源实际值 |
60% |
91% |
60% |
Mem资源阈值 |
80% |
80% |
80% |
Mem资源实际值 |
30% |
30% |
30% |
Db连接池的资源阈值 |
50 |
50 |
50 |
Db连接池的资源实际值 |
30 |
20 |
20 |
I/O资源阈值 |
100M/S |
100M/S |
100M/S |
I/O资源实际值 |
20M/S |
50M/S |
50M/S |
表2
此时,通过表2检测到a2子系统中的cpu的资源实际值为91%,而a2子系统中的cpu的资源阈值为90%,由于91%>90%,则检测到a2子系统中cpu的资源实际值超过对应的资源阈值,然后执行步骤S208。
本说明书实施例中,步骤S206的具体执行过程可以参考图3,首先执行步骤B1、在指定qps下开始压力测试,即在指定qps下对所述业务系统进行压力测试,其中,所述指定qps通常为初始压测流量,也可以重新设置;然后执行B2、维持设定时间,即在指定qps下对所述业务系统进行压力测试并持续所述设定时间,所述设定时间可以根据实际情况进行设定,例如可以为1秒(s)、2s等;并在执行B2过程中,检测每个资源的资源实际值是否超过对应的资源阈值,若没有任意一个资源的资源实际值未超过对应的资源阈值,则加压并执行B1,即增加压测流量,例如指定qps为10qps,若加压为增加5qps的流量,则在15qps下执行步骤B1;如此,通过循环执行B1和B2,直至检测到任意一个资源的资源实际值超过对应的资源阈值时,执行步骤B3、停止压力测试。
在检测到任意一个资源的资源实际值超过对应的资源阈值时,执行步骤S208,自动停止压力测试,而一个资源的资源实际值超过对应的资源阈值时,所述业务系统通常能够正常运转,此时停止压力测试,能够有效降低实际业务损失的概率。
另外,由于每个资源的资源阈值小于该资源的资源极值,使得在检测到任意一个资源的资源实际值超过对应的资源阈值时,所述任意一个资源的资源实际值未达到对应的资源极值,从而能够确保超过对应的资源阈值的资源能够正常运行,使得所述业务系统正常运转,如此,能够在压测流量到达系统资源极值前自动熔断压测过程,降低实际业务损失的概率。
例如,参见表2,表2中到a2子系统中的cpu的资源实际值为91%大于cpu资源阈值90%,而cpu的资源极值为100%,如此,可以确定所述任意一个资源为a2子系统中的cpu,且cpu的资源实际值未达到对应的资源极值,从而能够在压测流量到达系统资源极值前自动熔断压测过程,降低实际业务损失的概率。
本说明书另一实施例中,在检测到任意一个资源的资源实际值超过对应的资源阈值时,将所述任意一个资源的资源实际值作为所述该资源的超标阈值并记录,此时,会记录所述该资源的超标阈值,以供后续问题定位优化使用。如此,可以将所述该资源的超标阈值作为所述系统链路的系统瓶颈资源,作为优化排查问题的出发点使用。
具体来讲,在所述任意一个资源为cpu时,可以考虑计算逻辑问题以降低计算量来促使cpu的资源实际值降低;以及在所述任意一个资源为线程池时,可以考虑增加线程池中的线程数量等,本申请不作具体限制。
第二方面,基于与第一方面的同一发明构思,本说明书实施例提供一种业务系统的线上压力测试的装置,如图4所示,包括:
系统链路获取单元401,用于获取待压测的业务系统的系统链路;
资源阈值设定单元402,用于为所述系统链路中的每个资源设定对应的资源阈值;
检测单元403,用于在对所述业务系统进行压力测试过程中检测每个资源的资源实际值是否超过对应的资源阈值;
控制单元404,用于在检测到任意一个资源的资源实际值超过对应的资源阈值时,停止压力测试。
在一种可选的实施方式中,系统链路获取单元401,具体用于通过设定流量的压测请求对所述业务系统进行链路探测,探测出所述系统链路。
在一种可选的实施方式中,资源阈值设定单元402,具体用于在所述系统链路包括有多个子系统时,为所述系统链路中每个子系统的每个资源设定对应的资源阈值。
在一种可选的实施方式中,所述装置还包括:
记录单元,用于在检测到任意一个资源的资源实际值超过对应的资源阈值时,将所述任意一个资源的资源实际值作为所述该资源的超标阈值并记录。
在一种可选的实施方式中,每个资源的资源阈值小于该资源的资源极值。
第三方面,基于与前述实施例中业务系统的线上压力测试的方法同样的发明构思,本说明书实施例还提供一种服务器,如图5所示,包括存储器504、处理器502及存储在存储器504上并可在处理器502上运行的计算机程序,所述处理器502执行所述程序时实现前文所述业务系统的线上压力测试的方法的任一方法的步骤。
其中,在图5中,总线架构(用总线500来代表),总线500可以包括任意数量的互联的总线和桥,总线500将包括由处理器502代表的一个或多个处理器和存储器504代表的存储器的各种电路链接在一起。总线500还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口505在总线500和接收器501和发送器503之间提供接口。接收器501和发送器503可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器502负责管理总线500和通常的处理,而存储器504可以被用于存储处理器502在执行操作时所使用的数据。
第四方面,基于与前述实施例中业务系统的线上压力测试的方法的发明构思,本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前文所述业务系统的线上压力测试的方法的任一方法的步骤。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本说明书的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本说明书范围的所有变更和修改。
显然,本领域的技术人员可以对本说明书进行各种改动和变型而不脱离本说明书的精神和范围。这样,倘若本说明书的这些修改和变型属于本说明书权利要求及其等同技术的范围之内,则本说明书也意图包含这些改动和变型在内。