CN113342589B - 对服务器进行压力测试的方法和装置 - Google Patents

对服务器进行压力测试的方法和装置 Download PDF

Info

Publication number
CN113342589B
CN113342589B CN202110894171.3A CN202110894171A CN113342589B CN 113342589 B CN113342589 B CN 113342589B CN 202110894171 A CN202110894171 A CN 202110894171A CN 113342589 B CN113342589 B CN 113342589B
Authority
CN
China
Prior art keywords
test
load value
current
server
time period
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
Application number
CN202110894171.3A
Other languages
English (en)
Other versions
CN113342589A (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.)
Beijing Jindi Technology Co Ltd
Original Assignee
Beijing Jindi Technology 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 Beijing Jindi Technology Co Ltd filed Critical Beijing Jindi Technology Co Ltd
Priority to CN202110894171.3A priority Critical patent/CN113342589B/zh
Publication of CN113342589A publication Critical patent/CN113342589A/zh
Application granted granted Critical
Publication of CN113342589B publication Critical patent/CN113342589B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明实施例公开了一种对服务器进行压力测试的方法和装置、以及存储介质和电子设备,其中方法包括:基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组;根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。通过自动对服务器进行压力测试,本发明提供了高效率且高准确率的压力测试方案。

Description

对服务器进行压力测试的方法和装置
技术领域
本发明涉及计算机服务器技术领域,尤其是一种对服务器进行压力测试的方法和装置、以及存储介质和电子设备。
背景技术
目前,为了确定服务器并发处理能力的上限(即单位时间内服务器能处理的最大请求数),通常需要对服务器进行压力测试。服务器压力测试的目的是在负荷达到极限以前,通过执行可重复的负荷测试,确定服务器的可靠性、性能瓶颈等。现有技术中,在对服务器进行压力测试时,需要人工使用测试方法及工具来模拟足够数量的并发用户请求数。
在当前的服务器压力测试过程中,主要依赖技术人员对服务器状态进行观察并手动调整每秒查询率QPS(Queries Per Second)。由于服务器的每次压力测试的持续时间较长并且测试过程容易出错,因此不但耗费人力资源并且测试效果较差。此外,对于不熟悉服务器压力测试的技术人员来说,在压力测试过程中,倾向于过于保守地增加QPS,因此导致测试时间浪费严重。
发明内容
本发明要解决的技术问题是如何提升服务器压力测试的效率。本发明采用在服务器进行压力测试时自动增加QPS(查询负荷)的技术方案,可以自动基于历史数据,提供对服务器最大QPS的合理探索。其中自动增加QPS是压力测试中的自动化服务,并且目的是实现无人值守的服务器压力测试探索过程。
为了解决上述诸如耗费人力资源并且测试效果较差等技术问题,提出了本发明。本发明的实施例提供了一种对服务器进行压力测试的方法和装置、以及存储介质和电子设备。
根据本发明实施例的一个方面,提供了一种对服务器进行压力测试的方法,包括:确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组;在当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
可选地,在本发明上述各方法实施例中,其中确定用于压力测试的当前的目标负荷值包括:如果当前测试时间段是初始测试时间段,则获取负荷配置文件;对负荷配置文件进行解析以获取初始的目标负荷值,将初始的目标负荷值作为当前的目标负荷值。
可选地,在本发明上述各方法实施例中,可替换地,其中确定用于压力测试的当前的目标负荷值包括:如果当前测试时间段不是初始测试时间段,则获取在上一个测试时间段中所确定的更新的目标负荷值;将在上一个测试时间段中所确定的更新的目标负荷值作为当前的目标负荷值。
可选地,在本发明上述各方法实施例中,基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试包括:获取将在当前测试时间段开始时对服务器进行压力测试的当前负荷值,基于当前负荷值和当前的目标负荷值确定在当前测试时间段内的负荷增加步长;在当前测试时间段内,以按照当前测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。
可选地,在本发明上述各方法实施例中,其中获取服务器在当前测试时间段内的当前运行数据集包括:将当前测试时间段划分为多个时间单元,从多个时间单元中选择多个当前时间单元;获取服务器在多个当前时间单元中每个当前时间单元内的当前运行数据项;将多个当前时间单元各自的当前运行数据项构成当前运行数据集。
可选地,在本发明上述各方法实施例中,其中当前运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量。
可选地,在本发明上述各方法实施例中,其中确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度包括:获取多个测试结果组中每个测试结果组的历史运行数据集,其中历史运行数据集包括按照多个时间单元的时间顺序进行存储的多个历史运行数据项,并且历史运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量;对当前运行数据集进行解析以获取多个当前时间单元中每个当前时间单元内的当前运行数据项;确定与多个当前时间单元相对应的多个历史时间单元,从每个测试结果组的历史运行数据集中选择与每个历史时间单元相关联的历史运行数据项,从而为每个测试结果组获得各自的多个历史运行数据项;确定多个当前运行数据项与每个测试结果组各自的多个历史运行数据项的匹配度。
可选地,在本发明上述各方法实施例中,基于匹配度从多个测试结果组中选择至少两个相关联的测试结果组包括:按照匹配度的降序顺序对多个测试结果组进行排序,以获得测试结果组的列表;从测试结果组的列表中选择匹配度最大的至少两个测试结果组,以作为相关联的测试结果组,或者,从测试结果组的列表中选择匹配度大于匹配度中位数的至少两个测试结果组,以作为相关联的测试结果组。
可选地,在本发明上述各方法实施例中,根据至少两个相关联的测试结果组确定更新的目标负荷值包括:获取至少两个相关联的测试结果组中每个相关联的测试结果组的数据组标签;基于数据组标签确定每个相关联的测试结果组的最大测试负荷值;基于每个相关联的测试结果组的最大测试负荷值确定更新的目标负荷值。
可选地,在本发明上述各方法实施例中,基于每个相关联的测试结果组的最大测试负荷值确定更新的目标负荷值包括:将每个相关联的测试结果组的最大测试负荷值的平均值确定为更新的目标负荷值。
可选地,在本发明上述各方法实施例中,利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试包括:获取服务器在当前测试时间段期满时的实际负荷值;基于实际负荷值和更新的目标负荷值确定在下一个测试时间段内的负荷增加步长;在下一个测试时间段内,以按照在下一个测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。
可选地,在本发明上述各方法实施例中,利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止包括:将更新的目标负荷值作为下一个测试时间段内的当前的目标负荷值,并利用下一个测试时间段内的当前的目标负荷值对服务器进行压力测试,从而按照对服务器持续增加负荷的方式来对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止。
可选地,在本发明上述各方法实施例中,其中当服务器在单位时间内的平均请求耗时大于耗时阈值时,确定服务器无法继续进行压力测试;或者当服务器在单位时间内的请求成功率小于成功率阈值时,确定服务器无法继续进行压力测试。
可选地,在本发明上述各方法实施例中,将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值包括:当确定服务器无法继续进行压力测试时,确定当前的时间单元的负荷值;将当前的时间单元的负荷值作为压力测试的最大测试负荷值。
可选地,在本发明上述各方法实施例中,其中多个测试结果组中每个测试结果组均具有数据组标签,数据组标签包括:测试结果组的标识符和最大测试负荷值。
可选地,在本发明上述各方法实施例中,其中每个测试结果组的最大测试负荷值均不相同,并且按照负荷值的降序顺序对每个测试结果组的最大测试负荷值进行排序后,任意两个相邻的最大测试负荷值之间的负荷值差值的绝对值大于预定差值。
根据本发明实施例的另一个方面,提供了一种对服务器进行压力测试的方法,包括:确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,确定基于匹配度是否能够从多个测试结果组中确定至少两个相关联的测试结果组;在能够确定至少两个相关联的测试结果组时,当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
可选地,在本发明上述各方法实施例中,在不能确定至少两个相关联的测试结果组时,当前测试时间段期满后,获取上一个测试时间段的目标负荷值,并基于当前的目标负荷值和上一个测试时间段的目标负荷值确定负荷增加步长;按照负荷增加步长对服务器增加负荷的方式对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
根据本发明实施例的再一个方面,提供了一种对服务器进行压力测试的装置,其特征在于,包括:确定模块,用于确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;获取模块,用于获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组;测试模块,用于在当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及处理模块,用于将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
可选地,在本发明上述各装置实施例中,确定模块包括:第一获取单元,用于如果当前测试时间段是初始测试时间段,则获取负荷配置文件;第一解析单元,用于对负荷配置文件进行解析以获取初始的目标负荷值,将初始的目标负荷值作为当前的目标负荷值。
可选地,在本发明上述各装置实施例中,确定模块还包括:第二获取单元,用于如果当前测试时间段不是初始测试时间段,则获取在上一个测试时间段中所确定的更新的目标负荷值;第一处理单元,用于将在上一个测试时间段中所确定的更新的目标负荷值作为当前的目标负荷值。
可选地,在本发明上述各装置实施例中,确定模块还包括:第三获取单元,用于获取将在当前测试时间段开始时对服务器进行压力测试的当前负荷值,基于当前负荷值和当前的目标负荷值确定在当前测试时间段内的负荷增加步长;第一测试单元,用于在当前测试时间段内,以按照当前测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。
可选地,在本发明上述各装置实施例中,获取模块包括:第一选择单元,用于将当前测试时间段划分为多个时间单元,从多个时间单元中选择多个当前时间单元;第四获取单元,用于获取服务器在多个当前时间单元中每个当前时间单元内的当前运行数据项;第二处理单元,用于将多个当前时间单元各自的当前运行数据项构成当前运行数据集。
可选地,在本发明上述各装置实施例中,其中当前运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量。
可选地,在本发明上述各装置实施例中,获取模块还包括:第五获取单元,用于获取多个测试结果组中每个测试结果组的历史运行数据集,其中历史运行数据集包括按照多个时间单元的时间顺序进行存储的多个历史运行数据项,并且历史运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量;第二解析单元,用于对当前运行数据集进行解析以获取多个当前时间单元中每个当前时间单元内的当前运行数据项;第二选择单元,用于确定与多个当前时间单元相对应的多个历史时间单元,从每个测试结果组的历史运行数据集中选择与每个历史时间单元相关联的历史运行数据项,从而为每个测试结果组获得各自的多个历史运行数据项;第一确定单元,用于确定多个当前运行数据项与每个测试结果组各自的多个历史运行数据项的匹配度,并基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组。
可选地,在本发明上述各装置实施例中,获取模块还包括:排序单元,用于按照匹配度的降序顺序对多个测试结果组进行排序,以获得测试结果组的列表;第三处理单元,用于从测试结果组的列表中选择匹配度最大的至少两个测试结果组,以作为相关联的测试结果组,或者,从测试结果组的列表中选择匹配度大于匹配度中位数的至少两个测试结果组,以作为相关联的测试结果组。
可选地,在本发明上述各装置实施例中,测试模块包括:第六获取单元,用于获取至少两个相关联的测试结果组中每个相关联的测试结果组的数据组标签;第四处理单元,用于基于数据组标签确定每个相关联的测试结果组的最大测试负荷值;第五处理单元,用于基于每个相关联的测试结果组的最大测试负荷值确定更新的目标负荷值。
可选地,在本发明上述各装置实施例中,第五处理单元具体用于将每个相关联的测试结果组的最大测试负荷值的平均值确定为更新的目标负荷值。
可选地,在本发明上述各装置实施例中,测试模块还包括:第七获取单元,用于获取服务器在当前测试时间段期满时的实际负荷值;第六处理单元,用于基于实际负荷值和更新的目标负荷值确定在下一个测试时间段内的负荷增加步长;第二测试单元,用于在下一个测试时间段内,以按照在下一个测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。
可选地,在本发明上述各装置实施例中,测试模块具体用于将更新的目标负荷值作为下一个测试时间段内的当前的目标负荷值,并利用下一个测试时间段内的当前的目标负荷值对服务器进行压力测试,从而按照对服务器持续增加负荷的方式来对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止。
可选地,在本发明上述各装置实施例中,其中当服务器在单位时间内的平均请求耗时大于耗时阈值时,确定服务器无法继续进行压力测试,或者当服务器在单位时间内的请求成功率小于成功率阈值时,确定服务器无法继续进行压力测试。
可选地,在本发明上述各装置实施例中,处理模块包括:第二确定单元,用于当确定服务器无法继续进行压力测试时,确定当前的时间单元的负荷值;第七处理单元,用于将当前的时间单元的负荷值作为压力测试的最大测试负荷值。
可选地,在本发明上述各装置实施例中,其中多个测试结果组中每个测试结果组均具有数据组标签,数据组标签包括:测试结果组的标识符和最大测试负荷值。
可选地,在本发明上述各装置实施例中,其中每个测试结果组的最大测试负荷值均不相同,并且按照负荷值的降序顺序对每个测试结果组的最大测试负荷值进行排序后,任意两个相邻的最大测试负荷值之间的负荷值差值的绝对值大于预定差值。
根据本发明实施例的又一个方面,提供了一种对服务器进行压力测试的装置,其特征在于,包括:确定模块,用于确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;获取模块,用于获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,确定基于匹配度是否能够从多个测试结果组中确定至少两个相关联的测试结果组;测试模块,用于在能够确定至少两个相关联的测试结果组时,当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及处理模块,用于将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
可选地,在本发明上述各装置实施例中,测试模块还用于,在不能确定至少两个相关联的测试结果组时,当前测试时间段期满后,获取上一个测试时间段的目标负荷值,并基于当前的目标负荷值和上一个测试时间段的目标负荷值确定负荷增加步长;按照负荷增加步长对服务器增加负荷的方式对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止。
根据本发明实施例的又一个方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行本发明上述任一实施例所述的方法。
根据本发明实施例的又一个方面,提供了一种电子设备,其特征在于,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本发明上述任一实施例所述的方法。
基于本发明上述实施例提供的对服务器进行压力测试的方法和装置、以及存储介质和电子设备,能够通过在服务器进行压力测试时自动增加QPS,来提升服务器压力测试的效率。本发明为服务器压力测试提供自动增加QPS的自动化服务,从而实现无人值守的服务器压力测试探索过程,并且能够在较长时间内按照最佳的测试过程来进行压力测试。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本发明一示例性实施例提供的对服务器进行压力测试的方法的流程示意图。
图2是本发明一示例性实施例提供的确定相关联的测试结果组的方法的流程示意图。
图3是本发明一示例性实施例提供的确定更新的目标负荷值的方法的流程示意图。
图4是本发明另一示例性实施例提供的对服务器进行压力测试的方法的流程示意图。
图5是本发明一示例性实施例提供的对服务器进行压力测试的装置的结构示意图。
图6是本发明一示例性实施例提供的电子设备的结构。
具体实施方式
下面,将参考附图详细地描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
本领域技术人员可以理解,本发明实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本发明实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本发明实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本发明中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本发明中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本发明对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
示例性方法
图1是本发明一示例性实施例提供的对服务器进行压力测试的方法的流程示意图。本实施例可应用在电子设备上,如图1所示,包括以下步骤:
步骤101,确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试。
每秒查询率QPS是对一个特定的服务器(例如,查询服务器)在规定时间内处理流量多少的衡量标准。每秒查询率QPS是服务器每秒钟能够处理的查询请求的数量/每秒钟能够处理的事务的数量。在本发明中,将对服务器进行压力测试时不断增加的QPS作为服务器的负荷值。
应当了解的是,本发明的目的是获取压力测试时的最大QPS值。具体地,基于历史加压数据作为标本数据分组并标记标签值(例如,能够达到的最大QPS)。其中标签值为包括100-2500 QPS之间很多键值对。随后,可以利用如KNN算法等将对当前压测数据与历史压测数据比较,获取相似度处于一定范围的QPS值的平均值,以作为当前预测的本次目标QPS值。基于目标QPS值不断调整(例如,QPS增加步长)进行每个测试时间段内的压力测试。在最后的测试时间段内,如果超出压测预测值且没出现异常,则可以按照固定斜率向上探测。
在本发明的实施例中,为进行压力测试的服务器提供自适应的动态压力测试过程。例如,按照时间将测试过程划分为多个测试时间段,并为每个测试时间段设置目标负荷值,也就是在测试时间段期满时服务器应该达到的负荷值(QPS)。通过为要开始的/下一个测试时间段动态地确定目标负荷值,可以使得服务器按照动态调整的负荷增加步长/负荷增加斜率来进行压力测试。其中每个测试时间段例如是20秒、30秒、40秒、50秒等任意合理数值。
为此,对服务器进行压力测试的过程中,需要在多个测试时间段内对服务器进行压力测试。其中第一测试时间段开始时,服务器的负荷值为0,也就是QPS为0。每个完整的测试时间段均具有开始时的负荷值和结束时的负荷值,并且当前测试时间段结束时的负荷值为下一测试时间段开始时的负荷值,而当前测试时间段开始时的负荷值为上一测试时间段结束时的负荷值。应当了解的是,最后一个测试时间段的时间可能与前面每个测试时间段的时间长度不同(前面每个测试时间段的时间长度可以相同),这是因为在最后一个测试时间段内,服务器可能提前结束压力测试,或以不断增加负荷值的方式持续更长时间。
优选地,在一种情况下,确定用于压力测试的当前的目标负荷值包括:如果当前测试时间段是初始测试时间段,则获取负荷配置文件。初始测试时间段例如是进行压力测试时的第一个测试时间段,为此需要利用负荷配置文件来确定第一个测试时间段内的目标负荷值。对负荷配置文件进行解析以获取初始的目标负荷值,将初始的目标负荷值作为当前的目标负荷值。通常,可以根据历史统计数据或服务器性能等预先设置初始测试时间段的目标负荷值。
优选地,在另一种情况下,其中确定用于压力测试的当前的目标负荷值包括:如果当前测试时间段不是初始测试时间段,则获取在上一个测试时间段中所确定的更新的目标负荷值。如上所述,在当前测试时间段不是初始测试时间段时,上一个测试时间段中所确定的负荷值或QPS值可以作为当前测试时间段的目标负荷值(或目标QPS值)。随后,将在上一个测试时间段中所确定的更新的目标负荷值作为当前的目标负荷值。即,在当前测试时间段内,以上一个测试时间段期满时的负荷值为起始,逐渐增加负荷到更新的目标负荷值为止。
优选地,基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试包括:获取将在当前测试时间段开始时对服务器进行压力测试的当前负荷值,基于当前负荷值和当前的目标负荷值确定在当前测试时间段内的负荷增加步长。其中,在当前测试时间段开始时对服务器进行压力测试的当前负荷值,与上一个测试时间段期满时的负荷值相同。例如,当前负荷值为200(QPS为200)、当前的目标负荷值为380并且当前测试时间段的时间长度为30秒(在这种情况下,除了最后一个测试时间段之外的每个测试时间段的时间长度均为30秒,举例来说,最后一个测试时间段的时间长度为20秒、50秒等任意合理数值),那么在当前测试时间段内的负荷增加步长为每秒增加负荷值6,即(380-200) / 30=6。负荷增加步长例如是每秒增加6个查询,即QPS增加6。随后,在当前测试时间段内,以按照当前测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。例如从负荷值为200开始,按照每秒增加负荷值6的方式,在30秒后达到负荷值380。
步骤102,获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组。
其中获取服务器在当前测试时间段内的当前运行数据集包括:将当前测试时间段划分为多个时间单元,从多个时间单元中选择多个当前时间单元。例如,当前测试时间段的时间长度为30秒并且时间单元的时间长度为1秒。多个当前时间单元例如是第1秒到第5秒的5个时间单元、第1秒到第10秒的10个时间单元等任意合理数值。获取服务器在多个当前时间单元中每个当前时间单元内的当前运行数据项。
应当了解的是,在服务器压力测试过程中,会对每个时间单元中服务器的运行数据项进行记录。其中运行数据项至少包括以下属性:平均请求耗时avg、预定分位的请求耗时TPx、最小的请求耗时min_cost、请求成功率succ_rate以及时间单元内的请求数量QPS。在时间单元为1秒的情况下,在服务器压力测试过程中,按秒为单位,确定或统计当前秒的数据,将数据上报到数据库(例如,mysql数据库)进行存储。平均请求耗时avg为单位时间内每个请求(查询请求)的完成时间长度的平均值。预定分位的请求耗时为按照请求的完成时间长度的升序顺序对所有请求进行排序(例如,从1毫秒至965毫秒),将排位在预定位置的请求的完成时间长度作为预定分位的请求耗时。例如,单位时间内存完成了100个请求,按照完成时间长度的升序顺序对100个请求进行排序,将排在第90位的请求的完成时间长度作为百分之90分位的请求耗时TP90。应当了解的是,预定分位可以是任意合理的分位,例如百分之80分位、百分之90分位等。最小的请求耗时为单位时间内完成的请求中,完成时间长度最小的请求的完成时间长度,例如,1毫秒。请求成功率为单位时间内服务器处理成功的请求数的百分位,例如,单位时间内服务器处理成功的请求数S1、单位时间内服务器处理失败的请求数S2,则请求成功率为S1 /(S1+S2)。时间单元内的请求数量为时间单元内的QPS,即请求数量或事务数量。
将多个当前时间单元各自的当前运行数据项构成当前运行数据集。在确定了多个当前时间单元后,确定每个当前时间单元各自的当前运行数据项并且每个当前时间单元各自的当前运行数据项构成的当前运行数据集。如上所述,当前运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量。
为了确定与服务器在当前测试时间段内的运行状态相似的多个样本数据,本发明需要确定相关联的测试结果组。图2是本发明一示例性实施例提供的确定相关联的测试结果组的方法的流程示意图。如图2所示,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组包括:
步骤201,获取多个测试结果组中每个测试结果组的历史运行数据集。
其中历史运行数据集包括按照多个时间单元的时间顺序进行存储的多个历史运行数据项。例如,按照从第1秒至第5秒的时间顺序进行存储的多个历史运行数据项。由此可知,当前运行数据项和历史运行数据项均是运行数据项,术语的不同仅是为了区分它们属于不同的数据集合。其中历史运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量。
其中多个测试结果组中每个测试结果组均具有数据组标签,数据组标签包括:测试结果组的标识符和最大测试负荷值。
在一实施例中,根据服务器多次压力测试中每次压力测试运行数据,确定例如50QPS至3000 QPS(QPS为每秒内请求/事务的数量)的运行数据项。例如,在常用的压力测试区间50至1000 QPS内,以第一间隔50至100 QPS来获取测试结果组的可用数据。在大于1000QPS时,以第二间隔200至300 QPS来获取测试结果组的可用数据。应当了解的是,上述第一间隔和第二间隔可以取任意合理数值。随后,对每个测试结果组标注最大测试负荷值的标签,例如最终达到的QPS。
例如,标签数据格式为[测试结果组]–[最大测试负荷值]。其中,多个测试结果组的数据内容可以被作为历史数据。随后,以经过筛选的历史数据[测试结果组]–[最大测试负荷值]为基础作为样本数据集合。将历史数据进行归一化处理后,记录在5个维度的属性或坐标中以得到5维数据。5个维度的属性或坐标为平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量。在数据统计或采集时,随着服务器压力测试的进行,以预定时间间隔(例如,5秒)进行循环,每秒将压测工具的运行数据上传到数据库中,以获取服务器的当前压力测试的5维数据。
步骤202,对当前运行数据集进行解析以获取多个当前时间单元中每个当前时间单元内的当前运行数据项。
步骤203,确定与多个当前时间单元相对应的多个历史时间单元,从每个测试结果组的历史运行数据集中选择与每个历史时间单元相关联的历史运行数据项,从而为每个测试结果组获得各自的多个历史运行数据项。
步骤204,确定多个当前运行数据项与每个测试结果组各自的多个历史运行数据项的匹配度,并基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组。
确定多个当前运行数据项与每个测试结果组各自的多个历史运行数据项的匹配度包括:确定第1秒至第5秒内当前运行数据项与每个测试结果组在第1至5秒内的历史运行数据项的匹配度。本发明基于平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量确定匹配度。例如,可以为平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量设置不同的权重,并基于平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量的相近程度进行加权计算来确定匹配度。
基于匹配度从多个测试结果组中选择至少两个相关联的测试结果组包括:按照匹配度的降序顺序对多个测试结果组进行排序,以获得测试结果组的列表;从测试结果组的列表中选择匹配度最大的至少两个测试结果组,以作为相关联的测试结果组,或者,从测试结果组的列表中选择匹配度大于匹配度中位数的至少两个测试结果组,以作为相关联的测试结果组。例如,在确定了多个当前运行数据项与每个测试结果组各自的多个历史运行数据项的匹配度后,即获得了当前测试时间段与每个测试结果组的匹配度。按照匹配度的降序顺序对多个测试结果组降序排序,随后,从降序排序的多个测试结果组中选择匹配度最大的至少两个测试结果组。举例来说,获取服务器当前的压力测试的状态数据,例如,预定时间段内的5维数据,使用诸如最临近KNN(K-Nearest Neighbor)算法计算得到相距最近(例如,相似度最高)的n个历史数据组(或测试结果组)并获得每个历史数据组的标签。标签内容即为QPS值。其中n可以为5、6、8等任意合理数值。
步骤103,在当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值(预估的QPS)在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止。
为了在下一个测试时间段内进行压力测试,本发明需要获取下一个测试时间段的目标负荷值。图3是本发明一示例性实施例提供的确定更新的目标负荷值的方法的流程示意图。如图3所示,根据至少两个相关联的测试结果组确定更新的目标负荷值包括:
步骤301,获取至少两个相关联的测试结果组中每个相关联的测试结果组的数据组标签。
步骤302,基于数据组标签确定每个相关联的测试结果组的最大测试负荷值。
步骤303,基于每个相关联的测试结果组的最大测试负荷值确定更新的目标负荷值,包括:将每个相关联的测试结果组的最大测试负荷值的平均值确定为更新的目标负荷值。例如,在获得n个历史数据组的n个标签后,计算n个标签的QPS值的平均值并将平均值作为下一个测试时间段的预估能达到的QPS。
利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试包括:获取服务器在当前测试时间段期满时的实际负荷值。
在一实施例中,基于实际负荷值和更新的目标负荷值确定在下一个测试时间段内的负荷增加步长;在下一个测试时间段内,以按照上述确定的在下一个测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。例如,实际负荷值1000(QPS为1000)、更新的目标负荷值为1120并且下一个测试时间段的时间长度为30秒,那么在向下一个测试时间段内的负荷增加步长为每秒增加负荷值4,即(1120-1000) / 30=4。负荷增加步长为每秒增加负荷值4,例如是每秒增加4个查询,即QPS增加4。随后,在下一个测试时间段内,以按照下一个测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。例如从负荷值为1000开始,按照每秒增加负荷值4的方式,在30秒后达到负荷值1120。在本发明中,通过调用加压引擎中的用于修改QPS或负荷的接口,动态地修改服务器的压力。
在一实施例中,利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止包括:将更新的目标负荷值作为下一个测试时间段内的当前的目标负荷值,并利用下一个测试时间段内的当前的目标负荷值对服务器进行压力测试,从而按照对服务器持续增加负荷的方式来对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止。其中当服务器在单位时间内的平均请求耗时大于耗时阈值时,确定服务器无法继续进行压力测试。其中当服务器在单位时间内的请求成功率小于成功率阈值时,确定服务器无法继续进行压力测试。
步骤104,将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
其中,将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值具体可以包括:当确定服务器无法继续进行压力测试时,确定当前的时间单元的负荷值;将当前的时间单元的负荷值作为压力测试的最大测试负荷值。其中每个测试结果组的最大测试负荷值均不相同,并且按照负荷值的降序顺序对每个测试结果组的最大测试负荷值进行排序后,任意两个相邻的最大测试负荷值之间的负荷值差值的绝对值大于预定差值。
根据本发明的另一方面,提供一种对服务器进行压力测试的方法,包括:
确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;
获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,确定基于匹配度是否能够从多个测试结果组中确定至少两个相关联的测试结果组;
在能够确定至少两个相关联的测试结果组时,当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及
将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
在不能确定至少两个相关联的测试结果组时,当前测试时间段期满后,获取上一个测试时间段的目标负荷值,并基于当前的目标负荷值和上一个测试时间段的目标负荷值确定负荷增加步长;按照负荷增加步长对服务器增加负荷的方式对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
举例来说,在压力测试过程中,当服务器到达所设定的最终负荷值或QPS,仍然没探测到瓶颈。那么需要进行测试服务器的最大测试负荷值或QPS。为此,以最后一次调整时QPS的斜率,继续增大QPS。斜率=最后一次调整的QPS/倒数第二次调整的GPS。由于服务器压力测试过程中,会产生随机性或偶然性变化,例如服务器CPU资源消耗突然增大,或中间件被击穿等情况,压力测试开始时预估的QPS无法预计到类似的突发情况。为此,需要根据压力测试的动态情况进行实时预测。所以,需要动态改变预估的QPS。
图4是本发明另一示例性实施例提供的对服务器进行压力测试的方法的流程示意图。如图4所示,对服务器进行压力测试的方法包括:
步骤401,获取负荷配置文件,对负荷配置文件进行解析以获取初始的目标负荷值,将初始的目标负荷值作为当前的目标负荷值并将当前负荷值设置为0;
步骤402,基于当前负荷值和当前的目标负荷值确定在当前测试时间段内的负荷增加步长,以按照当前测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试;
步骤403,获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度;
步骤404,确定基于匹配度是否能从多个测试结果组中确定至少两个相关联的测试结果组,如果能,则进行步骤405,如果不能,则进行步骤406;
步骤405,当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,将更新的目标负荷值作为当前的目标负荷值并将当前测试时间段期满时的负荷值作为当前负荷值,进行步骤402;
步骤406,基于当前负荷值和当前的目标负荷值确定负荷增加步长,按照负荷增加步长对服务器增加负荷的方式对服务器进行压力测试,当检测到服务器无法继续进行压力测试时,进行步骤407;
步骤407,将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
其中基于当前负荷值和当前的目标负荷值确定负荷增加步长包括:基于当前负荷值和当前的目标负荷值确定负荷增加斜率。负荷增加斜率=当前的目标负荷值/当前负荷值。根据负荷增加斜率确定负荷增加步长。或者,基于当前负荷值和当前的目标负荷值确定负荷增加步长包括:基于当前负荷值和当前的目标负荷值的差值与测试时间段的比值来确定负荷增加步长。
示例性装置
图5是本发明一示例性实施例提供的对服务器进行压力测试的装置的结构示意图。如图5所示,本实施例包括:
确定模块51,用于确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试。
可选地,在本发明上述各装置实施例中,确定模块51包括:
第一获取单元,用于如果当前测试时间段是初始测试时间段,则获取负荷配置文件;
第一解析单元,用于对负荷配置文件进行解析以获取初始的目标负荷值,将初始的目标负荷值作为当前的目标负荷值。
可选地,在本发明上述各装置实施例中,确定模块51还包括:
第二获取单元,用于如果当前测试时间段不是初始测试时间段,则获取在上一个测试时间段中所确定的更新的目标负荷值;
第一处理单元,用于将在上一个测试时间段中所确定的更新的目标负荷值作为当前的目标负荷值。
可选地,在本发明上述各装置实施例中,确定模块51还包括:
第三获取单元,用于获取将在当前测试时间段开始时对服务器进行压力测试的当前负荷值,基于当前负荷值和当前的目标负荷值确定在当前测试时间段内的负荷增加步长;
第一测试单元,用于在当前测试时间段内,以按照当前测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。
获取模块52,用于获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组。
可选地,在本发明上述各装置实施例中,获取模块52包括:
第一选择单元,用于将当前测试时间段划分为多个时间单元,从多个时间单元中选择多个当前时间单元;
第四获取单元,用于获取服务器在多个当前时间单元中每个当前时间单元内的当前运行数据项;
第二处理单元,用于将多个当前时间单元各自的当前运行数据项构成当前运行数据集。
可选地,在本发明上述各装置实施例中,其中当前运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量。
可选地,在本发明上述各装置实施例中,获取模块52还包括:
第五获取单元,用于获取多个测试结果组中每个测试结果组的历史运行数据集,其中历史运行数据集包括按照多个时间单元的时间顺序进行存储的多个历史运行数据项,并且历史运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量;
第二解析单元,用于对当前运行数据集进行解析以获取多个当前时间单元中每个当前时间单元内的当前运行数据项;
第二选择单元,用于确定与多个当前时间单元相对应的多个历史时间单元,从每个测试结果组的历史运行数据集中选择与每个历史时间单元相关联的历史运行数据项,从而为每个测试结果组获得各自的多个历史运行数据项;
第一确定单元,用于确定多个当前运行数据项与每个测试结果组各自的多个历史运行数据项的匹配度,并基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组。
可选地,在本发明上述各装置实施例中,获取模块52还包括:
排序单元,用于按照匹配度的降序顺序对多个测试结果组进行排序,以获得测试结果组的列表;
第三处理单元,用于从测试结果组的列表中选择匹配度最大的至少两个测试结果组,以作为相关联的测试结果组,或者,从测试结果组的列表中选择匹配度大于匹配度中位数的至少两个测试结果组,以作为相关联的测试结果组。
测试模块53,用于在当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止。
可选地,在本发明上述各装置实施例中,测试模块53包括:
第六获取单元,用于获取至少两个相关联的测试结果组中每个相关联的测试结果组的数据组标签;
第四处理单元,用于基于数据组标签确定每个相关联的测试结果组的最大测试负荷值;
第五处理单元,用于基于每个相关联的测试结果组的最大测试负荷值确定更新的目标负荷值。
可选地,在本发明上述各装置实施例中,第五处理单元具体用于将每个相关联的测试结果组的最大测试负荷值的平均值确定为更新的目标负荷值。
可选地,在本发明上述各装置实施例中,测试模块53还包括:
第七获取单元,用于获取服务器在当前测试时间段期满时的实际负荷值;
第六处理单元,用于基于实际负荷值和更新的目标负荷值确定在下一个测试时间段内的负荷增加步长;
第二测试单元,用于在下一个测试时间段内,以按照在下一个测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。
可选地,在本发明上述各装置实施例中,测试模块具体用于将更新的目标负荷值作为下一个测试时间段内的当前的目标负荷值,并利用下一个测试时间段内的当前的目标负荷值对服务器进行压力测试,从而按照对服务器持续增加负荷的方式来对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止。
可选地,在本发明上述各装置实施例中,其中当服务器在单位时间内的平均请求耗时大于耗时阈值时,确定服务器无法继续进行压力测试。
可选地,在本发明上述各装置实施例中,其中当服务器在单位时间内的请求成功率小于成功率阈值时,确定服务器无法继续进行压力测试。
处理模块54,用于将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
可选地,在本发明上述各装置实施例中,处理模块54包括:
第二确定单元,用于当确定服务器无法继续进行压力测试时,确定当前的时间单元的负荷值;
第七处理单元,用于将当前的时间单元的负荷值作为压力测试的最大测试负荷值。
可选地,在本发明上述各装置实施例中,其中多个测试结果组中每个测试结果组均具有数据组标签,数据组标签包括:测试结果组的标识符和最大测试负荷值
可选地,在本发明上述各装置实施例中,其中每个测试结果组的最大测试负荷值均不相同,并且按照负荷值的降序顺序对每个测试结果组的最大测试负荷值进行排序后,任意两个相邻的最大测试负荷值之间的负荷值差值的绝对值大于预定差值。
根据本发明实施例的又一个方面,提供了一种对服务器进行压力测试的装置,包括:
确定模块51,用于确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;
获取模块52,用于获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,确定基于匹配度是否能够从多个测试结果组中确定至少两个相关联的测试结果组;
测试模块53,用于在能够确定至少两个相关联的测试结果组时,当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及
处理模块54,用于将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
可选地,在本发明上述各装置实施例中,测试模块53还用于,在不能确定至少两个相关联的测试结果组时,当前测试时间段期满后,获取上一个测试时间段的目标负荷值,并基于当前的目标负荷值和上一个测试时间段的目标负荷值确定负荷增加步长;按照负荷增加步长对服务器增加负荷的方式对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止。
示例性电子设备
图6是本发明一示例性实施例提供的电子设备的结构。该电子设备可以是第一设备和第二设备中的任一者或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。图6图示了根据本公开实施例的电子设备的框图。如图6所示,电子设备包括一个或多个处理器61和存储器62。
处理器61可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器62可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器61可以运行所述程序指令,以实现上文所述的本公开的各个实施例的软件程序的对服务器进行压力测试的方法以及/或者其他期望的功能。在一个示例中,电子设备还可以包括:输入装置63和输出装置64,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置63还可以包括例如键盘、鼠标等等。
该输出装置64可以向外部输出各种信息。该输出设备64可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图6中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的对服务器进行压力测试的方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的对服务器进行压力测试的方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (22)

1.一种对服务器进行压力测试的方法,其特征在于,包括:
确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;
获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组;
在当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及
将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
2.根据权利要求1所述的方法,其特征在于,其中确定用于压力测试的当前的目标负荷值包括:
如果当前测试时间段是初始测试时间段,则获取负荷配置文件;
对负荷配置文件进行解析以获取初始的目标负荷值,将初始的目标负荷值作为当前的目标负荷值。
3.根据权利要求1所述的方法,其特征在于,其中确定用于压力测试的当前的目标负荷值包括:
如果当前测试时间段不是初始测试时间段,则获取在上一个测试时间段中所确定的更新的目标负荷值;
将在上一个测试时间段中所确定的更新的目标负荷值作为当前的目标负荷值。
4.根据权利要求1所述的方法,其特征在于,基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试包括:
获取将在当前测试时间段开始时对服务器进行压力测试的当前负荷值,基于当前负荷值和当前的目标负荷值确定在当前测试时间段内的负荷增加步长;
在当前测试时间段内,以按照当前测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。
5.根据权利要求1所述的方法,其特征在于,其中获取服务器在当前测试时间段内的当前运行数据集包括:
将当前测试时间段划分为多个时间单元,从多个时间单元中选择多个当前时间单元;
获取服务器在多个当前时间单元中每个当前时间单元内的当前运行数据项;
将多个当前时间单元各自的当前运行数据项构成当前运行数据集。
6.根据权利要求5所述的方法,其特征在于,其中当前运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量。
7.根据权利要求5所述的方法,其特征在于,其中确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度包括:
获取多个测试结果组中每个测试结果组的历史运行数据集,其中历史运行数据集包括按照多个时间单元的时间顺序进行存储的多个历史运行数据项,并且历史运行数据项包括以下属性:平均请求耗时、预定分位的请求耗时、最小的请求耗时、请求成功率以及时间单元内的请求数量;
对当前运行数据集进行解析以获取多个当前时间单元中每个当前时间单元内的当前运行数据项;
确定与多个当前时间单元相对应的多个历史时间单元,从每个测试结果组的历史运行数据集中选择与每个历史时间单元相关联的历史运行数据项,从而为每个测试结果组获得各自的多个历史运行数据项;
确定多个当前运行数据项与每个测试结果组各自的多个历史运行数据项的匹配度。
8.根据权利要求1或7所述的方法,其特征在于,基于匹配度从多个测试结果组中选择至少两个相关联的测试结果组包括:
按照匹配度的降序顺序对多个测试结果组进行排序,以获得测试结果组的列表;
从测试结果组的列表中选择匹配度最大的至少两个测试结果组,以作为相关联的测试结果组,或者,从测试结果组的列表中选择匹配度大于匹配度中位数的至少两个测试结果组,以作为相关联的测试结果组。
9.根据权利要求1所述的方法,其特征在于,根据至少两个相关联的测试结果组确定更新的目标负荷值包括:
获取至少两个相关联的测试结果组中每个相关联的测试结果组的数据组标签;
基于数据组标签确定每个相关联的测试结果组的最大测试负荷值;
基于每个相关联的测试结果组的最大测试负荷值确定更新的目标负荷值。
10.根据权利要求9所述的方法,其特征在于,基于每个相关联的测试结果组的最大测试负荷值确定更新的目标负荷值包括:
将每个相关联的测试结果组的最大测试负荷值的平均值确定为更新的目标负荷值。
11.根据权利要求1所述的方法,其特征在于,利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试包括:
获取服务器在当前测试时间段期满时的实际负荷值;
基于实际负荷值和更新的目标负荷值确定在下一个测试时间段内的负荷增加步长;
在下一个测试时间段内,以按照在下一个测试时间段内的负荷增加步长对服务器增加负荷的方式对服务器进行压力测试。
12.根据权利要求1或11所述的方法,其特征在于,利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止包括:
将更新的目标负荷值作为下一个测试时间段内的当前的目标负荷值,并利用下一个测试时间段内的当前的目标负荷值对服务器进行压力测试,从而按照对服务器持续增加负荷的方式来对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止。
13.根据权利要求1所述的方法,其特征在于,其中当服务器在单位时间内的平均请求耗时大于耗时阈值时,确定服务器无法继续进行压力测试;或者
当服务器在单位时间内的请求成功率小于成功率阈值时,确定服务器无法继续进行压力测试。
14.根据权利要求1所述的方法,其特征在于,将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值包括:
当确定服务器无法继续进行压力测试时,确定当前的时间单元的负荷值;
将当前的时间单元的负荷值作为压力测试的最大测试负荷值。
15.根据权利要求1所述的方法,其特征在于,其中多个测试结果组中每个测试结果组均具有数据组标签,数据组标签包括:测试结果组的标识符和最大测试负荷值。
16.根据权利要求15所述的方法,其特征在于,其中每个测试结果组的最大测试负荷值均不相同,并且按照负荷值的降序顺序对每个测试结果组的最大测试负荷值进行排序后,任意两个相邻的最大测试负荷值之间的负荷值差值的绝对值大于预定差值。
17.一种对服务器进行压力测试的方法,其特征在于,包括:
确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;
获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,确定基于匹配度是否能够从多个测试结果组中确定至少两个相关联的测试结果组;
在能够确定至少两个相关联的测试结果组时,当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及
将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
18.根据权利要求17所述的方法,其特征在于,在不能确定至少两个相关联的测试结果组时,当前测试时间段期满后,获取上一个测试时间段的目标负荷值,并基于当前的目标负荷值和上一个测试时间段的目标负荷值确定负荷增加步长;
按照负荷增加步长对服务器增加负荷的方式对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及
将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
19.一种对服务器进行压力测试的装置,其特征在于,包括:
确定模块,用于确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;
获取模块,用于获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,基于匹配度从多个测试结果组中确定至少两个相关联的测试结果组;
测试模块,用于在当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及
处理模块,用于将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
20.一种对服务器进行压力测试的装置,其特征在于,包括:
确定模块,用于确定用于压力测试的当前的目标负荷值,并基于当前的目标负荷值在当前测试时间段内对服务器进行压力测试;
获取模块,用于获取服务器在当前测试时间段内的当前运行数据集,确定当前运行数据集与多个测试结果组中每个测试结果组的历史运行数据集的匹配度,确定基于匹配度是否能够从多个测试结果组中确定至少两个相关联的测试结果组;
测试模块,用于在能够确定至少两个相关联的测试结果组时,当前测试时间段期满时,根据至少两个相关联的测试结果组确定更新的目标负荷值,并利用更新的目标负荷值在下一个测试时间段内对服务器进行压力测试,直到确定服务器无法继续进行压力测试为止;以及
处理模块,用于将服务器无法继续进行压力测试时的负荷值作为压力测试的最大测试负荷值。
21.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-18任一所述的方法。
22.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-18任一所述的方法。
CN202110894171.3A 2021-08-05 2021-08-05 对服务器进行压力测试的方法和装置 Active CN113342589B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110894171.3A CN113342589B (zh) 2021-08-05 2021-08-05 对服务器进行压力测试的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110894171.3A CN113342589B (zh) 2021-08-05 2021-08-05 对服务器进行压力测试的方法和装置

Publications (2)

Publication Number Publication Date
CN113342589A CN113342589A (zh) 2021-09-03
CN113342589B true CN113342589B (zh) 2021-09-28

Family

ID=77480843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110894171.3A Active CN113342589B (zh) 2021-08-05 2021-08-05 对服务器进行压力测试的方法和装置

Country Status (1)

Country Link
CN (1) CN113342589B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113900915B (zh) * 2021-09-28 2024-03-08 盐城天眼察微科技有限公司 确定服务性能状态的方法和装置、及存储介质和电子设备
CN114968747B (zh) * 2022-07-12 2022-10-28 杭州数列网络科技有限责任公司 自动极限压测性能测试方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090090624A (ko) * 2008-02-21 2009-08-26 (주)엔 소프트 컨버전스 환경에서의 부하테스트 방법 및 그 시스템
CN109426593A (zh) * 2017-08-24 2019-03-05 北京京东尚科信息技术有限公司 自动评估系统性能的方法和装置
CN111078478A (zh) * 2019-12-17 2020-04-28 腾讯科技(深圳)有限公司 服务器压力测试方法、装置和计算机可读存储介质
CN111414300A (zh) * 2020-03-27 2020-07-14 北京字节跳动网络技术有限公司 一种对服务器进行压力测试的方法及装置
CN111581039A (zh) * 2020-05-14 2020-08-25 深圳前海微众银行股份有限公司 系统性能的测试方法、装置、设备及存储介质
CN111694717A (zh) * 2019-03-14 2020-09-22 北京京东尚科信息技术有限公司 一种确定系统承压能力值的方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090090624A (ko) * 2008-02-21 2009-08-26 (주)엔 소프트 컨버전스 환경에서의 부하테스트 방법 및 그 시스템
CN109426593A (zh) * 2017-08-24 2019-03-05 北京京东尚科信息技术有限公司 自动评估系统性能的方法和装置
CN111694717A (zh) * 2019-03-14 2020-09-22 北京京东尚科信息技术有限公司 一种确定系统承压能力值的方法和装置
CN111078478A (zh) * 2019-12-17 2020-04-28 腾讯科技(深圳)有限公司 服务器压力测试方法、装置和计算机可读存储介质
CN111414300A (zh) * 2020-03-27 2020-07-14 北京字节跳动网络技术有限公司 一种对服务器进行压力测试的方法及装置
CN111581039A (zh) * 2020-05-14 2020-08-25 深圳前海微众银行股份有限公司 系统性能的测试方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113342589A (zh) 2021-09-03

Similar Documents

Publication Publication Date Title
CN113342589B (zh) 对服务器进行压力测试的方法和装置
CN113792825B (zh) 一种用电信息采集设备故障分类模型训练方法及装置
WO2019153487A1 (zh) 系统性能的度量方法、装置、存储介质和服务器
US6792393B1 (en) System and method for diagnosing computer system operational behavior
US10819603B2 (en) Performance evaluation method, apparatus for performance evaluation, and non-transitory computer-readable storage medium for storing program
CN110806954B (zh) 评估云主机资源的方法、装置、设备及存储介质
CN111563014A (zh) 接口服务性能测试方法、装置、设备和存储介质
CN113931258B (zh) 自我诊断方法和无负压叠压供水设备
CN111381970B (zh) 集群任务的资源分配方法及装置、计算机装置及存储介质
CN111045911A (zh) 性能测试方法、性能测试装置、存储介质与电子设备
EP3885849A1 (en) Prioritizing execution of multiple groups of analytic models
US20050096877A1 (en) System and method for determination of load monitoring condition and load monitoring program
CN113537337A (zh) 训练方法、异常检测方法、装置、设备和存储介质
CN112508191A (zh) 训练深度学习模型的方法及装置、电子设备及存储介质
CN112434651A (zh) 一种基于图像识别的信息分析方法、装置及计算机设备
CN113760689A (zh) 接口故障的报警方法、装置、设备及存储介质
CN116450483A (zh) 一种确定软件分配的负载的方法、装置、服务器及介质
CN115525392A (zh) 容器监控方法、装置、电子设备及存储介质
CN114860535A (zh) 数据评估模型生成方法及装置、异常数据监控方法及装置
CN114297042A (zh) 接口的压力性能测试方法、装置、设备及存储介质
CN113608949A (zh) 压力测试方法和装置、以及存储介质和电子设备
CN111506422B (zh) 事件分析方法及系统
CN111274112B (zh) 应用程序压测方法、装置、计算机设备和存储介质
CN114138535A (zh) 存储系统的故障诊断方法、装置、电子设备、介质及产品
CN113821389A (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