系统压力测试方法、装置、介质及设备

文档序号:1888928 发布日期:2021-11-26 浏览:4次 >En<

阅读说明:本技术 系统压力测试方法、装置、介质及设备 (System pressure testing method, device, medium and equipment ) 是由 王立元 于 2021-08-06 设计创作,主要内容包括:本公开涉及一种系统压力测试方法、装置、介质及设备。其中方法包括:获取系统在当前并发数下的第一性能指标数据;基于第一性能指标数据,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数;基于当前并发数、第一函数和第二函数,确定用于系统压力测试的下一并发数;将下一并发数作为当前并发数,触发执行获取系统在当前并发数下的第一性能指标数据,直到确定系统的最大每秒请求数和对应的响应时间。本公开技术方案通过实时获取的第一性能指标数据自动调整系统的并发数,提高了系统压力测试的效率。(The disclosure relates to a system pressure test method, device, medium and equipment. The method comprises the following steps: acquiring first performance index data of a system under the current concurrency number; determining a first function of requests per second versus concurrency and a second function of response time versus concurrency based on the first performance metric data; determining a next concurrency number for the system pressure test based on the current concurrency number, the first function and the second function; and taking the next concurrency number as the current concurrency number, and triggering and acquiring first performance index data of the system under the current concurrency number until the maximum request number per second and the corresponding response time of the system are determined. According to the technical scheme, the concurrency number of the system is automatically adjusted through the first performance index data acquired in real time, and the efficiency of system pressure testing is improved.)

系统压力测试方法、装置、介质及设备

技术领域

本公开涉及计算机网络技术领域,尤其涉及一种系统压力测试方法、装置、介质及设备。

背景技术

业务系统的部分性能指标,例如每秒请求数和响应时间等,可以用于表征业务系统所能承受的压力大小。业务系统面向成千上万的用户的访问,如果同一时刻请求访问业务系统的用户数量过多,则会造成业务系统死机。如果业务系统的性能不达标而上线运营,势必会给开发商带来损失。因此,在业务系统上线前需要对业务系统进行压力测试。

传统的压力测试需要测试人员手动触发系统的并发数,然后通过观察系统的性能指标变化情况,再继续人工手动调整并发数,如此一直循环迭代,直到找到系统的最优解。由此可见,现有的压力测试方法不但会消耗大量的时间,而且所有的压力测试流程全部需要人为调控,耗费了大量的人力,另外,现有的压力测试方法会受人的主观因素影响,无法精准的定位系统的最优解。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种系统压力测试方法、装置、介质及设备。

本公开提供了一种系统压力测试方法,包括:

获取系统在当前并发数下的第一性能指标数据,其中,所述第一性能指标数据包括每秒请求数和响应时间;

基于所述第一性能指标数据,确定所述每秒请求数关于并发数的第一函数,以及所述响应时间关于并发数的第二函数;

基于所述当前并发数、所述第一函数和所述第二函数,确定用于系统压力测试的下一并发数;

将所述下一并发数作为所述当前并发数,触发执行获取系统在当前并发数下的第一性能指标数据,直到确定所述系统的最大每秒请求数和对应的响应时间。

在一些实施例中,在获取系统在当前并发数下的第一性能指标数据之前,所述方法还包括:

获取所述系统在所述当前并发数下的第二性能指标数据;

基于所述第二性能指标数据,判断是否满足预设约束条件;

获取系统在当前并发数下的第一性能指标数据,包括:

当满足所述预设约束条件时,获取系统在当前并发数下的第一性能指标数据。

在一些实施例中,所述第二性能指标数据包括中央处理器占用率、内存占用率和接口请求错误率中的至少一种;

所述预设约束条件包括以下至少一种:

所述中央处理器占用率小于第一占用率阈值;

所述内存占用率小于第二占用率阈值;

所述接口请求错误率小于请求错误率阈值。

在一些实施例中,所述方法还包括:

当不满足所述约束条件时,获取所述系统在所述当前并发数下的第一性能指标数据,并将该第一性能指标数据中的每秒请求数作为系统的最大每秒请求数。

在一些实施例中,基于所述第一性能指标数据,确定所述每秒请求数关于并发数的第一函数,以及所述响应时间关于并发数的第二函数,包括:

分别对所述每秒请求数和所述响应时间取平均值,并基于所述平均值得到所述每秒请求数与并发数的第一映射关系,以及所述响应时间与所述并发数的第二映射关系;

基于所述第一映射关系和所述第二映射关系,采用非线性回归分析分别对所述每秒请求数和所述响应时间进行多项式拟合,得到所述第一函数和所述第二函数。

在一些实施例中,基于所述当前并发数、所述第一函数和所述第二函数,确定用于系统压力测试的下一并发数,包括:

基于所述当前并发数和所述第一函数,确定所述第一函数在所述当前并发数处的第一导数;

基于所述当前并发数和所述第二函数,确定所述第二函数在所述当前并发数处的第二导数;

将所述第一导数与所述第二导数的比值作为并发数迭代的梯度;

基于所述当前并发数和所述梯度,确定所述下一并发数。

在一些实施例中,确定所述系统的最大每秒请求数,包括:

当所述系统在当前并发数下的每秒请求数,小于或等于所述系统在上一并发数下的每秒请求数时,确定所述系统在上一并发数下的每秒请求数为最大每秒请求数。

在一些实施例中,在基于所述第一性能指标数据,确定所述每秒请求数关于并发数的第一函数,以及所述响应时间关于并发数的第二函数之前,所述方法还包括:

对所述第一性能指标数据进行预处理,以剔除无效的第一性能指标数据。

在一些实施例中,对所述第一性能指标数据进行预处理,包括:

基于所述第一性能指标数据,分别计算所述每秒请求数的第一标准差以及所述响应时间的第二标准差;

当所述第一标准差和所述第二标准差中的任一个小于或等于预设标准差时,对所述第一性能指标数据进行异常值检测;

当所述第一标准差和所述第二标准差均大于预设标准差时,触发执行获取系统在当前并发数下的第一性能指标数据,直到所述第一标准差和所述第二标准差中的任一个小于或等于预设标准差时,对所述第一性能指标数据进行异常值检测。

在一些实施例中,在对所述第一性能指标数据进行异常值检测之后,所述方法还包括:

对检测到的异常值进行均值化处理;

基于所述第一性能指标数据,确定所述每秒请求数关于并发数的第一函数,以及所述响应时间关于并发数的第二函数,包括:

基于所述第一性能指标数据中的正常值和均值化处理后的异常值,确定所述每秒请求数关于并发数的第一函数,以及所述响应时间关于并发数的第二函数。

在一些实施例中,所述方法还包括:

当触发执行获取系统在当前并发数下的第一性能指标数据的次数达到预设次数时,如果所述第一标准差和所述第二标准差均大于预设标准差,则获取最后一次触发执行获取系统在当前并发数下的第一性能指标数据时的第一性能指标数据,并将该第一性能指标数据中的每秒请求数作为系统的最大每秒请求数。

本公开提供了一种系统压力测试装置,包括:

第一性能指标数据获取模块,用于获取系统在当前并发数下的第一性能指标数据,其中,所述第一性能指标数据包括每秒请求数和响应时间;

并发数函数确定模块,用于基于所述第一性能指标数据,确定所述每秒请求数关于并发数的第一函数,以及所述响应时间关于并发数的第二函数;

下一并发数确定模块,用于基于所述当前并发数、所述第一函数和所述第二函数,确定用于系统压力测试的下一并发数;

重复执行模块,用于将所述下一并发数作为所述当前并发数,触发执行获取系统在当前并发数下的第一性能指标数据,直到确定所述系统的最大每秒请求数和对应的响应时间。

本公开还提供了一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行上述任一种方法的步骤。

本公开还提供了一种系统压力测试设备,包括:处理器和存储器;

所述处理器通过调用所述存储器存储的程序或指令,用于执行上述任一种方法的步骤。

本公开实施例提供的技术方案与现有技术相比具有如下优点:

本公开实施例提供的技术方案基于系统当前并发数下的每秒请求数和响应时间,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数,基于当前并发数、第一函数和第二函数,确定用于系统压力测试的下一并发数,从而在下一并发数下对系统进行压力测试,如此,不断自动调整并发数,直到得到系统的最优解,即系统能够承受的极限性能指标值。因此,本公开实施例提供的技术方案可以在没有人为参与的情况下,通过实时获取的每秒请求数和响应时间自动调整系统的并发数,并能够快速找到系统的最优解,提高了系统压力测试的效率,降低的时间及人力成本。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

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

图1为本公开实施例提供的一种系统压力测试方法的流程图;

图2为本公开实施例提供的系统压力测试装置的结构框图;

图3为本公开实施例提供的系统压力测试设备的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

目前,执行压力测试的过程较多采用在一段时间内以固定梯度执行压测。例如,人工手动设置初始并发数为3,然后以3为并发数对系统执行压力测试并持续运行30s,利用现有工具(例如jmeter工具)可以得到30s时间内的每秒请求数(Query Per Second,QPS)时序图和响应时间(Response Time,RT)时序图,然后再此基础上梯度+3,以6为并发数继续执行30s的时间,得到QPS时序图和RT时序图,依次类推,一直执行到预先设置的最大并发数,例如30,最后通过观察QPS时序图和RT时序图,得到系统的最大QPS和对应并发数下的RT。但是,该压力测试方法不但会消耗大量的时间,而且所有的压力测试流程全部需要人为调控,耗费了大量的人力,另外,现有的压力测试方法会受人的主观因素影响,无法精准的定位系统的最优解。

针对上述技术问题,本公开实施例提供了一种系统压力测试方法。具体的,图1为本公开实施例提供的一种系统压力测试方法的流程图。本方法可以由系统压力测试装置来执行,该装置可以采用软件和/或硬件的方式实现,可应用于系统压力测试设备中。如图1所示,该方法包括以下步骤:

S110、获取系统在当前并发数下的第一性能指标数据。

其中,第一性能指标数据包括每秒请求数和响应时间。

在一些实施例中,系统初始运行时,当前并发数可以是测试人员手动设置的,也可以是系统默认值。本公开实施例可以采用jmeter工具实时获取系统在当前并发数下运行时的每秒请求数和响应时间,其中,系统在当前并发数下的运行时间可根据实际情况进行设定,此处不做限制。

S120、基于第一性能指标数据,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数。

本公开实施例中,第一函数和第二函数均为连续的非线性函数。在实际应用中,在系统未达到饱和状态时,第一函数对应的第一曲线以及第二函数对应的第二曲线均随并发数的增大而增大,其中,第一曲线随并发数的增大其斜率逐渐减小,而第二曲线随并发数的增大其斜率逐渐增大。在系统达到饱和状态后,第一曲线会随着并发数的增大而保持不变或降低,而第二曲线会随着并发数的增加而不断增加,并且增加的程度会明显大于系统未达到饱和状态时的增加的程度。

由于第一性能指标数据只是在当前并发数下获取的,因此为了得到每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数,本公开实施例采用非线性回归分析拟合出第一函数和第二函数。在一些实施例中,分别对每秒请求数和响应时间取平均值,并基于平均值得到每秒请求数与并发数的第一映射关系,以及响应时间与并发数的第二映射关系;

基于第一映射关系和第二映射关系,采用非线性回归分析分别对每秒请求数和响应时间进行多项式拟合,得到第一函数和第二函数。

本公开实施例中,第一函数为fqps(x)=a1*x2+b1*x;第二函数为frt(x)=a2*x3+b2*x2+c*x;其中,x为并发数,a1、b1、a2、b2和c均为常数,且通过非线性回归分析进行多项式拟合得到。

S130、基于当前并发数、第一函数和第二函数,确定用于系统压力测试的下一并发数。

基于S120中提到的第一函数和第二函数对应曲线的变化规律,可采用梯度下降算法来寻找系统的拐点。第一函数和第二函数对应曲线的变化趋势不同,在几何图形上表现在曲线的斜率不同,而在数学公式上表现在函数的导数不同。在一些实施例中,基于当前并发数和第一函数,确定第一函数在当前并发数处的第一导数;基于当前并发数和第二函数,确定第二函数在当前并发数处的第二导数;将第一导数与第二导数的比值作为并发数迭代的梯度;基于当前并发数和梯度,确定下一并发数。

具体的,采用如下公式计算下一并发数:

其中,xi+1为下一并发数,xi为当前并发数,α为学习率,f′qps(xi)为第一函数在xi处的导数,即上述第一导数,f′rt(xi)为第二函数在xi处的导数,即上述第二导数。

在一些实施例中,学习率在一定程度上决定了算法收敛的快慢,根据第一性能指标数据随并发数变化的关系,首先我们的期望是并发数前期可以变化的快一些,而到了系统接近饱和状态的时候,随着并发数的变化,每秒请求数的变化就不那么明显了,这个时候我们期望并发数可以变化的慢一些,这样,可以更精确地找到对应的饱和点,而不会因为并发数变化太快而错过饱和点的值,因此,我们可以采用AdaDelta算法(一种学习率自适应调整的优化算法)来自适应调整学习率的值。具体公式为:

其中:β为全局学习率,取值范围为[0.1,1],ρ为指数衰减率,一般取值0.9,gt是第t轮迭代的梯度,E(g2)t表示t轮迭代的梯度平均值,ε表示一个极小值,比如0.000001,以避免分母为0。

S140、将下一并发数作为当前并发数,触发执行获取系统在当前并发数下的第一性能指标数据,直到确定系统的最大每秒请求数和对应的响应时间。

该步骤为循环迭代调整的并发数,即将下一并发数作为当前并发数执行S110至S140,直到确定系统的最大每秒请求数和对应并发数下的响应时间,该最大每秒请求数和对应并发数下的响应时间即为系统的最优解。

在一些实施例中,确定系统的最大每秒请求数,包括:

当系统在当前并发数下的每秒请求数,小于或等于系统在上一并发数下的每秒请求数时,确定系统在上一并发数下的每秒请求数为最大每秒请求数。

本公开实施例提供的系统压力测试方法,基于系统当前并发数下的每秒请求数和响应时间,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数,基于当前并发数、第一函数和第二函数,确定用于系统压力测试的下一并发数,从而在下一并发数下对系统进行压力测试,如此,不断自动调整并发数,直到得到系统的最优解,即系统能够承受的极限性能指标值。因此,本公开实施例提供的技术方案可以在没有人为参与的情况下,通过实时获取的每秒请求数和响应时间自动调整系统的并发数,并能够快速找到系统的最优解,提高了系统压力测试的效率,降低的时间及人力成本。

基于上述技术方案,在一些实施例中,在获取系统在当前并发数下的第一性能指标数据之前,方法还包括:

a、获取系统在当前并发数下的第二性能指标数据。

在一些实施例中,第二性能指标数据包括中央处理器占用率、内存占用率和接口请求错误率中的至少一种。

b、基于第二性能指标数据,判断是否满足预设约束条件。

本公开实施例中,预设约束条件用来约束是否执行本公开实施例提供的系统压力测试方法的步骤,在第二性能指标数据不满足预设约束条件时,说明系统已达到饱和状态,即系统的每秒请求数达到最大值,因此只有在第二性能指标数据满足预设约束条件时,执行系统压力测试方法的步骤。在一些实施例中,当不满足约束条件时,获取系统在当前并发数下的第一性能指标数据,并将该第一性能指标数据中的每秒请求数作为系统的最大每秒请求数。

预设约束条件包括以下至少一种:中央处理器占用率小于第一占用率阈值;内存占用率小于第二占用率阈值;接口请求错误率小于请求错误率阈值。其中,第一占用率阈值、第二占用率阈值和错误率阈值根据实际情况进行设置。

相应的,获取系统在当前并发数下的第一性能指标数据,包括:当满足预设约束条件时,获取系统在当前并发数下的第一性能指标数据。

在一些实施例中,在基于第一性能指标数据,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数之前,方法还包括:

对第一性能指标数据进行预处理,以剔除无效的第一性能指标数据。如此,在最大程度上避免因网络等外界环境因素而造成的性能指标波动。

由于系统的性能指标会受到网络状态等外界因素的影响,因此在获取第一性能指标数据之后,需要对第一性能指标数据进行预处理,判断是有效的第一性能指标数据之后,再基于第一性能指标数据,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数,否则,得到的结果不能代表系统的真实性能。当网络等外界情况不稳定时,系统的每秒请求数和响应时间就会产生较大的波动,即一段时间内大部分每秒请求数与该段时间内每秒请求数的平均值之间的差异较大,大部分响应时间与该段时间内响应时间的平均值之间的差异较大。考虑到标准差是一组数据平均值分散程度的一种度量,一个较大的标准差,代表大部分数值和其平均值之间差异较大,一个较小的标准差,代表这些数值较接近平均值。因此,可通过计算每秒请求数和响应时间的标准差来衡量系统当前的稳定性,标准差越小,说明系统越稳定,受外界环境因素影响就越小。

在一些实施例中,对第一性能指标数据进行预处理,包括:

基于第一性能指标数据,分别计算每秒请求数的第一标准差以及响应时间的第二标准差;当第一标准差和第二标准差中的任一个小于或等于预设标准差时,对第一性能指标数据进行异常值检测;当第一标准差和第二标准差均大于预设标准差时,触发执行获取系统在当前并发数下的第一性能指标数据,直到第一标准差和第二标准差中的任一个小于或等于预设标准差时,对第一性能指标数据进行异常值检测。

上述实施例中,当第一标准差和第二标准差均大于预设标准差时,说明每秒请求数和响应时间的波动较大,此时系统不稳定,获取的每秒请求数和响应时间并不能反映系统的真实性能,需重新获取系统在当前并发数下的每秒请求数和响应时间,继续计算重新获取的每秒请求数的第一标准差和响应时间的第二标准差,并与预设标准差进行比较,判断系统的稳定性,如果系统不稳定,再重新获取系统在当前并发数下的每秒请求数和响应时间。如此循环,直至判定系统稳定。另外,当第一标准差和第二标准差中的任一个小于或等于预设标准差时,说明每秒请求数和响应时间的波动较大,此时系统不稳定,但是,仍可能存在个别每秒请求数或响应时间与平均值的差异较大,这些与平均值的差异较大的每秒请求数或响应时间称为异常值。为消除这些异常值对后续计算的影响,可以去除异常值,也可以将异常值均值化。

示例性的,上述预设标准差可以包括第一标准差对应的第一预设标准差σ1和第二标准差对应的第二预设标准差σ2。在当前并发数下系统运行时间为T,在时间T内,实时监测每秒请求数和响应时间,可得到时间T内的每秒请求数的数据集,例如Dqps:{dqps1,dqps2,dqps3,……,dqpsn1},以及时间T内的响应时间的数据集,例如Drt:{drt1,drt2,drt3,……,drtn2};然后,基于数据集Dqps计算每秒请求数的第一标准差σqps,基于数据集Drt计算响应时间的第二标准差σrt;分别比较第一标准差σqps与第一预设标准差σ1的大小,以及第二标准差σrt与第二预设标准差σ2的大小,当第一标准差σqps小于或等于第一预设标准差σ1,或第二标准差σrt小于或等于第二预设标准差σ2时,对第一性能指标数据进行异常值检测;当第一标准差σqps大于第一预设标准差σ1,且第二标准差σrt大于第二预设标准差σ2时,触发执行获取系统在当前并发数下的第一性能指标数据。

上述实施例中,可通过箱型图的方法进行异常值检测。

在一些实施例中,在对第一性能指标数据进行异常值检测之后,方法还包括:对检测到的异常值进行均值化处理,以消除异常值带来的波动。相应的,基于第一性能指标数据,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数,包括:基于第一性能指标数据中的正常值(除异常值外的第一性能指标数据)和均值化处理后的异常值,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数。基于上述实施例,可第一性能指标数据中的正常值和均值化处理后的异常值取平均值,得到每秒请求数与并发数的映射关系,以及响应时间与并发数的映射关系,再基于映射关系并采用非线性回归分析拟合出第一函数和第二函数。

在一些实施例中,方法还包括:

当触发执行获取系统在当前并发数下的第一性能指标数据的次数达到预设次数时,如果第一标准差和第二标准差均大于预设标准差,则获取最后一次触发执行获取系统在当前并发数下的第一性能指标数据时的第一性能指标数据,并将该第一性能指标数据中的每秒请求数作为系统的最大每秒请求数。由此,为防止因外界因素长时间不稳定而导致触发执行获取系统在当前并发数下的第一性能指标数据的操作无限循环下去,本实施例设置上述触发操作的次数上限值,即预设次数,以结束循环操作,同时,当触发执行获取系统在当前并发数下的第一性能指标数据的次数达到预设次数时,我们便认为系统已经达到了最大每秒请求数,因此将最后一次获取的每秒请求数作为当前环境下的最大每秒请求数。

对应于本公开实施例提供的系统压力测试方法,本公开实施例还提供了一种系统压力测试装置。图2为本公开实施例提供的系统压力测试装置的结构框图,如图2所示,该系统压力测试装置包括:

第一性能指标数据获取模块21,用于获取系统在当前并发数下的第一性能指标数据,其中,第一性能指标数据包括每秒请求数和响应时间;

并发数函数确定模块22,用于基于第一性能指标数据,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数;

下一并发数确定模块23,用于基于当前并发数、第一函数和第二函数,确定用于系统压力测试的下一并发数;

重复执行模块24,用于将下一并发数作为当前并发数,触发执行获取系统在当前并发数下的第一性能指标数据,直到确定系统的最大每秒请求数和对应的响应时间。

在一些实施例中,系统压力测试装置还包括:

第二性能指标数据获取模块,用于在获取系统在当前并发数下的第一性能指标数据之前,获取系统在当前并发数下的第二性能指标数据;

约束条件判断模块,用于基于第二性能指标数据,判断是否满足预设约束条件;

第一性能指标数据获取用于:

当满足预设约束条件时,获取系统在当前并发数下的第一性能指标数据。

在一些实施例中,第二性能指标数据包括中央处理器占用率、内存占用率和接口请求错误率中的至少一种;

预设约束条件包括以下至少一种:

中央处理器占用率小于第一占用率阈值;

内存占用率小于第二占用率阈值;

接口请求错误率小于请求错误率阈值。

在一些实施例中,系统压力测试装置还包括:

最优解确定模块,用于当不满足约束条件时,获取系统在当前并发数下的第一性能指标数据,并将该第一性能指标数据中的每秒请求数作为系统的最大每秒请求数。

在一些实施例中,并发数函数确定模块22用于:

分别对每秒请求数和响应时间取平均值,并基于平均值得到每秒请求数与并发数的第一映射关系,以及响应时间与并发数的第二映射关系;

基于第一映射关系和第二映射关系,采用非线性回归分析分别对每秒请求数和响应时间进行多项式拟合,得到第一函数和第二函数。

在一些实施例中,下一并发数确定模块23用于:

基于当前并发数和第一函数,确定第一函数在当前并发数处的第一导数;

基于当前并发数和第二函数,确定第二函数在当前并发数处的第二导数;

将第一导数与第二导数的比值作为并发数迭代的梯度;

基于当前并发数和梯度,确定下一并发数。

在一些实施例中,最优解确定模块还用于:

当系统在当前并发数下的每秒请求数,小于或等于系统在上一并发数下的每秒请求数时,确定系统在上一并发数下的每秒请求数为最大每秒请求数。

在一些实施例中,系统压力测试装置还包括:

数据预处理模块,用于在基于第一性能指标数据,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数之前,对第一性能指标数据进行预处理,以剔除无效的第一性能指标数据。

在一些实施例中,数据预处理模块用于:

基于第一性能指标数据,分别计算每秒请求数的第一标准差以及响应时间的第二标准差;

当第一标准差和第二标准差中的任一个小于或等于预设标准差时,对第一性能指标数据进行异常值检测;

当第一标准差和第二标准差均大于预设标准差时,触发执行获取系统在当前并发数下的第一性能指标数据,直到第一标准差和第二标准差中的任一个小于或等于预设标准差时,对第一性能指标数据进行异常值检测。

在一些实施例中,系统压力测试装置还包括:

异常值处理模块,用于在对第一性能指标数据进行异常值检测之后,对检测到的异常值进行均值化处理;

并发数函数确定模块22用于:

基于第一性能指标数据中的正常值和均值化处理后的异常值,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数。

在一些实施例中,最优解确定模块还用于:

当触发执行获取系统在当前并发数下的第一性能指标数据的次数达到预设次数时,如果第一标准差和第二标准差均大于预设标准差,则获取最后一次触发执行获取系统在当前并发数下的第一性能指标数据时的第一性能指标数据,并将该第一性能指标数据中的每秒请求数作为系统的最大每秒请求数。

以上实施例公开的系统压力测试装置能够执行以上各实施例公开的系统压力测试方法,具有相同或相应的有益效果,为避免重复,在此不再赘述。

本公开实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储程序或指令,程序或指令使计算机执行上述任一种方法的步骤。

示例性地,程序或指令使计算机执行一种系统压力测试方法,该方法包括:

获取系统在当前并发数下的第一性能指标数据,其中,第一性能指标数据包括每秒请求数和响应时间;

基于第一性能指标数据,确定每秒请求数关于并发数的第一函数,以及响应时间关于并发数的第二函数;

基于当前并发数、第一函数和第二函数,确定用于系统压力测试的下一并发数;

将下一并发数作为当前并发数,触发执行获取系统在当前并发数下的第一性能指标数据,直到确定系统的最大每秒请求数和对应的响应时间。

可选的,该计算机可执行指令在由计算机处理器执行时还可以用于执行本公开实施例所提供的上述任意系统压力测试方法的技术方案,实现对应的有益效果。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本公开实施例可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等),执行本公开各个实施例所述的方法。

在上述实施方式的基础上,本公开实施例还提供了一种系统压力测试设备,包括:处理器和存储器;处理器通过调用存储器存储的程序或指令,用于执行上述任一种方法的步骤,实现对应的有益效果。

在一些实施例中,图3示出了本公开实施例提供的一种系统压力测试设备的结构。参照图3,该系统压力测试设备可包括:

一个或多个处理器301,图3中以一个处理器301为例;

存储器302;

系统压力测试设备还可以包括:输入装置303和输出装置304。

系统压力测试设备中的处理器301、存储器302、输入装置303和输出装置304可以通过总线或者其他方式连接,图3中示例性地以通过总线连接为例示出其连接方式。

其中,存储器302作为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本公开实施例中的应用程序的方法对应的程序指令/模块(例如,附图2所示的第一性能指标数据获取模块21、并发数函数确定模块22、下一并发数确定模块23和重复执行模块24)。处理器301通过运行存储在存储器302中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的方法。

存储器302可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。

此外,存储器302可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。

在一些实施例中,存储器302可选包括相对于处理器301远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置303可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。

输出装置304可包括显示屏等显示设备。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种嵌入式异构多核处理器架构并行调试系统及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!