一种实现对服务器性能进行压力测试的方法、装置及系统与流程

文档序号:17989269发布日期:2019-06-22 00:39阅读:184来源:国知局
一种实现对服务器性能进行压力测试的方法、装置及系统与流程

本发明涉及游戏领域,尤其涉及一种实现对服务器性能进行压力测试的方法、装置及系统。



背景技术:

在测试中,系统压力测试指的是在重负载下更加强调稳健性、可用性和错误处理的测试,而不是在正常情况下被认为是正确行为的测试。特别是,此类测试的目标可能是确保软件不会在计算资源不足(例如内存或磁盘空间),异常高并发或拒绝服务攻击的情况下崩溃。可以使用脚本、机器人和各种拒绝服务工具对web服务器进行压力测试,以在峰值负载期间观察网站的性能。这些攻击通常不到一个小时,或直到找到web服务器可以容忍的数据量的限制。压力测试可能与负载测试形成对比:负载测试检查整个环境和数据库,同时测量响应时间,而压力测试侧重于已识别的事务处理,推动到一个级别,以便破坏事务处理或系统。比如现有技术cn107480015a公开的就是一种负载测试的方法。在压力测试期间,如果选择性地强调事务处理,则数据库可能不会经历太多负载,但是事务处理受到很大压力。另一方面,在负载测试期间,数据库经历了沉重的负载,而某些事务处理可能不会受到压力。系统压力测试(也称为压力测试)是将并发用户加载到系统可以处理的级别之外,因此它会在整个系统中最薄弱的环节中断。

在压力测试过程中,需要对压力源进行频率控制,目前市面上通用的做法是通过限制网络速率或带宽来控制,但是这样会限制所有网络包的发包速率,不能按流程、协议进行分类限制。

因此,需要提供一种解决按照流程、协议进行压力测试频率精准控制的解决方案。



技术实现要素:

本发明所要解决的技术问题和提出的技术任务是对现有技术进行改进,提供了一种实现对服务器性能进行压力测试的方法、装置及系统。

根据本公开实施例的第一方面,提供了一种实现对服务器性能进行压力测试的方法,所述方法包括以下步骤:

s1.客户端请求执行在服务器端预先设定的限速器的限速功能,实现对服务器的至少一项业务功能进行限速;

s2.针对服务器的至少一项业务功能进行压力测试并生成压力测试结果文件;

s3.根据所获取的压力检测结果文件生成压力检测结果报告。

在一种可选的实施方式中,所述步骤s1进一步包括以下步骤:

s101.在客户端和服务器端之间建立通信连接;

s102.客户端针对至少一项服务器功能通过远程调用向服务端申请注册限速器,限速器的注册信息包括与限速器关联的第一标识和预定的至少一个单位时间业务处理量阈值;

s103.服务端将收到的客户端新注册限速器的注册信息加入到限速器管理队列,从而实现对限速器的管理;

s104.客户端通过向服务器端发送与限速器关联的第一标识而发起限速器的执行请求;

s105.服务器端根据与限速器关联的第一标识调用限速器管理队列中的限速器,实现对相应服务器功能进行限速。

在一种可选的实施方式中,所述第一标识可以包括限速器名称。

在一种可选的实施方式中,所述至少一个单位时间业务处理量阈值包括每秒处理业务请求的数量。

在一种可选的实施方式中,所述步骤s105进一步包括以下步骤:

s1051.在限速器中设置第一计数器,用于计数客户端的业务请求的业务功能的执行次数;

s1052.判断限速器相对应的业务功能在本单位时间内申请执行次数是否已经达到预定的至少一个单位时间业务处理量阈值,如果尚未到达,则即刻返回客户端继续执行,同时限速器中设置的第一计数器的计数加1;如果已达至少一个单位时间业务处理量阈值,则阻塞与所述限速器相对应的业务功能的执行,并将其加入等待队列,直至下一单位时间将限速器中设置的第一计数器的计数归零,并重新进行判断是否需要继续阻塞。

在一种可选的实施方式中,所述单位时间可以为一秒。

在一种可选的实施方式中,所述服务器的至少一项业务功能包括聊天功能和交易功能。

根据本发明实施例的第二方面,提供了一种实现对服务器性能进行压力测试的装置,所述装置包括:

存储器,用于存储一应用程序;

处理器,用于运行所述应用程序以执行上述的方法。

根据本发明实施例的第三方面,提供了一种实现对服务器性能进行压力测试的系统,所述系统包括:

业务功能限速模块,其配置为通过客户端请求执行在服务器端预先设定的限速器的限速功能,实现对服务器的至少一项业务功能进行限速;

压力测试模块,其配置为针对服务器至少一项业务功能进行压力测试并生成压力测试结果文件;

压力检测结果生成模块,其配置为根据所获取的压力检测结果文件生成压力检测结果报告。

在一种可选的实施方式中,所述系统进一步包括:

通信模块,其配置为在客户端和服务器端之间建立通信连接;

限速器注册模块,其配置为通过客户端针对至少一项服务器功能通过远程调用向服务端申请注册限速器,限速器的注册信息包括与限速器关联的第一标识和预定的至少一个单位时间业务处理量阈值;

限速器管理模块,其配置为通过将收到的客户端新注册限速器的注册信息加入到限速器管理队列,从而实现对限速器的管理;

限速器执行请求模块,其配置为通过客户端向服务器端发送与限速器关联的第一标识而发起限速器的执行请求;

限速器调用模块,其配置为通过服务器端根据与限速器关联的第一标识调用限速器管理队列中的限速器,实现对相应服务器功能进行限速。

在一种可选的实施方式中,所述系统进一步包括:

在限速器中设置的第一计数器,配置用于计数客户端的业务请求的业务功能的执行次数;

业务功能执行次数判断模块,配置用于判断限速器相对应的业务功能在本单位时间内申请执行次数是否已经达到预定的至少一个单位时间业务处理量阈值,如果尚未到达,则即刻返回客户端继续执行,同时限速器中设置的第一计数器的计数加1;如果已达至少一个单位时间业务处理量阈值,则阻塞与所述限速器相对应的业务功能的执行,并将其加入等待队列,直至下一单位时间将限速器中设置的第一计数器的计数归零,并重新进行判断是否需要继续阻塞。

本发明的实施例提供的技术方案具有以下有益效果:

通过本发明提供的实现对服务器性能进行压力测试的方法、装置及系统,相对传统的修改代码或限制路由器、带宽等方式,可大幅降低人工修改代码的成本,和解决支持多任务支持同时并发进行的效率问题,且可以精准控制每个功能操作、协议的多种频率,例如以秒为单位进行对服务器的访问压力限制,更符合现实情况,对测试出来的结果更具有参考意义,同时,对于服务器的性能调优能够提供准确的压测数据依懒。针对传统基于网络发包和流量的限速,只能统一进行控制的弊端。本发明采用更灵活的cs结构实现多频率控制,可以在不同流程处,添加不同的限制频率,更真实的还原模拟压力测试场景。

附图说明

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

图1是根据本发明一实施例的一种实现对服务器性能进行压力测试的方法流程图;

图2是根据本发明一实施例的另一种实现对服务器性能进行压力测试的方法流程图;

图3是根据本发明一实施例的另一种实现对服务器性能进行压力测试的方法流程图;

图4是根据本发明一实施例的一种实现对服务器性能进行压力测试的装置框图;

图5是根据本发明一实施例的一种实现对服务器性能进行压力测试的系统框图;

图6是根据本发明一实施例的另一种实现对服务器性能进行压力测试的系统框图。

具体实施方式

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

在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括复数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。

如图1所示,图1是根据一示例性实施例示出的一种实现对服务器性能进行压力测试的方法,包括以下步骤:

在步骤s1中,客户端请求执行在服务器端预先设定的限速器的限速功能,实现对服务器的至少一项业务功能进行限速;服务器的至少一项业务功能包括响应与客户端的请求而实现的客户端之间的信息转发传递以及实现虚拟货币或虚拟物品的交易功能。比如在游戏服务器中,服务器的至少一项业务功能可以是不同玩家之间进行信息沟通交流的功能,以及实现各个玩家之间虚拟货币或者虚拟物品的买卖、赠送等等业务功能。

在步骤s2中,针对服务器的至少一项业务功能进行压力测试并生成所述压力测试结果文件;在该步骤中,可以针对压力测试结果文件的数量设置一阈值,每当满足预设的阈值条件时将压力测试结果文件备份到远端服务器并对应地删除本地服务器的所述压力测试结果文件,实现了在针对服务器的压力测试的过程中将所述压力测试结果文件从本地服务器转移到远端服务器,避免了由于针对本地服务器的压力测试过程中产生的压力测试结果文件的记录文件过于庞大而导致压力测试服务器的磁盘空间成为瓶颈,从而可以实现长时间的压力测试,使得压力测试结果更准确反映实际业务功能中提供的服务质量,比如在游戏服务器测试时候,更是需要长时间的测试,才能确保得到准确的压力测试数据报告,从而更好地完善和改进服务器性能以及软件性能。作为一优选的实施例,可以针对压力测试结果文件的总量文件大小设置一阈值,或者可以针对压力测试时间间隔设置一阈值,达到预设置的时间间隔就进行本地服务器压力测试结果文件的备份,本领域技术人员完全可以根据实际情况来进行设置。

在步骤s3中,根据所获取的压力检测结果文件生成压力检测结果报告。在该步骤中,可以根据实际情况调用压力检测结果文件中的特定数据来进行检测结果的分析,比如,可以选择服务器在压力测试过程中产生的中断记录,例如在执行某项业务功能时候,由于服务器而导致的功能中断数据。根据调用的数据,进行数据分析和汇总从而生成压力测试结果报告。

如图2所示,作为本公开一优选的实施例,在步骤s1中,实现针对服务器的某一项业务功能进行限速的步骤包括以下几步:

在步骤s101中,在客户端和服务器端之间建立通信连接;在该步骤中,客户端和装置服务端之间可以通过远程调用的方式建立通信连接基础;

在步骤s102中,客户端针对至少一项服务器功能通过远程调用向服务端申请注册限速器,限速器的注册信息包括与限速器关联的第一标识和预定的至少一个单位时间业务处理量阈值;可选地,第一标示可以是限速器的特定名称,作为限速器的唯一标识符。

在步骤s103中,服务端将收到的客户端新注册限速器的注册信息加入到限速器管理队列,从而实现对限速器的管理;在该步骤中针对限速器进行统一的管理。

在步骤s104中,客户端通过向服务器端发送与限速器关联的第一标识而发起限速器的执行请求;

在步骤s105中,服务器端根据与限速器关联的第一标识调用限速器管理队列中的限速器,实现对相应服务器功能进行限速。

如图3所示,步骤s105进一步包括以下步骤:

s1051.在限速器中设置第一计数器,用于计数客户端的业务请求的业务功能的执行次数;

s1052.判断限速器相对应的业务功能在本单位时间内申请执行次数是否已经达到预定的至少一个单位时间业务处理量阈值,如果尚未到达,则即刻返回客户端继续执行,同时限速器中设置的第一计数器的计数加1;如果已达至少一个单位时间业务处理量阈值,则阻塞与所述限速器相对应的业务功能的执行,并将其加入等待队列,直至下一单位时间将限速器中设置的第一计数器的计数归零,并重新进行判断是否需要继续阻塞。

作为优选的实施例,以上步骤可以设置为:

s101客户端c和服务端s之间通过远程调用建立通信基础;

s102客户端c通过远程调用向服务端s注册限速器信息,注册信息包括限速器名字(唯一标识)和预设的限制qps(每秒钟最大频率);

s103服务端s收到客户端c的注册信息后,将新注册的限速器加入到限速器管理队列,进行管理。服务端s可同时管理多个注册的限速器;

s104在任何需要限速的地方,客户端c根据限速器名字通过远程调用向服务端s发起执行请求;

s105服务端s在收到客户端c的执行请求后,根据限速器队列,判断该限速器在本秒内申请执行次数是否已经达到注册的限速上限,如果尚未到达,则即刻返回客户端c继续执行,同时该限速器本秒执行次数加1;如果已达上限,则阻塞客户端c,并将其加入等待队列,直至下秒,重新进行判断是否需要继续阻塞;从而达到限速的功能;

需要注意的是服务端s以秒为单位,每秒重置一次每个限速器执行次数。

作为本公开另一更详细的实施例,例如一次压测测试,需要对聊天和交易进行混合压力测试,要求聊天限制60qps,交易限制30qps,步骤s1中设置限速器的步骤包括:

第一步:测试案例里注册两个限速器

reg_speeder(“chat”,60)

reg_speeder(“trade”,30)

测试案例运行后首先向控制服务器上传这两个限速器设置

第二步:在聊天的测试案例循环的地方,添加wait(“chat”)

第三步:在交易的测试案例循环的地方,添加wait(“trade”)

第四步:测试案例运行到wait(“chat”)时,会去控制服务器请求执行,控制服务器根据步骤1里面注册的qps判断本秒是否已经达到上限,如果为达上限,则允许测试案例继续执行,如果已达上限,则将案例阻塞等待,并将请求加入队列,待下秒后恢复执行。从而达到每秒案例最多只能执行60次。

第五步:交易的测试案例也是一样。每个案例都有独立的控制器进行控制并且互不影响,从而达到针对不同流程和事务,精确控制频率。

如图4所示,作为本公开实施例的另一方面,提供了一种实现对服务器性能进行压力测试的装置,所述装置包括:

存储器,用于存储一应用程序;

处理器,用于运行所述应用程序以执行上述任一项实施例中所描述的方法。

其中,所述的存储器可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

相应地,本发明实施例还提供了一种压力测试服务器,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例所述实现对服务器性能进行压力测试的方法。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述压测服务器的控制中心,利用各种接口和线路连接整个压测服务器的各个部分。

与前述方法实施例相对应,本发明还提供了系统的实施例。对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以下所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

如图5所示,作为本公开实施例的另一方面,提供了一种实现对服务器性能进行压力测试的系统,所述系统包括:

业务功能限速模块101,其配置为通过客户端请求执行在服务器端预先设定的限速器的限速功能,实现对服务器的至少一项业务功能进行限速;

压力测试模块102,其配置为针对服务器至少一项业务功能进行压力测试并生成压力测试结果文件;

压力检测结果生成模块103,其配置为根据所获取的压力检测结果文件生成压力检测结果报告。

如图6所示,作为本公开实施例的优选实施方式,所述系统进一步包括:

通信模块104,其配置为在客户端和服务器端之间建立通信连接;

限速器注册模块105,其配置为通过客户端针对至少一项服务器功能通过远程调用向服务端申请注册限速器,限速器的注册信息包括与限速器关联的第一标识和预定的至少一个单位时间业务处理量阈值;

限速器管理模块106,其配置为通过将收到的客户端新注册限速器的注册信息加入到限速器管理队列,从而实现对限速器的管理;

限速器执行请求模块107,其配置为通过客户端向服务器端发送与限速器关联的第一标识而发起限速器的执行请求;

限速器调用模块108,其配置为通过服务器端根据与限速器关联的第一标识调用限速器管理队列中的限速器,实现对相应服务器功能进行限速。

应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作-根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。

进一步,该方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。

计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。

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