CN110297743B - 一种负载测试方法、装置和存储介质 - Google Patents
一种负载测试方法、装置和存储介质 Download PDFInfo
- Publication number
- CN110297743B CN110297743B CN201810236683.9A CN201810236683A CN110297743B CN 110297743 B CN110297743 B CN 110297743B CN 201810236683 A CN201810236683 A CN 201810236683A CN 110297743 B CN110297743 B CN 110297743B
- Authority
- CN
- China
- Prior art keywords
- thread
- time slice
- maximum
- requests
- request
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例公开了一种负载测试方法、装置和存储介质;本发明实施例在获取到负载测试指令后,可以根据负载测试指令中所携带的系统最大并发数、每个线程的最大并发数和每秒所包含的时间片的数量生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,然后,根据该最大请求数量设置调节配置信息,并在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,进而通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对测试对象进行负载测试;该方案可以大大提高其灵活性、测试效率和测试的准确性。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种负载测试方法、装置和存储介质。
背景技术
负载测试(Load testing),是改善系统性能的一种重要技术,它可以模拟实际系统所承受的负载条件的系统负荷,通过不断加载,如逐渐增加模拟用户的数量或请求数来观察不同负载下系统的响应时间、数据吞吐量、和系统占用的资源等,以检验系统的行为和特性,进而发现系统可能存在的问题,这样,后续便可以针对这些问题,对系统的设计、代码和配置等进行调整,提高系统的性能。在现有技术中,通常会采用LoadRunner(一种预测系统行为和性能的负载测试工具)或jmeter(Apache组织开发的基于Java的压力测试工具)等测试工具来进行负载测试。其中,LoadRunner主要是通过静态设置虚拟用户数量和日程计划服务来对系统进行负载测试的,而jmeter则是通过静态设置网页请求并发数,来对系统进行压力测试。
在对现有技术的研究和实践过程中,本发明的发明人发现,由于现有方案只能通过静态设置请求并发数来对系统进行负载测试,因此,对于不同的应用场景,比如对于并发数陡增的场景,均需要在测试过程中人工对这些设置进行调整才能满足需求,所以,不仅灵活性较差,而且测试效率也较低;此外,由于是人工调整,因此,对其测试的准确性也存在一定影响。
发明内容
本发明实施例提供一种负载测试方法、装置和存储介质,可以在测试过程中对请求并发数进行自适应调整,大大提高其灵活性、测试效率和测试的准确性。
本发明实施例提供一种负载测试方法,包括:
获取负载测试指令,所述负载测试指令携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量;
根据所述负载测试指令生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量;
根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息;
在预设时间段内,基于所述调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整;
通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对所述测试对象进行负载测试。
相应的,本发明实施例还提供一种负载测试装置,包括:
获取单元,用于获取负载测试指令,所述负载测试指令携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量;
预处理单元,用于根据所述负载测试指令生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量;
设置单元,用于根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息;
调整单元,用于在预设时间段内,基于所述调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整;
发送单元,用于通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对所述测试对象进行负载测试。
可选的,在一些实施例中,所述预处理单元可以包括生成子单元和计算子单元,如下:
所述生成子单元,用于根据所述系统最大并发数和每个线程的最大并发数生成多个线程;
所述计算子单元,用于根据所述每个线程的最大并发数和每秒所包含的时间片的数量计算每个线程在一个时间片内需完成发送的最大请求数量。
可选的,在一些实施例中,所述生成子单元,具体可以用于根据所述系统最大并发数和每个线程的最大并发数,计算完成所述系统最大并发数所需的线程数,以所述线程数为数量,生成线程。
可选的,在一些实施例中,所述计算子单元,具体可以用于将所述每个线程的最大并发数整除每秒所包含的时间片的数量,得到商和余数,若所述余数为0,则将得到的商作为每个线程在一个时间片内需完成发送的最大请求数量;若所述余数不为0,则从所有时间片中取出与所述余数等量的时间片作为第一类时间片,并将剩余的时间片作为第二类时间片,将得到的商加1的值作为每个线程在第一类时间片的每个时间片内需完成发送的最大请求数量,以及将得到的商作为每个线程在第二类时间片的每个时间片内需完成发送的最大请求数量。
可选的,在一些实施例中,所述设置单元,具体可以用于接收设置指令,所述设置指令指示每个时间片可发送的最小请求数量和变化频率,根据所述设置指令和每个线程在一个时间片内需完成发送的最大请求数量生成调节配置信息。
可选的,在一些实施例中,所述调整单元可以包括确定子单元和调整子单元,如下:
所述确定子单元,用于根据所述调节配置信息确定每个线程在一个时间片内需完成发送的最大请求数量、每个线程在一个时间片内需完成发送的最小请求数量和变化频率;
所述调整子单元,用于设置每个线程在一个时间片内需完成发送的请求数量,使得所述每个线程在一个时间片内需完成发送的请求数量在预设时间段内,按照所述变化频率,在所述最小请求数量和最大请求数量之间变化。
可选的,在一些实施例中,所述调整单元还可以包括保存子单元,如下:
所述保存子单元,用于在时间片数据表中记录所述每个线程在一个时间片内需完成发送的请求数量,将所述时间片数据表保存至内存。
可选的,在一些实施例中,所述发送单元,具体可以用于根据测试对象标识确定测试对象,通过生成的多个线程,依次读取调整后每个线程在一个时间片内需完成发送的请求数量;按照读取到的请求数量向所述测试对象发送预设请求,以对所述测试对象进行负载测试。
此外,本发明实施例还提供一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种负载测试方法中的步骤。
本发明实施例在获取到负载测试指令后,可以根据负载测试指令中所携带的系统最大并发数、每个线程的最大并发数和每秒所包含的时间片的数量生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,然后,根据该最大请求数量设置调节配置信息,并在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,进而通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对测试对象进行负载测试;由于该方案可以根据模拟实际场景的需求、以及每个线程在一个时间片内需完成发送的最大请求数量来设置调节配置信息,并基于调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,使得线程在按照该请求数量发送请求时,其所发送的请求数也能自动模拟实际场景的需求进行动态变化,而无需人工进行调整,也就是说,该方案可以在测试过程中对请求并发数进行自适应调整,因此,相对于现有只能人工进行调整的方案而言,可以大大提高其灵活性、测试效率和测试的准确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的负载测试方法的场景示意图;
图1b是本发明实施例提供的负载测试方法的流程图;
图1c是本发明实施例提供的负载测试方法中线程发送请求的示例图;
图2a是本发明实施例提供的负载测试方法的另一流程图;
图2b是本发明实施例提供的负载测试方法中管理并发数的场景示意图;
图2c是本发明实施例提供的负载测试方法中陡增剧烈时的并发数的曲线图;
图2d是本发明实施例提供的负载测试方法中陡增较缓时的并发数的曲线图;
图2e是本发明实施例提供的负载测试方法中陡增剧烈且频率较大时的并发数的曲线图;
图3a是本发明实施例提供的负载测试装置的结构示意图;
图3b是本发明实施例提供的负载测试装置的另一结构示意图;
图4是本发明实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种负载测试方法、装置和存储介质。
该负载测试装置具体可以集成在服务器如测试服务器等网络设备中。
例如,以该负载测试装置集成在测试服务器中为例,参见图1a,该测试服务器在获取到负载测试指令(如测试人员触发的负载测试指令)后,可以根据该负载测试指令生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,比如,具体可以根据该系统最大并发数和每个线程的最大并发数生成多个线程,以及根据每个线程的最大并发数和每秒所包含的时间片的数量计算每个线程在一个时间片内需完成发送的最大请求数量,然后,根据该最大请求数量设置调节配置信息,在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,并通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,比如按照调整后请求数量K向某个业务服务器并发预设请求,等等,以对该测试对象进行负载测试,进而达到自动模拟实际场景中请求并发数动态变化的目的,而无需在测试过程进行人工干预。
以下分别进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
实施例一、
本实施例将从负载测试装置的角度进行描述,该负载测试装置具体可以集成在服务器中,比如测试服务器等网络设备中。
一种负载测试方法,包括:获取负载测试指令,该负载测试指令携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量,根据该负载测试指令生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,然后,根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息,在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,并通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对该测试对象进行负载测试。
如图1b所示,该负载测试方法的具体流程可以如下:
101、获取负载测试指令。
例如,具体可以接收测试人员触发的负载测试指令,该负载测试指令可以携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量等信息。
其中,测试对象标识用于对测试对象进行识别,可以包括测试对象的名称和/或测试对象的链接地址等信息;系统最大并发数指的是测试对象在预设单位时间内所能接受的预设请求的最大数量,在本发明实施例中,将以TPS-A来表示;每个线程的最大并发数指的是每个线程在预设单位时间内所能发送的预设请求的最大数量,在本发明实施例中,将以TPS-B来表示;而所谓时间片,指的是把每一秒按照指定单位时间进行划分后,所得到的每一指定单位时间,比如,以该指定单位时间为10微秒为例,则可以将每一秒划分为1 000000/10=100 000个时间片,每一时间片为10微秒,譬如,某一秒中内的第0~10微秒为第一个时间片,第10~20微秒为第二个时间片,第20~30微秒为第三个时间片……,以此类推,第999 990~1 000 000微秒为第十万个时间片,等等;每秒所包含的时间片的数量指的就是每一秒按照指定单位时间进行划分后,所能划分的时间片的数量,比如,还是以指定单位时间为10微秒为例,则该每秒所包含的时间片的数量为100 000个,在本发明实施例中,每秒所包含的时间片的数量可以用N来表示。
需说明的是,预设时间单位和指定单位时间可以根据实际应用的需求进行设置。另外,还需说明的是,为了提高测试的精确度,系统最大并发数TPS-A一般可以设置为每个线程的最大并发数TPS-B的整数倍。
102、根据该负载测试指令生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,例如,具体可以如下:
(1)根据该系统最大并发数和每个线程的最大并发数生成多个线程。
例如,具体可以根据该系统最大并发数和每个线程的最大并发数,计算完成该系统最大并发数所需的线程数,以该线程数为数量,生成线程。
比如,可以将该系统最大并发数TPS-A除以每个线程的最大并发数TPS-B,便可以得到线程数M,然后,按照预设策略生成M个线程,用公式表示即为:
M=TPS-A/TPS-B;
需说明的是,在系统最大并发数TPS-A不变的情况下,可以通过微调每个线程的最大并发数TPS-B来调整线程数(即完成该系统最大并发数所需的线程数)M。
还需说明的是,在本发明实施例中,生成的线程指的是“请求发送线程”或“请求发送子线程”,指的是可以用于发送预设请求的线程或子线程,为了描述方便,在本发明实施例中,将均简称为“线程”。
(2)根据每个线程的最大并发数和每秒所包含的时间片的数量计算每个线程在一个时间片内需完成发送的最大请求数量。
例如,具体可以计算每个线程的最大并发数和每秒所包含的时间片的数量的商,得到每个线程在一个时间片内需完成发送的最大请求数量,用公式表示即为:
i=TPS-B/N
其中,i为每个线程在一个时间片内需完成发送的最大请求数量,为了描述方便,在本发明实施例中也称为时间片的最大请求数量;TPS-B为每个线程的最大并发数,N为每秒所包含的时间片的数量。i为正整数,若i为非整数,比如每个线程的最大并发数TPS-B无法被N整除,则i可以取整后,将余数每次取1,加到某个时间片中,即此时某些时间片的最大请求数量为“i+1”。也就是说,步骤“计算每个线程的最大并发数和每秒所包含的时间片的数量的商,得到每个线程在一个时间片内需完成发送的最大请求数量”可以包括:
将每个线程的最大并发数整除每秒所包含的时间片的数量,得到商和余数;
若该余数为0,则将得到的商作为每个线程在一个时间片内需完成发送的最大请求数量(即此时每个时间片的最大请求数量为i);
若该余数不为0,则从所有时间片中取出与该余数等量的时间片作为第一类时间片,并将剩余的时间片作为第二类时间片,将得到的商加1的值作为每个线程在第一类时间片的每个时间片内需完成发送的最大请求数量(即第一类时间片中每个时间片的最大请求数量为“i+1”),以及将得到的商作为每个线程在第二类时间片的每个时间片内需完成发送的最大请求数量(即此时第二类时间片中每个时间片的最大请求数量为i)。
可选的,在得到每个线程在一个时间片内需完成发送的最大请求数量(即每个时间片的最大请求数量)后,可以将该最大请求数量记录在预设数据结构,比如可以对每个时间片进行编号(该时间片编号可以用来标识时间片),然后,将每个时间片编号和相应时间片的请求数量的对应关系保存在时间片数据表中,等等。其中,该时间片数据表可以保存在预设存储空间如共享内存中。
可选的,该时间片数据表的具体样式可以根据实际应用的需求进行设置,比如,可如表一所示。
表一:
时间片编号 | 时间片的请求数量(即发包数) |
1 | i |
2 | i |
3 | i |
4 | i |
5 | i |
…… | i |
…… | i |
…… | i |
…… | i或i+1 |
…… | i或i+1 |
…… | i或i+1 |
…… | i或i+1 |
N | i或i+1 |
需说明的是,表一中“时间片的请求数量”指的是每个线程在一个时间片内需完成发送的请求数量,该时间片的请求数量的初始值可以记录为“时间片的最大请求数量”,后续可根据需求进行调整,参见步骤104。
103、根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息。例如,具体可以如下:
接收设置指令,该设置指令指示每个线程在一个时间片内需完成发送的最小请求数量(也称为每个时间片的最小请求数量)和变化频率,根据该设置指令和每个线程在一个时间片内需完成发送的最大请求数量生成调节配置信息。
比如,具体可以从设置指令中提取每个线程在一个时间片内需完成发送的最小请求数量和变化频率,将提取到的最小请求数量和变化频率、以及每个线程在一个时间片内需完成发送的最大请求数量,按照预设数据结构进行编码,以生成调节配置信息,等等。
其中,该设置指令可以由测试人员根据实际应用的需求进行设置并触发;每个线程在一个时间片内需完成发送的最小请求数量和变化频率也可以根据实际应用的需求进行设置,比如,可以根据请求并发数陡增的程度来进行设置,等等。譬如,每个线程在一个时间片内需完成发送的最小请求数量可以设置为0。
由于本发明实施例所说的变化频率,指的是每个线程在一个时间片内需完成发送的请求数量(即每个时间片的请求数量)从最小请求数量逐步还原为最大请求数量,再逐步返回最小请求数量的整个过程的频率,因此,这个过程的长度决定了请求数陡增的剧烈程度,进而影响系统请求并发数陡增的剧烈程度,即该最小请求数量设置得越小,且变化频率设置得越大,则系统请求并发数陡增的程度越为剧烈。
104、在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整。
例如,具体可以根据该调节配置信息确定每个线程在一个时间片内需完成发送的最大请求数量、每个线程在一个时间片内需完成发送的最小请求数量和变化频率,设置每个线程在一个时间片内需完成发送的请求数量,使得该请求数量(即每个线程在一个时间片内需完成请求数量)在预设时间段内,按照该变化频率,在该最小请求数量和最大请求数量之间变化。
比如,若某个线程在某个时间片内需完成发送的最小请求数量为0,最大请求数量为i,则可以设置该线程在该时间片内需完成发送的请求数量,使得该请求数量在预设时间段内,按照设定的变化频率,在0和i之间变化,譬如从0逐步上升为i,再从i下降为0,重复该过程,等等。
可选的,在设置每个线程在一个时间片内需完成发送的请求数量之后,还可以将该每个线程在一个时间片内需完成发送的请求数量记录在时间片数据表中,即步骤“设置每个线程在一个时间片内需完成发送的请求数量”之后,该负载测试方法还可以包括:
在时间片数据表中记录该每个线程在一个时间片内需完成发送的请求数量,将该时间片数据表保存至内存,比如共享内存中。其中,该每个线程在一个时间片内需完成发送的请求数量也可称为时间片的请求数量。
也就是说,若在步骤102中,保存了时间片数据表,则此时,可以对该时间片数据表中的“时间片的请求数量”进行修改,比如,将原初始值“时间片的最大请求数量”修改为当前设置的“时间片的请求数量”,比如,原来是“5”,现在设置为“4”,等等。
105、通过生成的多个线程,按照调整后时间片的请求数量(即每个线程在一个时间片内需完成发送的请求数量)向测试对象标识对应的测试对象发送预设请求,以对该测试对象进行负载测试。
例如,具体可以根据测试对象标识确定测试对象,通过生成的多个线程,依次读取调整后时间片的请求数量发送的请求数量,按照读取到的请求数量向该测试对象发送预设请求,以对该测试对象进行负载测试。
比如,以4个线程、调整后时间片的请求数量记录在时间片数据表、且时间片数据表保存在共享内存中为例,则参见图1c,线程1、线程2、线程3和线程4可以并行从共享内存中读取时间片1的请求数量i,并分别发送i个预设请求;然后,线程1、线程2、线程3和线程4再并行可以从共享内存中读取时间片2的请求数量i,并分别发送i个预设请求;再然后,线程1、线程2、线程3和线程4继续并行可以从共享内存中读取时间片3的请求数量i,并分别发送i个预设请求,以此类推,直至遍历完时间片数据表中所有的时间片,此后,再从时间1至N的顺序再次读取,如此反复,直至负载测试完毕。
其中,该测试对象可以与负载测试装置位于同一实体中,也可以位于不同实体中,比如位于某个业务服务器中,等等,此外,预设请求的具体格式和内容可以根据实际应用的需求而定,在此不再赘述。
由上可知,本实施例在获取到负载测试指令后,可以根据负载测试指令中所携带的系统最大并发数、每个线程的最大并发数和每秒所包含的时间片的数量生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,然后,根据该最大请求数量设置调节配置信息,并在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,进而通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对测试对象进行负载测试;由于该方案可以根据模拟实际场景的需求、以及每个线程在一个时间片内需完成发送的最大请求数量来设置调节配置信息,并基于调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,使得线程在按照该请求数量发送请求时,其所发送的请求数也能自动模拟实际场景的需求进行动态变化,而无需人工进行调整,也就是说,该方案可以在测试过程中对请求并发数进行自适应调整,因此,相对于现有只能人工进行调整的方案而言,可以大大提高其灵活性、测试效率和测试的准确性。
实施例二、
根据实施例一所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该负载测试装置具体集成在测试服务器中为例进行说明。
如图2a所示,一种负载测试方法,具体流程可以如下:
201、测试服务器获取负载测试指令。
例如,测试服务器具体可以接收测试人员触发的负载测试指令,该负载测试指令可以携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量等信息。
其中,测试对象标识可以包括测试对象的名称和/或测试对象的链接地址等信息;系统最大并发数可以用TPS-A来表示;每个线程的最大并发数可以用于TPS-B来表示;而每秒所包含的时间片的数量则可以用N来表示;系统最大并发数TPS-A、每个线程的最大并发数TPS-B和每秒所包含的时间片的数量N可以根据测试的需求由测试人员进行设置。
需说明的是,为了提高测试的精确度,系统最大并发数TPS-A一般可以设置为每个线程的最大并发数TPS-B的整数倍。
202、测试服务器根据该系统最大并发数和每个线程的最大并发数生成多个线程。
例如,如图2b所示,测试服务器具体可以根据该系统最大并发数TPS-A和每个线程的最大并发数TPS-B,来计算完成该系统最大并发数所需的线程数M,以该线程数M为数量,生成相应的线程。
其中,计算的方式可以有多种,比如,可以将该系统最大并发数TPS-A除以每个线程的最大并发数TPS-B,便可以得到线程数M,然后,按照预设策略生成M个线程;用公式表示即为:
M=TPS-A/TPS-B;
比如,若该系统最大并发数TPS-A为100 000 000 000,而每个线程的最大并发数TPS-B为1 000 000,则M为“100 000 000 000/1 000 000=100 000”个。
其中,需说明的是,在系统最大并发数TPS-A不变的情况下,可以通过微调每个线程的最大并发数TPS-B来调整线程数(即完成该系统最大并发数所需的线程数)M。
203、测试服务器根据每个线程的最大并发数和每秒所包含的时间片的数量计算每个线程在一个时间片内需完成发送的最大请求数量,例如,具体可以如下:
例如,如图2b所示,测试服务器可以计算每个线程的最大并发数TPS-B和每秒所包含的时间片的数量N的商,得到每个线程在一个时间片内需完成发送的最大请求数量i,用公式表示即为:
i=TPS-B/N
其中,i为正整数,若i为非整数,比如每个线程的最大并发数TPS-B无法被N整除,则i可以取整后,将余数每次取1,加到某个时间片中,即此时某些时间片的最大请求数量为“i+1”。也就是说,步骤“计算每个线程的最大并发数和每秒所包含的时间片的数量的商,得到每个线程在一个时间片内需完成发送的最大请求数量”可以包括:
将每个线程的最大并发数整除每秒所包含的时间片的数量,得到商和余数,若该余数为0,则将得到的商作为每个线程在一个时间片内需完成发送的最大请求数量(即此时每个时间片的最大请求数量为i);若该余数不为0,则从所有时间片中取出与该余数等量的时间片作为第一类时间片,并将剩余的时间片作为第二类时间片,将得到的商加1的值作为每个线程在第一类时间片的每个时间片内需完成发送的最大请求数量(即第一类时间片中每个时间片的最大请求数量为“i+1”),以及将得到的商作为每个线程在第二类时间片的每个时间片内需完成发送的最大请求数量(即此时第二类时间片中每个时间片的最大请求数量为i)。
比如,以每个线程最大并发数为1 000 000为例,每秒所包含的时间片100 000个(即以10微秒为一个时间片长度)为例,则每个线程在一个时间片内需完成发送的最大请求数量为10个。
又比如,以每个线程最大并发数为1 000 003为例,每秒所包含的时间片100 000个(即以10微秒为一个时间片长度)为例,则由于1 000 003无法被100 000整除(商为10,余3),因此,可以从所有时间片中取出3个时间片作为第一类时间片,并将剩余的时间片作为第二类时间片,将得到的商加1的值作为每个线程在第一类时间片的每个时间片内需完成发送的最大请求数量,即第一类时间片的每个时间片的最大请求数量为11,以及将得到的商作为每个线程在第二类时间片的每个时间片内需完成发送的最大请求数量,即此时第二类时间片中每个时间片的最大请求数量为10;也就是说,有三个时间片的最大请求数量为11,剩余的其他时间片的最大请求数量为10。
可选的,在得到每个线程在一个时间片内需完成发送的最大请求数量后,可以将该最大请求数量记录在预设数据结构,比如可以对每个时间片进行编号,然后,将每个时间片编号和相应时间片的请求数量的对应关系保存在时间片数据表中,并将该时间片数据表可以保存在预设存储空间如共享内存中,等等,具体可参见表一或图2b中的时间片数据表,在此不再赘述。
204、测试服务器接收设置指令,该设置指令指示每个线程在一个时间片内需完成发送的最小请求数量和变化频率,然后执行步骤205。
其中,该设置指令可以由测试人员根据实际应用的需求进行设置并触发;每个线程在一个时间片内需完成发送的最小请求数量和变化频率也可以根据实际应用的需求进行设置,比如,可以根据请求并发数陡增的程度来进行设置,等等。譬如,每个线程在一个时间片内需完成发送的最小请求数量可以设置为0。
由于本发明实施例所说的变化频率,指的是每个线程在一个时间片内需完成发送的请求数量(即每个时间片的请求数量)从最小请求数量逐步还原为最大请求数量,再逐步返回最小请求数量的整个过程的频率,因此,这个过程的长度决定了请求数陡增的剧烈程度,进而影响系统请求并发数陡增的剧烈程度,即该最小请求数量设置得越小,且变化频率设置得越大,则系统请求并发数陡增的程度越为剧烈。
例如,参见图2c,该图为系统请求并发数陡增剧烈时的曲线图,从图2c可以看出(箭头所指的方框),请求数量从最小到最大的时间较短(即变化频率较大),因此,其曲线较陡,陡增剧烈。
又例如,参见图2d,该图为系统请求并发数陡增较缓时的曲线图,从图2d可以看出,请求数量从最小到最大的时间较长(即变化频率较小),因此,其曲线较平缓,陡增较缓。
又例如,参见图2e,该图为系统请求并发数陡增剧烈且频率较大时的曲线图,从图2e可以看出,请求数量从最小到最大的时间较短,且变化频率较图2c大,因此,其曲线较陡且密集,陡增剧烈。
205、测试服务器根据该设置指令和每个线程在一个时间片内需完成发送的最大请求数量生成调节配置信息。
比如,测试服务器具体可以从设置指令中提取每个线程在一个时间片内需完成发送的最小请求数量和变化频率,然后,将提取到的最小请求数量和变化频率、以及每个线程在一个时间片内需完成发送的最大请求数量,按照预设数据结构进行编码,以生成调节配置信息,等等。
其中,编码的方式可以根据实际应用的需求进行设置,在此不再赘述。
206、测试服务器在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整。例如,具体可以如下:
测试服务器具体可以根据该调节配置信息确定每个线程在一个时间片内需完成发送的最大请求数量、每个线程在一个时间片内需完成发送的最小请求数量和变化频率,设置每个线程在一个时间片内需完成发送的请求数量,使得该请求数量在预设时间段内,可以按照该变化频率,在该最小请求数量和最大请求数量之间变化。
比如,若某个线程在某个时间片内需完成发送的最小请求数量为0,最大请求数量为i,则可以设置该线程在该时间片内需完成发送的请求数量,使得该请求数量在预设时间段内,按照设定的变化频率,在0和i之间变化,譬如从0逐步上升为i,再从i下降为0,重复该过程,等等。
207、测试服务器在时间片数据表中记录该每个线程在一个时间片内需完成发送的请求数量(即时间片的请求数量),将该时间片数据表保存至共享内存中。
例如,若在步骤203中,已经保存了时间片数据表,则此时,可以对该时间片数据表中的“时间片的请求数量”进行修改,比如,将原初始值“时间片的最大请求数量”修改为当前设置的“时间片的请求数量”,比如,原来是“10”,现在设置为“9”,等等。
其中,修改的方式可以有多种,比如,如图2b所示,可以通过调用预设的动态调节服务进程来对该时间片数据表中的“时间片的请求数量”进行修改,或者,也可以通过写入指令直接写入当前设置的“时间片的请求数量”,以覆盖原记录,等等,在此不再赘述。
208、测试服务器根据测试对象标识确定测试对象,并通过生成的多个线程,依次读取调整后时间片的请求数量发送的请求数量,按照读取到的请求数量向该测试对象发送预设请求,以对该测试对象进行负载测试。
例如,如图2b所示,线程P1~PM中的每个线程可以从共享内存所保存的时间片数据表中依次读取时间片1~N的请求数量(即发包数),按照读取到的请求数量向该测试对象发送预设请求,以对该测试对象进行负载测试。
比如,以线程P1为例,线程P1可以从时间片数据表中读取时间片1的请求数量i,然后,向该测试对象发送i个预设请求,然后,再从时间片数据表中读取时间片2的请求数量i,向该测试对象发送i个预设请求,再然后,继续从时间片数据表中读取时间片3的请求数量i,向该测试对象发送i个预设请求,以此类推,直至从时间数据表中读取最后一个时间片N的请求数量“i+1”,向该测试对象发送“i+1”个预设请求后,再返回从时间片数据表中读取时间片1的请求数量i,重复以上过程,直至负载测试完毕。
同理,其他的线程也与线程P1类似,可以从时间片数据表中依次读取时间片1~N的请求数量,并按照读取到的请求数量向该测试对象发送预设请求。需说明的是,为了提高效率,各个线程在读取时间片的请求数量时,可以是并行读取。
此外,还需说明的是,该测试对象可以与负载测试装置位于同一实体中,也可以位于不同实体中,比如位于某个业务服务器中,等等,此外,预设请求的具体格式和内容可以根据实际应用的需求而定,在此不再赘述。
由上可知,本实施例的测试服务器在获取到负载测试指令后,可以根据负载测试指令中所携带的系统最大并发数、每个线程的最大并发数和每秒所包含的时间片的数量生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,然后,根据该最大请求数量设置调节配置信息,并在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,进而通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对测试对象进行负载测试;由于该方案可以根据模拟实际场景的需求、以及每个线程在一个时间片内需完成发送的最大请求数量来设置调节配置信息,并基于调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,使得线程在按照该请求数量发送请求时,其所发送的请求数也能自动模拟实际场景的需求进行动态变化,而无需人工进行调整,也就是说,该方案可以在测试过程中对请求并发数进行自适应调整,因此,相对于现有只能人工进行调整的方案而言,可以大大提高其灵活性、测试效率和测试的准确性。
实施例三、
为了更好地实施以上方法,本发明实施例还提供一种负载测试装置,该负载测试装置具体可以集成在服务器中,比如测试服务器等网络设备中。
例如,如图3a所示,该负载测试装置可以包括获取单元301、预处理单元302、设置单元303、调整单元304和发送单元305,如下:
(1)获取单元301;
获取单元301,用于获取负载测试指令,该负载测试指令携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量等信息。
其中,测试对象标识可以包括测试对象的名称和/或测试对象的链接地址等信息;系统最大并发数指的是测试对象在预设单位时间内所能接受的预设请求的最大数量;每个线程的最大并发数指的是每个线程在预设单位时间内所能发送的预设请求的最大数量;而每秒所包含的时间片的数量则指的是每一秒按照指定单位时间进行划分后,所能划分的时间片的数量,比如,还是以指定单位时间为10微秒为例,则该每秒所包含的时间片的数量为100 000个;系统最大并发数、每个线程的最大并发数和每秒所包含的时间片的数量可以根据测试的需求由测试人员进行设置。
需说明的是,为了提高测试的精确度,系统最大并发数TPS-A一般可以设置为每个线程的最大并发数TPS-B的整数倍。
(2)预处理单元302;
预处理单元302,用于根据该负载测试指令生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量。
例如,如图3b所示,预处理单元302可以包括生成子单元3021和计算子单元3022,如下:
该生成子单元3021,可以用于根据该系统最大并发数和每个线程的最大并发数生成多个线程。
比如,该生成子单元3021,具体用于根据该系统最大并发数和每个线程的最大并发数,计算完成该系统最大并发数所需的线程数,以该线程数为数量,生成线程。
该计算子单元3022,可以用于根据该每个线程的最大并发数和每秒所包含的时间片的数量计算每个线程在一个时间片内需完成发送的最大请求数量。
比如,该计算子单元3022,具体可以用于将该每个线程的最大并发数整除每秒所包含的时间片的数量,得到商和余数;若该余数为0,则将得到的商作为每个线程在一个时间片内需完成发送的最大请求数量;若该余数不为0,则从所有时间片中取出与该余数等量的时间片作为第一类时间片,并将剩余的时间片作为第二类时间片,将得到的商加1的值作为每个线程在第一类时间片的每个时间片内需完成发送的最大请求数量,以及将得到的商作为每个线程在第二类时间片的每个时间片内需完成发送的最大请求数量。
可选的,在得到每个线程在一个时间片内需完成发送的最大请求数量后,计算子单元3022,还可以将该最大请求数量记录在预设数据结构,比如可以对每个时间片进行编号,然后,将每个时间片编号和相应时间片的请求数量的对应关系保存在时间片数据表中,等等。其中,该时间片数据表可以保存在预设存储空间如共享内存中。其中,该时间片数据表的具体样式可以根据实际应用的需求进行设置,比如,可参见表一,在此不再赘述。
(3)设置单元303;
设置单元303,用于根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息。
例如,该设置单元303,具体可以用于接收设置指令,该设置指令指示每个时间片可发送的最小请求数量和变化频率,根据该设置指令和每个线程在一个时间片内需完成发送的最大请求数量生成调节配置信息。
比如,设置单元303具体可以从设置指令中提取每个线程在一个时间片内需完成发送的最小请求数量和变化频率,将提取到的最小请求数量和变化频率、以及每个线程在一个时间片内需完成发送的最大请求数量,按照预设数据结构进行编码,以生成调节配置信息,等等。
其中,该设置指令可以由测试人员根据实际应用的需求进行设置并触发;每个线程在一个时间片内需完成发送的最小请求数量和变化频率也可以根据实际应用的需求进行设置,比如,可以根据请求并发数陡增的程度来进行设置,等等。譬如,每个线程在一个时间片内需完成发送的最小请求数量可以设置为0。
(4)调整单元304;
调整单元304,用于在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整。
例如,如图3b所示,该调整单元304可以包括确定子单元3041和调整子单元3042,如下:
该确定子单元3041,可以用于根据该调节配置信息确定每个线程在一个时间片内需完成发送的最大请求数量、每个线程在一个时间片内需完成发送的最小请求数量和变化频率。
该调整子单元3042,可以用于设置每个线程在一个时间片内需完成发送的请求数量,使得该每个线程在一个时间片内需完成发送的请求数量在预设时间段内,按照该变化频率,在该最小请求数量和最大请求数量之间变化。
可选的,在设置每个线程在一个时间片内需完成发送的请求数量之后,还可以将该每个线程在一个时间片内需完成发送的请求数量记录在时间片数据表中,即如图3b所示,该调整单元304还可以包括保存子单元3043,如下:
该保存子单元3043,可以用于在时间片数据表中记录该每个线程在一个时间片内需完成发送的请求数量,将该时间片数据表保存至内存,比如共享内存中。
也就是说,若此前已经保存了时间片数据表,则此时,保存子单元3043可以对该时间片数据表中的“时间片的请求数量”进行修改,比如,将原初始值“时间片的最大请求数量”修改为当前设置的“时间片的请求数量”,比如,原来是“5”,现在设置为“4”,等等。
(5)发送单元305;
发送单元305,用于通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对该测试对象进行负载测试。
例如,该发送单元305,具体可以用于根据测试对象标识确定测试对象,通过生成的多个线程,依次读取调整后每个线程在一个时间片内需完成发送的请求数量,按照读取到的请求数量向该测试对象发送预设请求,以对该测试对象进行负载测试。
其中,该测试对象可以与负载测试装置位于同一实体中,也可以位于不同实体中,比如位于某个业务服务器中,等等,此外,预设请求的具体格式和内容可以根据实际应用的需求而定,在此不再赘述。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例在获取到负载测试指令后,预处理单元302可以根据负载测试指令中所携带的系统最大并发数、每个线程的最大并发数和每秒所包含的时间片的数量生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,然后,由设置单元303根据该最大请求数量设置调节配置信息,并由调整单元304在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,进而由发送单元305通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对测试对象进行负载测试;由于该方案可以根据模拟实际场景的需求、以及每个线程在一个时间片内需完成发送的最大请求数量来设置调节配置信息,并基于调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,使得线程在按照该请求数量发送请求时,其所发送的请求数也能自动模拟实际场景的需求进行动态变化,而无需人工进行调整,也就是说,该方案可以在测试过程中对请求并发数进行自适应调整,因此,相对于现有只能人工进行调整的方案而言,可以大大提高其灵活性、测试效率和测试的准确性。
实施例四、
本发明实施例还提供一种服务器,可以作为本发明实施例的测试服务器。如图4所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
服务器还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取负载测试指令,该负载测试指令携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量,根据该负载测试指令生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,然后,根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息,在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,并通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对该测试对象进行负载测试。
例如,具体可以根据该调节配置信息确定每个线程在一个时间片内需完成发送的最大请求数量、每个线程在一个时间片内需完成发送的最小请求数量和变化频率,设置每个线程在一个时间片内需完成发送的请求数量,使得该请求数量在预设时间段内,按照该变化频率,在该最小请求数量和最大请求数量之间变化。
可选的,“生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量”的方式可以有多种,例如,可以如下:
将该系统最大并发数除以每个线程的最大并发数,得到线程数,然后,以该线程数为数量,生成线程;以及计算每个线程的最大并发数和每秒所包含的时间片的数量的商,得到每个线程在一个时间片内需完成发送的最大请求数量。
需说明的是,若每个线程的最大并发数无法被每秒所包含的时间片的数量整除,则可以将商取整后,将余数每次取1,加到某个时间片中,具体可以如下:
将每个线程的最大并发数整除每秒所包含的时间片的数量,得到商和余数,若该余数为0,则将得到的商作为每个线程在一个时间片内需完成发送的最大请求数量;若该余数不为0,则从所有时间片中取出与该余数等量的时间片作为第一类时间片,并将剩余的时间片作为第二类时间片,将得到的商加1的值作为每个线程在第一类时间片的每个时间片内需完成发送的最大请求数量,以及将得到的商作为每个线程在第二类时间片的每个时间片内需完成发送的最大请求数量。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本实施例的服务器在获取到负载测试指令后,可以根据负载测试指令中所携带的系统最大并发数、每个线程的最大并发数和每秒所包含的时间片的数量生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,然后,根据该最大请求数量设置调节配置信息,并在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,进而通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对测试对象进行负载测试;由于该方案可以根据模拟实际场景的需求、以及每个线程在一个时间片内需完成发送的最大请求数量来设置调节配置信息,并基于调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,使得线程在按照该请求数量发送请求时,其所发送的请求数也能自动模拟实际场景的需求进行动态变化,而无需人工进行调整,也就是说,该方案可以在测试过程中对请求并发数进行自适应调整,因此,相对于现有只能人工进行调整的方案而言,可以大大提高其灵活性、测试效率和测试的准确性。
实施例五、
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种虚拟资源的转移方法中的步骤。例如,该指令可以执行如下步骤:
获取负载测试指令,该负载测试指令携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量,根据该负载测试指令生成多个线程、以及确定每个线程在一个时间片内需完成发送的最大请求数量,然后,根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息,在预设时间段内,基于该调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,并通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对该测试对象进行负载测试。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种负载测试方法中的步骤,因此,可以实现本发明实施例所提供的任一种负载测试方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种负载测试方法、装置和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种负载测试方法,其特征在于,包括:
获取负载测试指令,所述负载测试指令携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量;
根据所述负载测试指令生成多个线程、以及基于所述每个线程的最大并发数整除每秒所包含的时间片的数量所得到的商和余数确定每个线程在一个时间片内需完成发送的最大请求数量,其中,所述每个线程在与所述余数等量的时间片中每个时间片内需完成发送的最大请求数量为商加1的值;
根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息;
在预设时间段内,基于所述调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整;
通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对所述测试对象进行负载测试。
2.根据权利要求1所述的方法,其特征在于,所述根据所述负载测试指令生成多个线程包括:
根据所述系统最大并发数和每个线程的最大并发数生成多个线程。
3.根据权利要求2所述的方法,其特征在于,所述根据所述系统最大并发数和每个线程的最大并发数生成多个线程,包括:
根据所述系统最大并发数和每个线程的最大并发数,计算完成所述系统最大并发数所需的线程数;
以所述线程数为数量,生成线程。
4.根据权利要求1所述的方法,其特征在于,所述基于所述每个线程的最大并发数整除每秒所包含的时间片的数量所得到的商和余数确定每个线程在一个时间片内需完成发送的最大请求数量,包括:
将所述每个线程的最大并发数整除每秒所包含的时间片的数量,得到商和余数;
若所述余数为0,则将得到的商作为每个线程在一个时间片内需完成发送的最大请求数量;
若所述余数不为0,则从所有时间片中取出与所述余数等量的时间片作为第一类时间片,并将剩余的时间片作为第二类时间片,将得到的商加1的值作为每个线程在第一类时间片的每个时间片内需完成发送的最大请求数量,以及将得到的商作为每个线程在第二类时间片的每个时间片内需完成发送的最大请求数量。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息,包括:
接收设置指令,所述设置指令指示每个线程在一个时间片内需完成发送的最小请求数量和变化频率;
根据所述设置指令和每个线程在一个时间片内需完成发送的最大请求数量生成调节配置信息。
6.根据权利要求5所述的方法,其特征在于,所述在预设时间段内,基于所述调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整,包括:
根据所述调节配置信息确定每个线程在一个时间片内需完成发送的最大请求数量、每个线程在一个时间片内需完成发送的最小请求数量和变化频率;
设置每个线程在一个时间片内需完成发送的请求数量,使得所述每个线程在一个时间片内需完成发送的请求数量在预设时间段内,按照所述变化频率,在所述最小请求数量和最大请求数量之间变化。
7.根据权利要求6所述的方法,其特征在于,所述设置每个线程在一个时间片内需完成发送的请求数量之后,还包括:
在时间片数据表中记录所述每个线程在一个时间片内需完成发送的请求数量;
将所述时间片数据表保存至内存。
8.根据权利要求1至4任一项所述的方法,其特征在于,所述通过生成的多个线程,按照调整后每个线程在一个时间片内需完成发送的请求数量向测试对象标识对应的测试对象发送预设请求,以对所述测试对象进行负载测试,包括:
根据测试对象标识确定测试对象;
通过生成的多个线程,依次读取调整后每个线程在一个时间片内需完成发送的请求数量;
按照读取到的请求数量向所述测试对象发送预设请求,以对所述测试对象进行负载测试。
9.一种负载测试装置,其特征在于,包括:
获取单元,用于获取负载测试指令,所述负载测试指令携带测试对象标识、系统最大并发数、每个线程的最大并发数、以及每秒所包含的时间片的数量;
预处理单元,用于根据所述负载测试指令生成多个线程、以及基于所述每个线程的最大并发数整除每秒所包含的时间片的数量所得到的商和余数确定每个线程在一个时间片内需完成发送的最大请求数量,其中,所述每个线程在与所述余数等量的时间片中每个时间片内需完成发送的最大请求数量为商加1的值;
设置单元,用于根据每个线程在一个时间片内需完成发送的最大请求数量设置调节配置信息;
调整单元,用于在预设时间段内,基于所述调节配置信息对每个线程在一个时间片内需完成发送的请求数量进行调整;
发送单元,用于通过生成的多个线程,按照调整后请求数量向测试对象标识对应的测试对象发送预设请求,以对所述测试对象进行负载测试。
10.根据权利要求9所述的装置,其特征在于,所述预处理单元包括生成子单元;
所述生成子单元,用于根据所述系统最大并发数和每个线程的最大并发数生成多个线程。
11.根据权利要求9或10所述的装置,其特征在于,所述调整单元包括确定子单元和调整子单元;
所述设置单元,具体用于接收设置指令,所述设置指令指示每个时间片可发送的最小请求数量和变化频率,根据所述设置指令和每个线程在一个时间片内需完成发送的最大请求数量生成调节配置信息;
所述确定子单元,用于根据所述调节配置信息确定每个线程在一个时间片内需完成发送的最大请求数量、每个线程在一个时间片内需完成发送的最小请求数量和变化频率;
所述调整子单元,用于设置每个线程在一个时间片内需完成发送的请求数量,使得所述每个线程在一个时间片内需完成发送的请求数量在预设时间段内,按照所述变化频率,在所述最小请求数量和最大请求数量之间变化。
12.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至8任一项所述的负载测试方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810236683.9A CN110297743B (zh) | 2018-03-21 | 2018-03-21 | 一种负载测试方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810236683.9A CN110297743B (zh) | 2018-03-21 | 2018-03-21 | 一种负载测试方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297743A CN110297743A (zh) | 2019-10-01 |
CN110297743B true CN110297743B (zh) | 2023-03-21 |
Family
ID=68025478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810236683.9A Active CN110297743B (zh) | 2018-03-21 | 2018-03-21 | 一种负载测试方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110297743B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111162934B (zh) * | 2019-12-13 | 2023-01-03 | 微民保险代理有限公司 | 业务服务的测试方法和装置、存储介质、电子装置 |
CN113535346B (zh) * | 2020-04-21 | 2024-03-19 | 中移动信息技术有限公司 | 线程数量调整的方法、装置、设备及计算机存储介质 |
CN114726798B (zh) * | 2022-02-28 | 2023-07-18 | 福建星云电子股份有限公司 | 一种锂电池测试通道限流方法及系统 |
CN116860657B (zh) * | 2023-09-05 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 压测控制处理方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013145628A1 (ja) * | 2012-03-30 | 2013-10-03 | 日本電気株式会社 | 情報処理装置及び負荷テスト実施方法 |
CN105791254A (zh) * | 2014-12-26 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 网络请求处理方法、装置及终端 |
CN106610896A (zh) * | 2015-10-27 | 2017-05-03 | 滴滴(中国)科技有限公司 | 一种自适应压力测试的方法及装置 |
-
2018
- 2018-03-21 CN CN201810236683.9A patent/CN110297743B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013145628A1 (ja) * | 2012-03-30 | 2013-10-03 | 日本電気株式会社 | 情報処理装置及び負荷テスト実施方法 |
CN105791254A (zh) * | 2014-12-26 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 网络请求处理方法、装置及终端 |
CN106610896A (zh) * | 2015-10-27 | 2017-05-03 | 滴滴(中国)科技有限公司 | 一种自适应压力测试的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110297743A (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110297743B (zh) | 一种负载测试方法、装置和存储介质 | |
CN108376112B (zh) | 压力测试方法、装置及可读介质 | |
US20110209157A1 (en) | Resource allocation method, program, and resource allocation apparatus | |
US7467291B1 (en) | System and method for calibrating headroom margin | |
CN106055464B (zh) | 数据缓存集群压力测试装置及方法 | |
CN111143143B (zh) | 一种性能测试方法及装置 | |
CN109981702B (zh) | 一种文件存储方法及系统 | |
CN108205469B (zh) | 一种基于MapReduce的资源分配方法及服务器 | |
CN108874324B (zh) | 一种访问请求处理方法、装置、设备及可读存储介质 | |
US9916182B2 (en) | Method and apparatus for allocating stream processing unit | |
JP6191695B2 (ja) | 仮想リソース制御システムおよび仮想リソース制御方法 | |
JP2011192049A (ja) | 仮想マシンシステム、自動マイグレーション方法および自動マイグレーションプログラム | |
CN111290942A (zh) | 压力测试方法、装置以及计算机可读介质 | |
CN110347546B (zh) | 监控任务动态调整方法、装置、介质及电子设备 | |
US11194619B2 (en) | Information processing system and non-transitory computer readable medium storing program for multitenant service | |
CN106909472B (zh) | 一种分布式文件系统的输入/输出负载调整方法及装置 | |
CN107018163B (zh) | 一种资源配置方法和装置 | |
CN114490374A (zh) | 应用的压力测试方法、电子设备、存储介质及程序产品 | |
CN112860532A (zh) | 性能测试方法、装置、设备及介质、程序产品 | |
CN115952005B (zh) | 一种元数据负载均衡方法、装置、设备及可读存储介质 | |
KR102658677B1 (ko) | 수상함 전투체계의 역할별 자원 사용률에 기반한 가상머신 관리 시스템 및 방법 | |
CN116991335B (zh) | 队列资源分配方法、装置、磁盘阵列卡、设备和介质 | |
CN111897688B (zh) | 测试标的的测试方法及装置 | |
CN113595829B (zh) | 压力测试方法、装置、电子设备及存储介质 | |
CN111399763B (zh) | 数据存储的方法、装置、系统、设备及存储介质 |
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 |