CN111240838A - 一种压力测试方法和装置 - Google Patents

一种压力测试方法和装置 Download PDF

Info

Publication number
CN111240838A
CN111240838A CN202010015329.0A CN202010015329A CN111240838A CN 111240838 A CN111240838 A CN 111240838A CN 202010015329 A CN202010015329 A CN 202010015329A CN 111240838 A CN111240838 A CN 111240838A
Authority
CN
China
Prior art keywords
pressure measurement
pressure
node
machine
rps
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010015329.0A
Other languages
English (en)
Other versions
CN111240838B (zh
Inventor
吴炜峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202010015329.0A priority Critical patent/CN111240838B/zh
Publication of CN111240838A publication Critical patent/CN111240838A/zh
Application granted granted Critical
Publication of CN111240838B publication Critical patent/CN111240838B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Testing Of Devices, Machine Parts, Or Other Structures Thereof (AREA)
  • Measuring Fluid Pressure (AREA)

Abstract

本发明实施例提供了一种压力测试方法和装置,应用于控制机,控制机与施压机和待测试服务器通信,施压机中设置有代理节点,所述的方法包括:获取压测任务数据,以及多个施压机的性能数据;根据压测任务数据和多个施压机的性能数据,确定各个施压机的目标压测任务数据;根据各个施压机的目标压测任务数据生成压测指令;将压测指令发送至对应的施压机;施压机用于采用代理节点根据压测指令创建多个压测节点,并采用多个压测节点执行压测指令中的压测任务,向待测试服务器发送网络请求。使得分配给施压机的压测任务更符合施压机的实际情况,能够更好的执行压测任务,提高对待测试服务器性能测试的准确率。

Description

一种压力测试方法和装置
技术领域
本发明涉及数据处理技术领域,特别是涉及一种压力测试方法和一种压力测试装置。
背景技术
随着移动互联网用户群体的不断扩大,对网络游戏等热门互联网应用的服务器性能要求是越来越高,为了确保服务器面对大量用户同时在线时运行稳定,服务器外放使用前都必须经过压力测试验证,通过压测工具模拟大量用户同时在线操作,验证服务器各项性能指标如CPU(Central Processing Unit,中央处理器)占用、内存占用、IO(Input/Output,输入/输出)使用率、并发请求数量、协议响应时间等满足实际外放需求。
随着网络服务器性能要求的不断提高和业务功能的不断增加,对压测装置的要求也是越来越高,特别是要求压测装置可以提供的最大网络请求并发数量的上限是越来越大。在单个施压机器上部署运行单个压测应用程序时由于施压机器本身性能限制,可提供的请求并发数已难以满足压测需求,所以目前主流的压测方法中都会将压测装置分布在多个施压机器上,各施压机上运行若干个压测节点,通过集群方式扩大请求并发数。
压测节点分布式运行在不同施压机上时,由于各个机器可能性能存在差异且压测过程常会遇到与其他应用一起工作而导致互相抢占机器资源,因此实际工作中很难准确预估各压测节点可以支撑的最大并发请求上限,而目前普遍做法是给压测节点预设压测请求并发数,压测节点工作过程按照参数每秒稳定创建相应网络请求数到服务器施压,在产生并发数没达到所有压测节点本身性能瓶颈前,这样的工作方式没什么问题,所有压测节点都能稳定输出请求到服务器完成各自的压测任务,但当遇到施压机性能问题导致某一个压测节点因CPU负载过高、网络端口等待释放等原因无法稳定产出目标请求并发数时,整个压测装置就会因为某个压测节点拖累而无法达到预期的压测目标。
此外,压测节点本身超负荷运行压测节点会对压测数据采集造成一些干扰,压测节点发送网络请求过程本地负载过高而发生阻塞,压测节点记录的请求处理时间会延长,甚至超时报错,这些异常的压测请求数据容易被误认为是被压测服务器负载出现问题,导致误报压测问题。
实际压测过程中需要确保压测节点请求负载不超施压机负荷,而集群压测时如何准确给各压测节点分配合理并发请求负载是个难题,常用的给压测节点预设负载的方式需要提前试验采集各集群施压机合理的负载上限,操作耗时,且工作过程施压机可用系统资源抢占等原因也会导致压测节点负载上限波动而不准,目前尚没有一个完美的压测方案可以很好地克服上述问题。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种压力测试方法和相应的一种压力测试装置。
第一方面,本发明实施例公开了一种压力测试方法,应用于控制机,所述控制机与施压机和待测试服务器通信,所述施压机中设置有代理节点,所述的方法包括:
获取压测任务数据,以及多个施压机的性能数据;
根据所述压测任务数据和所述多个施压机的性能数据,确定各个施压机的目标压测任务数据;
根据所述各个施压机的目标压测任务数据生成压测指令;
将所述压测指令发送至对应的施压机;所述施压机用于采用所述代理节点根据所述压测指令创建多个压测节点,并采用所述多个压测节点执行所述压测指令中的压测任务,向所述待测试服务器发送网络请求。
可选地,所述压测任务数据包括压测总请求负载参数和压测任务;
所述根据所述压测任务数据和所述多个施压机的性能数据,确定各个施压机的目标压测任务数据,包括:
根据所述压测总请求负载参数、压测任务和所述多个施压机的性能数据,确定各个施压机的原始压测请求负载参数;
根据所述各个施压机的原始压测请求负载参数和压测任务,确定各个施压机的目标压测任务数据。
第二方面,本发明实施例公开了一种压力测试方法,应用于施压机,所述施压机中设置有代理节点,所述施压机与控制机和待测试服务器通信,所述的方法包括:
所述代理节点接收所述控制机发送的压测指令;所述压测指令包括原始压测请求负载参数和压测任务;
所述代理节点根据所述原始压测请求负载参数,创建多个压测节点,并确定各个压测节点的目标压测请求负载参数;
所述压测节点根据所述压测任务和所述目标压测请求负载参数,向所述待测试服务器发送网络请求。
可选地,还包括:
所述代理节点分别监测各个压测节点的资源利用率;
所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率大于或等于预设警戒值的第一压测节点;
所述代理节点将所述第一压测节点的目标压测请求负载参数调低。
可选地,所述代理节点将所述第一压测节点的目标压测请求负载参数调低,包括:
所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率小于所述预设警戒值的第二压测节点;
根据所述第一压测节点的资源利用率确定差额压测请求负载参数;将所述差额压测请求负载参数的压测任务分配至所述第二压测节点。
可选地,还包括:
所述代理节点读取施压机的性能数据;
所述代理节点将所述性能数据发送至所述控制机;所述控制机用于根据所述性能数据生成所述压测指令。
可选地,所述资源利用率包括如下的至少一项:
中央处理器利用率、内存占用率。
第三方面,本发明实施例公开了一种压力测试装置,应用于控制机,所述控制机与施压机和待测试服务器通信,所述施压机中设置有代理节点,所述的装置包括:
数据获取模块,用于获取压测任务数据,以及多个施压机的性能数据;
任务数据确定模块,用于根据所述压测任务数据和所述多个施压机的性能数据,确定各个施压机的目标压测任务数据;
压测指令生成模块,用于根据所述各个施压机的目标压测任务数据生成压测指令;
压测指令发送模块,用于将所述压测指令发送至对应的施压机;所述施压机用于采用所述代理节点根据所述压测指令创建多个压测节点,并采用所述多个压测节点执行所述压测指令中的压测任务,向所述待测试服务器发送网络请求。
可选地,所述压测任务数据包括压测总请求负载参数和压测任务;
所述压测指令生成模块包括:
参数确定子模块,用于根据所述压测总请求负载参数、压测任务和所述多个施压机的性能数据,确定各个施压机的原始压测请求负载参数;
任务数据确定子模块,用于根据所述各个施压机的原始压测请求负载参数和压测任务,确定各个施压机的目标压测任务数据。
第四方面,本发明实施例公开了一种压力测试装置,应用于施压机,所述施压机中设置有代理节点,所述施压机与控制机和待测试服务器通信,所述的装置包括:
压测指令接收模块,用于所述代理节点接收所述控制机发送的压测指令;所述压测指令包括原始压测请求负载参数和压测任务;
压测节点创建模块,用于所述代理节点根据所述原始压测请求负载参数,创建多个压测节点,并确定各个压测节点的目标压测请求负载参数;
网络请求发送模块,用于所述压测节点根据所述压测任务和所述目标压测请求负载参数,向所述待测试服务器发送网络请求。
可选地,还包括:
资源利用率监测模块,用于所述代理节点分别监测各个压测节点的资源利用率;
第一压测节点确定模块,用于所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率大于或等于预设警戒值的第一压测节点;
负载参数调低模块,用于所述代理节点将所述第一压测节点的目标压测请求负载参数调低。
可选地,所述负载参数调低模块包括:
第二压测节点确定子模块,用于所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率小于所述预设警戒值的第二压测节点;
差额压测请求负载参数确定子模块,用于根据所述第一压测节点的资源利用率确定差额压测请求负载参数;
压测任务分配子模块,用于将所述差额压测请求负载参数的压测任务分配至所述第二压测节点。
可选地,还包括:
性能数据读取模块,用于所述代理节点读取施压机的性能数据;
性能数据发送模块,用于所述代理节点将所述性能数据发送至所述控制机;所述控制机用于根据所述性能数据生成所述压测指令。
可选地,所述资源利用率包括如下的至少一项:
中央处理器利用率、内存占用率。
本发明实施例还公开了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如本发明实施例所述的一个或多个的方法的步骤。
本发明实施例还公开了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本发明实施例所述的一个或多个的方法的步骤。
本发明实施例包括以下优点:
在本发明实施例中,通过控制机接收施压机的性能数据,根据施压机的性能数据确定各个施压机的目标压测任务数据,使得分配给施压机的压测任务更符合施压机的实际情况,能够更好的执行压测任务,提高对待测试服务器性能测试的准确率。
附图说明
图1是本发明的一种压力测试方法实施例的步骤流程图;
图2是本发明的另一种压力测试方法实施例的步骤流程图
图3是本发明的一种压力测试装置的结构示意图;
图4是本发明的另一种压力测试方法实施例的步骤流程图
图5是本发明的一种压力测试装置实施例的结构框图;
图6是本发明的另一种压力测试装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明的一种压力测试方法实施例的步骤流程图,应用于控制机,所述控制机与施压机和待测试服务器通信,所述施压机中设置有代理节点,具体可以包括如下步骤:
步骤101,获取压测任务数据,以及多个施压机的性能数据;
在本发明实施例中,控制机用于管理施压机及压测任务,如建立与各个施压机的连接关系(称为施压机发现),为压测任务分配适当的施压机,以及控制施压机的测试流。施压机用于根据接收到的压测任务测试待测试服务器的性能。其中,施压机发现机制为:固定控制机的互联网协议地址(Internet Protocol Address,IP地址)和控制机服务端口号,各个施压机根据其内配置文件中记载的控制机IP地址和控制机服务端口号,向控制机发起TCP长连接,以使控制机连接到各个施压机。
代理节点AGNode可以是集成在施压机上的一个功能节点,用于接收控制机发送的压测指令,并通过在本地施压机上创建若干个压测节点STNode,分配压测任务到各个压测节点上执行。
在本发明实施例中,压测任务数据可以是用户设置的压测任务数据,包括总压测请求负载参数,和压测任务等数据。
具体的,控制机可以提供一图形用户界面,用户可以在图形用户界面上进行设置操作,设置总压测请求负载参数,和压测任务等数据,例如,图形用户界面上可以包括输入框,以及提交控件,用户可以通过输入框输入总压测请求负载参数,和压测任务等数据,通过点击提交控件,确定设置的总压测请求负载参数,和压测任务等数据。
在本发明实施例中,每个施压机中部署的代理节点,可以分别监测本地施压机的性能数据,并将这些性能数据发送至控制机。其中,性能数据可以包括施压机的CPU核心数,施压机的CPU利用率等数据。
步骤102,根据所述压测任务数据和所述多个施压机的性能数据,确定各个施压机的目标压测任务数据;
在本发明实施例中,控制机可以根据压测任务数据和所述多个施压机的性能数据,确定各个施压机的目标压测任务数据。目标压测任务数据即为需要分配给施压机的压测任务的各项数据。
步骤103,根据所述各个施压机的目标压测任务数据生成压测指令;
在本发明实施例中,控制机可以根据各个施压机的目标压测任务数据生成压测指令,以将压测指令发送至施压机,使得施压机执行用户设置的压测任务,测试待测试服务器的性能。
步骤104,将所述压测指令发送至对应的施压机;所述施压机用于采用所述代理节点根据所述压测指令创建多个压测节点,并采用所述多个压测节点执行所述压测指令中的压测任务,向所述待测试服务器发送网络请求。
在本发明实施例中,控制机可以将针对各个施压机生成的压测指令发送至对应的施压机。其中,施压机用于采用代理节点AGNode根据压测指令创建多个压测节点STNode,并采用多个压测节点STNode执行压测指令中的压测任务,向待测试服务器发送网络请求。
在本发明的一种优选实施例中,所述压测任务数据包括压测总请求负载参数和压测任务;
所述步骤102可以包括如下子步骤:
根据所述总压测请求负载参数、压测任务和所述多个施压机的性能数据,确定各个施压机的原始压测请求负载参数;根据所述各个施压机的原始压测请求负载参数和压测任务,确定各个施压机的目标压测任务数据。
在本发明实施例中,可以根据压测总请求负载参数、压测任务和所述多个施压机的性能数据,确定各个施压机的原始压测请求负载参数,并根据各个施压机的原始压测请求负载参数和压测任务,确定各个施压机的目标压测任务数据。
在具体实现中,控制机可以包括请求负载分配模块CNAlloc,当压测任务刚开始时,当前控制机的请求负载分配模块CNAlloc给各个施压机分配的RPS数据均为0,各个施压机的原始压测请求负载参数r可以通过如下公式计算:
Figure BDA0002358660990000081
其中,R为压测总请求负载参数,N为每个施压机的核心数,所有施压机总CPU核心数为∑N。
当压测任务已经在进行过程中时,如果控制机的请求负载分配模块CNAlloc有新增RPS需求
Figure BDA0002358660990000082
此时,各个施压机上已经分配了一定的RPS和产生一定的CPU使用率,当施压机的当前整体CPU使用率没有超过预设预设警戒值WL时,可以参与分配
Figure BDA0002358660990000083
则各个施压机可以分配的原始压测请求负载参数
Figure BDA0002358660990000086
可以通过如下公式计算:
Figure BDA0002358660990000084
其中,
Figure BDA0002358660990000085
为新增的压测总请求负载参数,Ncpu<wl为每个施压机的核心数,所有施压机总CPU核心数为∑Ncpu<wl
当控制机的请求负载分配模块CNAlloc中当前有标记某一个施压机处于不可分配状态时,则进行上述分配计算时需要将此施压机从可分配列表中移除,不参与分配计算。即在施压机总CPU核心数∑Ncpu<wl的计算过程中,不计算不可分配状态的施压机的核心数。
当压测进行过程中,控制机的请求负载分配模块CNAlloc有减少RPS需求
Figure BDA0002358660990000091
根据当前各施压机分配的RPS值R按比例减少,各个施压机减少的RPS可以通过如下公式计算:
Figure BDA0002358660990000092
在本发明实施例中,通过控制机接收施压机的性能数据,根据施压机的性能数据确定各个施压机的目标压测任务数据,使得分配给施压机的压测任务更符合施压机的实际情况,能够更好的执行压测任务,提高对待测试服务器性能测试的准确率。
参照图2,示出了本发明的一种压力测试方法实施例的步骤流程图,应用于施压机,所述施压机中设置有代理节点,所述施压机与控制机和待测试服务器通信,具体可以包括如下步骤:
步骤201,所述代理节点接收所述控制机发送的压测指令;所述压测指令包括原始压测请求负载参数和压测任务;
在本发明实施例中,代理节点AGNode可以接收控制机发送的压测指令,压测指令包括原始压测请求负载参数和压测任务。其中,原始压测请求负载参数的量化参数可以为RPS(Request Per Second,每秒请求数),即平均每秒需要发出的网络请求数量。
步骤202,所述代理节点根据所述原始压测请求负载参数,创建多个压测节点,并确定各个压测节点的目标压测请求负载参数;
在本发明实施例中,代理节点AGNode可以在本地施压机上启动一定数量的压测节点STNode,并这些压测节点STNode建立连接,代理节点AGNode可以通过网络向各个压测节点STNode发送的对应的压测数据,以分配各个压测节点STNode的目标压测请求负载参数。具体的,代理节点AGNode可以根据原始压测请求负载参数,创建多个压测节点STNode,并确定各个压测节点的目标压测请求负载参数。
代理节点AGNode可以包括请求负载分配模块AGAlloc,通过请求负载分配模块AGAlloc进行请求负载分配。具体的,各施压机的代理节点AGNode收到压测指令后,开始在本地施压机创建压测节点STNode执行压测任务,初始创建的压测节点STNode个数可以为本地施压机的CPU核心数的一半,压测节点STNode创建后,可以通过网络连接到代理节点AGNode。在STMng里创建数据管理对象后,负载分配模块AGAlloc就开始为创建节点分配RPS。
在本发明实施例中,负载分配模块AGAlloc为每个压测节点分配RPS的方式如下:通过实时线性预测模型根据本地所有压测节点STNode工作过程RPS和对应的进程的CPU使用率数据,来拟合计算出本地施压机单个压测节点工作时RPS值R与对应CPU使用率L的线性关系式L=W×R+B,其中,W,B可以通过所有当前工作中压测节点STNode的R与L的分布数据拟合计算得出,具体的,可以采用线性回归方程,W、B计算公式分别满足如下公式:
Figure BDA0002358660990000101
其中,Li是各个压测节点STNode采样的cpu使用率,Ri是各个压测节点STNode的RPS值,
Figure BDA0002358660990000102
是所以压测节点STNode采样的cpu使用率的平均值,
Figure BDA0002358660990000103
是所以压测节点STNode的RPS值的平均值。
负载分配模块AGAlloc具体为每个压测节点分配RPS的策略可以包括:
当所有压测节点当前尚未在工作中,已经分配的RPS均为0且无产生CPU利用率时,当前无法拟合出L与R的关系式,所以负载分配模块AGAlloc给当前各创建的压测节点STNode平均分配RPS;
当当前各个压测节点STNode都在工作中,有分配RPS和产生CPU利用率时,负载分配模块AGAlloc需要增加RPS值
Figure BDA0002358660990000111
计算出L与R的线性关系式L=W×R+B,然后根据给压测节点STNode设定的CPU利用率安全线阈值SL,预测出每个压测节点STNode可以允许的分配RPS上限,具体可以通过如下公式计算:
Figure BDA0002358660990000112
其中,L是压测节点当前CPU利用率,负载分配模块AGAlloc根据每个压测节点STNode允许分配的
Figure BDA0002358660990000113
作为上限,按比例分配RPS到各压测节点STNode,其中当前CPU利用率已经超过SL的压测节点STNode不参与分配RPS。
当负载分配模块AGAlloc中当前有标记某一个压测节点STNode处于不可分配状态时,则进行上述分配计算时需要将此压测节点STNode从可分配列表中移除,不参与分配。
当当前所有创建的压测节点STNode分配到了各自RPS上限后,各压测节点STNode总的增加分配的RPS值
Figure BDA0002358660990000114
仍小于需要分配的
Figure BDA0002358660990000115
时,负载分配模块AGAlloc必须通过创建新的压测节点来分配剩余这部分差额,其中,差额可以通过如下公式计算:
Figure BDA0002358660990000116
此时,负载分配模块AGAlloc创建新压测节点STNode的策略是:
当当前施压机总CPU利用率低于预设警戒值WL和当前施压机已创建压测节点STNode数量少于CPU核心数时,允许创建新的压测节点STNode,压测节点STNode创建数量为根据
Figure BDA0002358660990000117
和当前工作环境下预估分配到上限,具体上限值可以通过如下公式计算:
Figure BDA0002358660990000118
此时,需要的数量n可以通过如下公式计算:
Figure BDA0002358660990000119
其中,压测节点STNode的总数不高于CPU核心数N。
当新增的压测节点STNode数量仍不满足
Figure BDA00023586609900001110
的分配,则剩余的RPS施压机已经无法继续分配,代理节点AGNode将本施压机所能实际达到的最大RPS反馈给控制机CNNode,由控制机CNNode重新分配差额部分;
当负载分配模块AGAlloc有减少RPS需求
Figure BDA0002358660990000121
当前各分配了RPS的压测节点STNode按比例减少各自的RPS值,具体可以通过如下公式计算减少的RPS值:
Figure BDA0002358660990000122
步骤203,所述压测节点根据所述压测任务和所述目标压测请求负载参数,向所述待测试服务器发送网络请求。
在本发明实施例中,压测节点是作为执行实际压测任务的工作节点,每台施压机上可以部署若干个压测节点,各个施压机上所有压测节点在工作时,可以根据压测任务和目标压测请求负载参数,向待测试服务器发送网络请求。
具体的,可以通过设定帧率、定时间隔、单位时间内压测请求总量控制等方式,控制压测节点STNode按压测任务和目标压测请求负载参数,发网络请求到被压测服务器每秒的并发量。
压测节点实际执行并发网络请求方式可以通过线程池、协程、Epoll事件监听等方式实现,具体实现方式根据压测任务逻辑自行选择,在本发明实施例中对此并不限制。
在本发明实施例中,压测节点STNode可以包括RPS控制模块RPSCtrl,通过RPSCtrl控制压测节点STNode的RPS,并实时更新压测节点STNode压测过程中产生的实际RPS数据,并定期统计平均值,通过网络反馈给代理节点AGNode记录。
在本发明的一种优选实施例中,所述方法还可以包括如下子步骤:
所述代理节点分别监测各个压测节点的资源利用率;所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率大于或等于预设警戒值的第一压测节点;所述代理节点将所述第一压测节点的目标压测请求负载参数调低。
其中,预设警戒值可以是预先设置的利用率最大门限值,当压测节点的资源利用率大于或等于预设警戒值时,代表该压测节点的工作负荷较大,可能影响压测任务的准确性,需要降低该压测节点的工作负荷。
在本发明实施例中,资源利用率可以包括如下的至少一项:中央处理器利用率、内存占用率。
在本发明实施例中,代理节点可以分别监测各个压测节点的资源利用率。代理节点可以根据各个压测节点的资源利用率,确定资源利用率大于或等于预设警戒值的第一压测节点,代理节点将第一压测节点的目标压测请求负载参数调低,以降低第一压测节点工作负荷。作为一种示例,预设警戒值可以为80%,若压测节点的资源利用率为85%,则该压测节点的资源利用率大于预设警戒值,可以将第一压测节点的目标压测请求负载参数调低。
具体的,压测过程中,代理节点AGNode可以定时收集更新本地施压机上所有工作中压测节点STNode的实际RPS数据,与代理节点AGNode的负载分配模块AGAlloc中记录的各压测节点STNode分配的RPS做比较,如果有一个压测节点STNode的实际RPS达不到分配的目标RPS,则说明该压测节点压测节点在工作过程遇到某一方面的瓶颈,其中,可能导致原因包括压测节点STNode请求并发量过高,导致CPU利用率出现瓶颈、施压机本地网络连接量过大而导致网络端口不够用而出现请求等待、压测节点STNode工作线程池消费请求速度小于产生请求速度而导致请求堆积等,这时代理节点AGNode的负载分配模块AGAlloc需要减少该压测节点STNode分配的RPS到其实际可以达到的RPS,并标记该压测节点STNode在一段时间内为不可分配状态。
在本发明的一种优选实施例中,所述代理节点将所述第一压测节点的目标压测请求负载参数调低,包括:
所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率小于所述预设警戒值的第二压测节点;根据所述第一压测节点的资源利用率确定差额压测请求负载参数;将所述差额压测请求负载参数的压测任务分配至所述第二压测节点。
所述代理节点可以根据第一压测节点的资源利用率确定差额压测请求负载参数;并将差额压测请求负载参数的压测任务分配至第二压测节点,从而减少第一压测节点的压测任务,减低第一压测节点的工作负荷。
在本发明实施例中,代理节点可以根据各个压测节点的资源利用率,确定资源利用率小于预设警戒值的第二压测节点,并将第一压测节点的预设压测请求负载参数的压测任务,分配至所述第二压测节点。
具体的,代理节点AGNode的负载分配模块AGAlloc需要减少该压测节点STNode分配的RPS到其实际可以达到的RPS,并标记该压测节点STNode在一段时间内为不可分配状态,并将差额部分尝试通过在本地施压机的其他压测节点中重新分配,分配策略依据上述介绍的代理节点AGNode的RPS分配策略。
在本发明的一种优选实施例中,所述方法还可以包括如下步骤:
所述代理节点读取施压机的性能数据;所述代理节点将所述性能数据发送至所述控制机;所述控制机用于根据所述性能数据生成所述压测指令。
在本发明实施例中,代理节点可以读取施压机的性能数据,并将该性能数据发送至控制机,使得控制机可以根据施压机的性能数据,确定与该施压机对应的原始压测请求负载参数和压测任务,并根据该原始压测请求负载参数和压测任务生成压测指令。
具体的,在压测过程中,代理节点AGNode的负荷监控模块LDMtr可以实时采集本施压机上各个压测节点STNode和施压机整体的CPU利用率,采集方式可以通过调用操作系统相关命令获取,其中压测节点STNode的CPU利用率数据采集为节点进程里所有工作线程中CPU利用率最高的数据,施压机整体的CPU利用率为所有CPU核心的平均利用率。
当代理节点AGNode的负荷监控模块LDMtr监控到压测节点CPU使用率超过一定阈值后,就开始主动调整对应压测节点STNode的分配RPS。
代理节点AGNode的负荷监控模块LDMtr监控压测节点STNode可以采用三段式预警监控,将压测节点STNode的CPU利用率从低往高分别设置安全线SL,警戒线WL和休眠线DL,负荷监控模块LDMtr根据压测节点STNode的当前负荷处于的区间,对压测节点STNode的RPS分配作对应处理。具体的处理过程如下:
当压测节点CPU利用率低于SL,代表压测节点STNode工作负荷处于合理区间,当前不用调整压测节点的RPS,且该压测节点的RPS可以继续增加。
当压测节点CPU利用率高于SL,低于WL时,压测节点当前分配的RPS可以不用调整,但该压测节点也不能继续增加分配RPS。
当压测节点CPU利用率高于WL,低于DL时,负荷监控模块LDMtr可以通知代理节点AGNode的请求负载分配模块AGAlloc,开始降低压测节点分配的RPS,根据当前CPU利用率L与RPS的关系式推算需要减少的RPS数值,具体可以通过如下公式计算:
Figure BDA0002358660990000151
通过上述公式计算需要减少的RPS数值,预期使压测节点CPU利用率回到安全线,并标记该压测节点在一段时间内为不可分配RPS状态,避免压测节点RPS分配频繁波动。
当压测节点CPU使用率高于DL时,负荷监控模块LDMtr可以通知代理节点AGNode的请求负载分配模块AGAlloc,将压测节点分配的RPS降为零,压测节点后续不产生新的请求,进入休眠状态,并标记该压测节点在一段时间内为不可分配RPS状态,直到工作负荷降低到安全线以下,以及压测节点过了不可分配状态超时时间后,才允许重新给压测节点分配RPS。
压测节点STNode分配状态超时的变更由请求负载分配模块AGAlloc创建定时器,超时时间到了后执行刷新压测节点的可分配状态。
代理节点AGNode的请求负载分配模块AGAlloc给压测节点减少分配的RPS部分,优先从本地施压机其他允许分配RPS的节点里选择分配,或施压机允许创建新节点情况下创建新节点分配,分配策略依据上述步骤202中介绍的请求负载分配模块AGAlloc的RPS分配策略。
在本发明实施例中,当代理节点AGNode能在本地施压机成功重新分配控制机分配的RPS时,控制机给代理节点AGNode分配的RPS目标依旧能达到,代理节点AGNode无须反馈给控制机;当代理节点AGNode无法成功在本地施压机分配RPS时,则需要反馈给控制机当前施压机实际所能达到的RPS上限,由控制重新调整各施压机的RPS分配,控制机的控制模块CNAlloc将达不到目标的代理节点AGNode的RPS分配数值降为当前所能达到的上限值,并标记该施压机在一段时间内为不可分配状态,避免施压机RPS分配频繁波动。
施压机分配状态超时的变更由控制机的请求负载分配模块CNAlloc创建定时器超时时间到了后,执行刷新施压机对应的代理节点AGNode的可分配状态。
控制机的请求负载分配模块CNAlloc尝试重新分配施压机减少的RPS分配部分,从集群的当前其他允许分配RPS的施压机中按上述步骤102中介绍的控制机的请求负载分配模块CNAlloc给各施压机分配RPS的策略,通过施压机的CPU核心数和当前整体CPU利用率等信息作为分配依据分配RPS。
如果当前控制机的请求负载分配模块CNAlloc找不到施压机可以分配RPS,则控制机的请求负载分配模块CNAlloc记录下当前待分配的RPS数值,通过控制机的交互模块通知用户当前施压机资源不满足总体RPS分配需求,提醒用户增加接入施压机,同时控制机的请求负载分配模块CNAlloc定时检查各施压机是不是有可以满足分配RPS的,有则分配尚未分配的RPS。
在本发明实施例中,支持压测工作过程动态接入新增的施压机,新施压机部署好相应环境启动代理节点,当代理节点成功建立网络连接到控制机,在AGMng中创建数据对象后,CNAlloc便可以为施压机分配RPS。
在本发明实施例中,同时也支持工作过程中移除施压机,当施压机上代理节点关闭进程时,控制机CNNode检测到代理节点AGNode断开网络连接,则将对应施压机信息从AGMng中移除,CNAlloc重新分配被移除施压机的RPS数据,施压机被移除后,施压机上的当前工作中的压测节点检测到与代理节点AGNode已关闭,网络连接断开时,压测节点自行销毁进程,停止压测工作。
如图3示出了本发明的一种压力测试装置的结构示意图,其中,压测装置包括,中心节点(即控制机),代理节点,压测节点。
其中,中心节点CNNode,CNNode内包含一个网络服务器用于接受代理节点的网络连接;包含一个交互模块用于接收用户的指令;包含一个施压机上代理节点数据管理模块AGMng,用于管理各施压机上与中心节点建立连接的代理节点的数据;包含一个请求负载分配模块CNAlloc,用于给集群的各个施压机分配压测请求负载RPS数据。
在各个参与集群的施压机上部署一个代理节点AGNode,用于在本施压机上代理中心节点处理请求负载分配。AGNode内包含一个网络客户端,用于连接到CNNode进行通信;包含一个网络服务器模块,用于接受本施压机上创建的压测节点的网络连接;包含一个压测节点管理模块STMng,用于管理本地施压机所有创建的压测节点的数据管理;包含一个请求负载分配模块AGAlloc,用于给本地施压机上创建的压测节点分配压测请求负载RPS数据;包含一个负荷监控模块LDMtr,用于监控各压测节点和施压机整体工作负荷。
实际执行压测任务的是各集群施压机上的所有压测节点进程STNode,STNode由AGNode创建,STNode包含一个网络客户端,STNode创建启动后,网络客户端自动连上本地施压机的AGNode的网络服务器模块;STNode内包含一个RPS控制模块RPSCtrl,用于控制STNode的发压测请求频率,STNode的压测发请求行为逻辑由压测用例逻辑去控制,RPSCtrl通过在STNode工作过程通过定帧或定时方式,控制压测用例执行间隔或执行次数等方式,确保STNode在任意压测时间段内的RPS平稳在代理节点分配的目标值左右。
代理节点与中心节点的网络连接方式与压测节点与代理节点的网络连接方式可以是采用Tcp/Udp/Http/Websocket等通信协议,上述通信协议都可以实现通信双方信息传输以及双方节点当前运行状态检测。
参照图4,示出了本发明的一种压力测试方法实施例的步骤流程图,具体可以包括如下步骤:
步骤401,在IP固定设备上部署控制机CNNode,所述CNNode包含一个用户交互模块。
其中,设备系统可以是windows或linux等系统,在windows设备上可以是桌面应用程序UI界面,在linux机器人上可以是指令界面或通过搭建Http服务器提供Web界面供用户操作。
CNNode内包含一个网络服务器用于接受代理节点的网络连接;包含一个交互模块用于接收用户的指令;包含一个施压机上代理节点数据管理模块AGMng,用于管理各施压机上与中心节点建立连接的代理节点的数据;包含一个请求负载分配模块CNAlloc,用于给集群的各个施压机分配压测请求负载RPS数据。
在每一个参与集群的施压机上部署一个代理节点AGNode,以守护进程方式运行,AGNode启动后网络连接到CNNode,并在CNNode的AGMng里创建数据管理对象,实时保存施压机所能达到的实际RPS、施压机当前整体CPU使用率等施压机压测信息。
步骤402:用户通过交互模块设置要执行的压测任务的总的RPS目标数据,以及压测节点要执行的压测任务。
其中,CNAlloc记录RPS目标数据,并根据分配策略给集群的各个施压机合理分配RPS。
本实施例CNAlloc给各施压机分配RPS的策略是通过施压机的CPU核心数和当前整体CPU使用率等信息作为分配依据:
当压测刚开始时,当前各施压机分配的RPS数据均为0,则CNAlloc给各施压机分配起始RPS数值r的计算通过各施压机的核心数N和所有施压机总CPU核心数∑N的比例线性分配总RPS数R,计算公式如下:
Figure BDA0002358660990000181
当压测已经在进行过程中时,CNAlloc有新增RPS需求
Figure BDA0002358660990000182
各施压机上已经分配了一定的RPS和产生一定的CPU使用率,当施压机当前整体CPU使用率没超过设定的警戒线WL时,可以参与分配
Figure BDA0002358660990000191
各施压机可以分配的RPS如下:
Figure BDA0002358660990000192
当CNAlloc当前有标记某一个施压机处于不可分配状态时,则进行上述分配计算时需要将此施压机从可分配列表中移除,不参与分配计算。
当压测进行过程中,CNAlloc有减少RPS需求
Figure BDA0002358660990000193
根据当前各施压机分配的RPS值R按比例减少,各施压机减少的RPS如下:
Figure BDA0002358660990000194
步骤403:各施压机的代理节点AGNode收到RPS分配后,在本地施压机创建压测节点STNode。
具体的,初始创建的STNode个数为本地施压机的CPU核数的一半,STNode创建并通过网络连接到AGNode,在STMng里创建数据管理对象后,负载分配模块AGAlloc就开始为创建节点分配RPS。在本发明实施例中,AGAlloc分配RPS的方式是通过实时线性预测模型根据本地所有STNode工作过程RPS和对应的进程的CPU使用率数据来拟合计算出本地施压机单个节点工作时RPS值R与对应CPU使用率L的线性关系式,W,B通过所有当前工作中压测节点的R与L的分布数据拟合计算得出。
AGAlloc具体为每个压测节点分配RPS的策略包括:
当所有压测节点当前尚未在工作中,分配的RPS均为0且无产生CPU使用率时,当前无法拟合出L与R的关系式,所以AGAlloc给当前各创建的STNode平均分配RPS;
当当前各个压测节点都在工作中,有分配RPS和产生CPU使用率时,AGAlloc需要增加RPS值
Figure BDA0002358660990000195
计算出L与R的线性关系式,然后根据给压测节点设定的CPU使用率安全线阈值SL,预测出每个压测节点可以允许的分配RPS上限如下:
Figure BDA0002358660990000196
L是压测节点当前CPU使用率,AGAlloc根据每个压测节点允许分配的
Figure BDA0002358660990000201
作为上限按比例分配RPS到各压测节点,其中当前CPU使用率已经超过SL的压测节点不参与分配RPS。
当AGAlloc当前有标记某一个压测节点处于不可分配状态时,则进行上述分配计算时需要将此压测节点从可分配列表中移除,不参与分配。
当当前所有创建的节点分配到了各自RPS上限后,各节点总的增加分配的RPS值
Figure BDA0002358660990000202
仍小于需要分配的
Figure BDA0002358660990000203
时,AGAlloc必须通过创建新的压测节点来分配剩余这部分差额
Figure BDA0002358660990000204
AGAlloc创建新压测节点的策略是:
当当前施压机总CPU使用率低于警戒线WL和当前施压机已创建压测节点数量少于CPU核心数时,允许创建新的压测节点,压测节点创建数量为根据
Figure BDA0002358660990000205
和当前工作环境下预估分配到上限如下:
Figure BDA0002358660990000206
此时需要的数量如下:
Figure BDA0002358660990000207
且压测节点总数必须不高于CPU核心数;
当新增的压测节点数量仍不满足
Figure BDA0002358660990000208
的分配,则剩余的RPS施压机已经无法继续分配,AGNode将本施压机所能实际达到的最大RPS反馈给CNNode,由CNNode重新分配差额部分;
当AGAlloc有减少RPS需求
Figure BDA0002358660990000209
当前各分配了RPS的压测节点按比例减少各自的RPS值如下:
Figure BDA00023586609900002010
步骤404:各压测节点STNode接收到AGNode分配的RPS后,记录在RPS控制模块RPSCtrl中,采用RPSCtrl设置发送请求的参数。
具体的,RPSCtrl根据记录的RPS目标,通过设定帧率、定时间隔、单位时间内请求总量控制等方式控制STNode按压测任务发网络请求到被压测服务器每秒的并发量。
压测节点实际执行并发网络请求方式可以通过线程池、协程、Epoll事件监听等方式实现,具体实现方式根据压测任务逻辑自行选择,在本发明实施例中,可以通过RPSCtrl控制STNode的RPS,并实时更新STNode压测过程中产生的实际RPS数据,并定期统计平均值,通过网络反馈给AGNode记录。
步骤405:代理节点AGNode监测压测节点STNode的资源利用率,当压测节点STNode的资源利用率大于或等于预设警戒值时,调低所述压测节点的RPS。
压测过程中,AGNode定时收集更新本地施压机上所有工作中STNode的实际RPS数据,与AGAlloc中记录的各压测节点分配的RPS做比较,如果有一个STNode的实际RPS达不到分配的目标RPS,则说明该压测节点在工作过程遇到某一方面的瓶颈,其中,可能导致原因包括:压测节点请求并发量过高导致CPU使用出现瓶颈、施压机本地网络连接量过大而导致网络端口不够用而出现请求等待、压测节点工作线程池消费请求速度小于产生请求速度而导致请求堆积等,这时AGAlloc需要减少该STNode分配的RPS到其实际可以达到的RPS,标记压测节点在一段时间内为不可分配状态,并将差额部分尝试通过在本地施压机的其他压测节点中重新分配,分配策略依据上述介绍的AGAlloc RPS分配策略。
在压测过程中,AGNode的负荷监控模块LDMtr实时采集本施压机上各个压测节点和施压机整体的CPU使用率,采集方式通过调用操作系统相关命令获取,其中压测节点的CPU使用率数据采集为节点进程里所有工作线程中CPU使用率最高的数据,施压机整体的CPU使用率为所有CPU核心的平均使用率。
当LDMtr监控到压测节点CPU使用率超过一定阈值后,就开始主动调整对应压测节点的分配RPS,在本发明实施例中,LDMtr监控压测节点采用三段式预警监控,从压测节点的CPU使用率从低往高分别设置安全线SL,警戒线WL和休眠线DL,LDMtr根据压测节点的当前负荷处于的区间,对压测节点的RPS分配作对应处理:
当压测节点CPU使用率低于SL,代表压测节点工作负荷处于合理区间,当前不用调整压测节点RPS,压测节点RPS可以继续增加;
当压测节点CPU使用率高于SL,低于WL时,压测节点当前分配的RPS可以不用调整,但压测节点也不能继续增加分配RPS;
当压测节点CPU使用率高于WL,低于DL时,LDMtr通知AGAlloc,开始降低压测节点分配的RPS,根据当前CPU使用率L与RPS的关系式推算需要减少的RPS数值如下:
Figure BDA0002358660990000221
预期使压测节点CPU使用率回到安全线,并标记压测节点在一段时间内为不可分配RPS状态,避免压测节点RPS分配频繁波动;
当压测节点CPU使用率高于DL时,LDMtr通知AGAlloc将压测节点分配的RPS降为零,压测节点后续不产生新的请求,进入休眠状态,并标记压测节点在一段时间内为不可分配RPS状态,直到工作负荷降低到安全线以下,以及压测节点过了不可分配状态超时时间后,才允许重新给压测节点分配RPS。
压测节点分配状态超时的变更由AGAlloc创建定时器超时时间到了后执行刷新压测节点的可分配状态。
AGAlloc给压测节点减少分配的RPS部分,优先从本地施压机其他允许分配RPS的节点里选择分配,或施压机允许创建新节点情况下创建新节点分配,分配策略依据上述步骤403中介绍的AGAlloc为每个压测节点分配RPS的策略。
当代理节点能在本地施压机成功重新分配控制机分配的RPS时,控制机给代理节点分配的RPS目标依旧能达到,代理节点无须反馈给控制机;当代理节点无法成功在本地施压机分配RPS时,则需要反馈给控制机当前施压机实际所能达到的RPS上限,由控制机重新调整各施压机的RPS分配,控制机的CNAlloc将达不到目标的代理节点的RPS分配数值降为当前所能达到的上限值,并标记该施压机在一段时间内为不可分配状态,避免施压机RPS分配频繁波动。
施压机分配状态超时的变更由CNAlloc创建定时器超时时间到了后执行刷新施压机对应的代理节点的可分配状态。
控制机CNAlloc尝试重新分配施压机减少的RPS分配部分,从集群的当前其他允许分配RPS的施压机中按上述步骤402中介绍的CNAlloc给各施压机分配RPS的策略,通过施压机的CPU核心数和当前整体CPU使用率等信息作为分配依据分配RPS。
如果当前CNAlloc找不到施压机可以分配RPS,则CNAlloc记录下当前待分配的RPS数值,通过控制机的交互模块通知用户当前施压机资源不满足总体RPS分配需求,提醒用户增加接入施压机,同时CNAlloc定时检查各施压机是不是有可以满足分配RPS的,有则分配尚未分配的RPS。
本实施例支持压测工作过程动态接入新增的施压机,新施压机部署好相应环境启动代理节点,当代理节点成功建立网络连接到控制机,在AGMng中创建数据对象后,CNAlloc便可以为施压机分配RPS。
本实施例同时也支持工作过程中移除施压机,当施压机上代理节点关闭进程时,CNNode检测到代理节点断开网络连接,则将对应施压机信息从AGMng中移除,CNAlloc重新分配被移除施压机的RPS数据,施压机被移除后,施压机上的当前工作中的压测节点检测到与代理节点已关闭,网络连接断开时,压测节点自行销毁进程,停止压测工作。
本实施例实施过程,用户可以通过与控制机的交互模块随时更改整体目标RPS等数据,CNAlloc根据RPS目标数据的增减根据分配策略同步各施压机上的RPS分配,当施压机在压测过程因RPS分配的减少而出现压测节点分配的RPS长时间处于0时,AGAlloc会采集长时间处于空闲状态的压测节点,通知STMng销毁对应压测节点进程,节省施压机资源。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明的一种压力测试装置实施例的结构框图,应用于控制机,所述控制机与施压机和待测试服务器通信,所述施压机中设置有代理节点,具体可以包括如下模块:
数据获取模块501,用于获取压测任务数据,以及多个施压机的性能数据;
任务数据确定模块502,用于根据所述压测任务数据和所述多个施压机的性能数据,确定各个施压机的目标压测任务数据;
压测指令生成模块503,用于根据所述各个施压机的目标压测任务数据生成压测指令;
压测指令发送模块504,用于将所述压测指令发送至对应的施压机;所述施压机用于采用所述代理节点根据所述压测指令创建多个压测节点,并采用所述多个压测节点执行所述压测指令中的压测任务,向所述待测试服务器发送网络请求。
在本发明的一种优选实施例中,所述压测任务数据包括压测总请求负载参数和压测任务;
所述压测指令生成模块503可以包括如下子模块:
参数确定子模块,用于根据所述压测总请求负载参数、压测任务和所述多个施压机的性能数据,确定各个施压机的原始压测请求负载参数;
任务数据确定子模块,用于根据所述各个施压机的原始压测请求负载参数和压测任务,确定各个施压机的目标压测任务数据。
参照图6,示出了本发明的另一种压力测试装置实施例的结构框图,应用于施压机,所述施压机中设置有代理节点,所述施压机与控制机和待测试服务器通信,具体可以包括如下模块:
压测指令接收模块601,用于所述代理节点接收所述控制机发送的压测指令;所述压测指令包括原始压测请求负载参数和压测任务;
压测节点创建模块602,用于所述代理节点根据所述原始压测请求负载参数,创建多个压测节点,并确定各个压测节点的目标压测请求负载参数;
网络请求发送模块603,用于所述压测节点根据所述压测任务和所述目标压测请求负载参数,向所述待测试服务器发送网络请求。
在本发明的一种优选实施例中,还包括:
资源利用率监测模块,用于所述代理节点分别监测各个压测节点的资源利用率;
第一压测节点确定模块,用于所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率大于或等于预设警戒值的第一压测节点;
负载参数调低模块,用于所述代理节点将所述第一压测节点的目标压测请求负载参数调低。
在本发明的一种优选实施例中,所述负载参数调低模块包括:
第二压测节点确定子模块,用于所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率小于所述预设警戒值的第二压测节点;
差额压测请求负载参数确定子模块,用于根据所述第一压测节点的资源利用率确定差额压测请求负载参数;
压测任务分配子模块,用于将所述差额压测请求负载参数的压测任务分配至所述第二压测节点。
在本发明的一种优选实施例中,还包括:
性能数据读取模块,用于所述代理节点读取施压机的性能数据;
性能数据发送模块,用于所述代理节点将所述性能数据发送至所述控制机;所述控制机用于根据所述性能数据生成所述压测指令。
在本发明的一种优选实施例中,所述资源利用率包括如下的至少一项:
中央处理器利用率、内存占用率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行本发明实施例所述的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种压力测试方法和一种压力测试装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (11)

1.一种压力测试方法,其特征在于,应用于控制机,所述控制机与施压机和待测试服务器通信,所述施压机中设置有代理节点,所述的方法包括:
获取压测任务数据,以及多个施压机的性能数据;
根据所述压测任务数据和所述多个施压机的性能数据,确定各个施压机的目标压测任务数据;
根据所述各个施压机的目标压测任务数据生成压测指令;
将所述压测指令发送至对应的施压机;所述施压机用于采用所述代理节点根据所述压测指令创建多个压测节点,并采用所述多个压测节点执行所述压测指令中的压测任务,向所述待测试服务器发送网络请求。
2.根据权利要求1所述的方法,其特征在于,所述压测任务数据包括压测总请求负载参数和压测任务;
所述根据所述压测任务数据和所述多个施压机的性能数据,确定各个施压机的目标压测任务数据,包括:
根据所述压测总请求负载参数、压测任务和所述多个施压机的性能数据,确定各个施压机的原始压测请求负载参数;
根据所述各个施压机的原始压测请求负载参数和压测任务,确定各个施压机的目标压测任务数据。
3.一种压力测试方法,其特征在于,应用于施压机,所述施压机中设置有代理节点,所述施压机与控制机和待测试服务器通信,所述的方法包括:
所述代理节点接收所述控制机发送的压测指令;所述压测指令包括原始压测请求负载参数和压测任务;
所述代理节点根据所述原始压测请求负载参数,创建多个压测节点,并确定各个压测节点的目标压测请求负载参数;
所述压测节点根据所述压测任务和所述目标压测请求负载参数,向所述待测试服务器发送网络请求。
4.根据权利要求3所述的方法,其特征在于,还包括:
所述代理节点分别监测各个压测节点的资源利用率;
所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率大于或等于预设警戒值的第一压测节点;
所述代理节点将所述第一压测节点的目标压测请求负载参数调低。
5.根据权利要求4所述的方法,其特征在于,所述代理节点将所述第一压测节点的目标压测请求负载参数调低,包括:
所述代理节点根据所述各个压测节点的资源利用率,确定资源利用率小于所述预设警戒值的第二压测节点;
根据所述第一压测节点的资源利用率确定差额压测请求负载参数;将所述差额压测请求负载参数的压测任务分配至所述第二压测节点。
6.根据权利要求3所述的方法,其特征在于,还包括:
所述代理节点读取施压机的性能数据;
所述代理节点将所述性能数据发送至所述控制机;所述控制机用于根据所述性能数据生成所述压测指令。
7.根据权利要求3所述的方法,其特征在于,所述资源利用率包括如下的至少一项:
中央处理器利用率、内存占用率。
8.一种压力测试装置,其特征在于,应用于控制机,所述控制机与施压机和待测试服务器通信,所述施压机中设置有代理节点,所述的装置包括:
数据获取模块,用于获取压测任务数据,以及多个施压机的性能数据;
任务数据确定模块,用于根据所述压测任务数据和所述多个施压机的性能数据,确定各个施压机的目标压测任务数据;
压测指令生成模块,用于根据所述各个施压机的目标压测任务数据生成压测指令;
压测指令发送模块,用于将所述压测指令发送至对应的施压机;所述施压机用于采用所述代理节点根据所述压测指令创建多个压测节点,并采用所述多个压测节点执行所述压测指令中的压测任务,向所述待测试服务器发送网络请求。
9.一种压力测试装置,其特征在于,应用于施压机,所述施压机中设置有代理节点,所述施压机与控制机和待测试服务器通信,所述的装置包括:
压测指令接收模块,用于所述代理节点接收所述控制机发送的压测指令;所述压测指令包括原始压测请求负载参数和压测任务;
压测节点创建模块,用于所述代理节点根据所述原始压测请求负载参数,创建多个压测节点,并确定各个压测节点的目标压测请求负载参数;
网络请求发送模块,用于所述压测节点根据所述压测任务和所述目标压测请求负载参数,向所述待测试服务器发送网络请求。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-2或3-7所述的一个或多个的方法的步骤。
11.一种计算机可读存储介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-2或3-7所述的一个或多个的方法的步骤。
CN202010015329.0A 2020-01-07 2020-01-07 一种压力测试方法和装置 Active CN111240838B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010015329.0A CN111240838B (zh) 2020-01-07 2020-01-07 一种压力测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010015329.0A CN111240838B (zh) 2020-01-07 2020-01-07 一种压力测试方法和装置

Publications (2)

Publication Number Publication Date
CN111240838A true CN111240838A (zh) 2020-06-05
CN111240838B CN111240838B (zh) 2024-02-02

Family

ID=70876024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010015329.0A Active CN111240838B (zh) 2020-01-07 2020-01-07 一种压力测试方法和装置

Country Status (1)

Country Link
CN (1) CN111240838B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306837A (zh) * 2020-11-10 2021-02-02 光大兴陇信托有限责任公司 一种云压力测试方法及平台、设备及可读存储介质
CN112506149A (zh) * 2020-11-30 2021-03-16 长江存储科技有限责任公司 一种机台程式控制方法及装置
CN112749048A (zh) * 2021-01-13 2021-05-04 北京开拓鸿业高科技有限公司 用于教学服务器压力测试的方法、装置、介质及设备
CN112765035A (zh) * 2021-01-27 2021-05-07 北京百家科技集团有限公司 分布式压力测试系统、方法、装置、电子设备、存储介质
CN114615171A (zh) * 2022-03-16 2022-06-10 网易(杭州)网络有限公司 云游戏服务器的压测处理方法、设备、介质及程序产品
WO2023131343A1 (zh) * 2022-01-10 2023-07-13 阿里巴巴(中国)有限公司 压力测试方法、系统、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140298101A1 (en) * 2013-03-29 2014-10-02 Inventec Corporation Distributed pressure testing system and method
CN108710565A (zh) * 2018-03-05 2018-10-26 聚好看科技股份有限公司 一种压力测试方法、装置及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140298101A1 (en) * 2013-03-29 2014-10-02 Inventec Corporation Distributed pressure testing system and method
CN108710565A (zh) * 2018-03-05 2018-10-26 聚好看科技股份有限公司 一种压力测试方法、装置及系统

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306837A (zh) * 2020-11-10 2021-02-02 光大兴陇信托有限责任公司 一种云压力测试方法及平台、设备及可读存储介质
CN112506149A (zh) * 2020-11-30 2021-03-16 长江存储科技有限责任公司 一种机台程式控制方法及装置
CN112506149B (zh) * 2020-11-30 2021-10-26 长江存储科技有限责任公司 一种机台程式控制方法及装置
CN112749048A (zh) * 2021-01-13 2021-05-04 北京开拓鸿业高科技有限公司 用于教学服务器压力测试的方法、装置、介质及设备
CN112765035A (zh) * 2021-01-27 2021-05-07 北京百家科技集团有限公司 分布式压力测试系统、方法、装置、电子设备、存储介质
WO2023131343A1 (zh) * 2022-01-10 2023-07-13 阿里巴巴(中国)有限公司 压力测试方法、系统、设备及存储介质
CN114615171A (zh) * 2022-03-16 2022-06-10 网易(杭州)网络有限公司 云游戏服务器的压测处理方法、设备、介质及程序产品
CN114615171B (zh) * 2022-03-16 2024-01-30 网易(上海)网络有限公司 云游戏服务器的压测处理方法、设备、介质及程序产品

Also Published As

Publication number Publication date
CN111240838B (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
CN111240838A (zh) 一种压力测试方法和装置
EP2494443B1 (en) Balancing server load according to availability of physical resources
JP4308241B2 (ja) ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
JP5614226B2 (ja) 仮想マシン制御装置、仮想マシン制御プログラムおよび仮想マシン制御方法
US8191068B2 (en) Resource management system, resource information providing method and program
US7516292B2 (en) Method for predicting and avoiding danger in execution environment
CN111818159B (zh) 数据处理节点的管理方法、装置、设备及存储介质
JP4984169B2 (ja) 負荷分散プログラム、負荷分散方法、負荷分散装置およびそれを含むシステム
CN106133693B (zh) 虚拟机的迁移方法、装置及设备
KR101113943B1 (ko) 워크로드 관리 방법과 장치 및 이를 이용한 분산 컴퓨팅 시스템
US20070180453A1 (en) On demand application scheduling in a heterogeneous workload environment
US20070250629A1 (en) Method and a system that enables the calculation of resource requirements for a composite application
CN107395458B (zh) 系统监控方法及装置
GB2481422A (en) Controlling the power consumption of computers
CN103488538B (zh) 云计算系统中的应用扩展装置和应用扩展方法
Saha et al. Exploring the fairness and resource distribution in an apache mesos environment
JP2013127685A (ja) 情報処理システムおよび運用管理方法
JP2006343899A (ja) Webシステムの構成制御方法およびシステム
JP4743904B2 (ja) リソース過分配防止システム
CN112039794B (zh) 设置虚拟网元的方法、装置、计算机设备及存储介质
CN113051063B (zh) 分布式任务的任务调度方法、装置及电子设备
US20220114188A1 (en) Efficient Database Loading
JP6543090B2 (ja) 負荷分散装置、負荷分散方法及びプログラム
KR101625159B1 (ko) 동적 세션 할당 방법, 동적 세션 관리 방법 및 시스템
US20140019623A1 (en) Virtual server system, management server device, and system managing method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant