CN113595829B - 压力测试方法、装置、电子设备及存储介质 - Google Patents
压力测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113595829B CN113595829B CN202110874888.1A CN202110874888A CN113595829B CN 113595829 B CN113595829 B CN 113595829B CN 202110874888 A CN202110874888 A CN 202110874888A CN 113595829 B CN113595829 B CN 113595829B
- Authority
- CN
- China
- Prior art keywords
- target
- storage
- flow data
- mode
- data
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开是关于一种压力测试方法、装置、电子设备及存储介质,涉及互联网技术领域,用以在满足精确调整压力功能的基础上,保证分布式流量数据不重复。方法包括:对指定时间内目标生产服务产生的流量进行流量录制,得到目标流量数据,并通过多种存储方式存储;确定发压机带宽占用参数匹配的存储方式;若为分布式缓存方式,从分布式缓存方式对应的第一存储位置中,将发压机请求的目标流量数据发送给发压机;若为分布式文件系统存储方式,从分布式文件系统存储方式对应的第二存储位置中,将基于预设分配方式选取的目标流量数据发送给发压机;通过发压机接收到的目标流量数据进行压力测试。本公开满足精确调整压力需求,同时保证分布式流量数据不重复。
Description
技术领域
本公开涉及互联网技术领域,尤其涉及一种压力测试方法、装置、电子设备及存储介质。
背景技术
压力测试是探索系统性能瓶颈、保障系统稳定性的重要手段,可以快速验证系统在高强度负载下的稳健性及错误处理能力。线上流量是压力测试数据的重要来源之一,相比于手工构造的压测流量,线上流量具有仿真度高、生产成本低等优势,将录制好的线上流量以稳定的QPS(Query Per Second,每秒查询率)/并发度回放到被压服务是压测的主要方式之一。
在相关技术中,一些团队会直接使用录制好的流量进行发压,通过流量抢占的方式解决分布式流量数据不重复问题,但是该方式下无法精确调整压力,难以满足压力测试的基本要求。若有精确调整压力需求,通常使用将录制的流量成倍发送的方案,难以满足流量数据不重复的要求。
发明内容
本公开提供一种压力测试方法、装置、电子设备及存储介质,以至少解决相关技术中在满足精确调整压力功能的基础上,保证分布式流量数据不重复的问题。
本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种压力测试方法,包括:
对指定时间内目标生产服务产生的流量进行流量录制,得到目标流量数据,并通过多种存储方式对所述目标流量数据进行存储;
确定与发压机对应的带宽占用参数匹配的存储方式;
若所述存储方式为分布式缓存方式,则从所述分布式缓存方式对应的第一存储位置中,将所述发压机请求的所述目标流量数据发送给所述发压机;或者,若所述存储方式为分布式文件系统存储方式,则从所述分布式文件系统存储方式对应的第二存储位置中,将基于预设分配方式选取的所述目标流量数据发送给所述发压机;
通过所述发压机接收到的所述目标流量数据,对所述待测试服务器进行压力测试。
在一种可选的实施方式中,所述带宽占用参数包括单个发压机对应的单机带宽占用参数以及所有发压机对应的总带宽占用参数中的至少一种;所述确定与发压机对应的带宽占用参数匹配的存储方式,包括:
若所述单机带宽占用参数不大于第一带宽阈值,并且所述总带宽占用参数不大于第二带宽阈值,则确定所述存储方式为所述分布式缓存方式,所述第一带宽阈值小于所述第二带宽阈值;
若所述单机带宽占用参数大于第一带宽阈值,或者所述总带宽占用参数大于第二带宽阈值,则确定所述存储方式为所述分布式文件系统存储方式。
在一种可选的实施方式中,所述从所述分布式缓存方式对应的第一存储位置中,将所述发压机请求的所述目标流量数据发送给所述发压机,包括:
分别根据各个所述发压机的增量命令,确定各个所述发压机各自所请求的目标流量数据在所述第一存储位置中的起止位置;
根据所述起止位置获取相应位置的目标流量数据,并分别将获取的所述目标流量数据发送给对应的发压机;
所述通过所述发压机接收到的所述目标流量数据,对所述待测试服务器进行压力测试,包括:
通过各个所述发压机对各自获取到的目标流量数据进行流量回放,以对所述待测试服务器进行压力测试。
在一种可选的实施方式中,所述从所述分布式文件系统存储方式对应的第二存储位置中,将基于预设分配方式选取的所述目标流量数据发送给所述发压机,包括:
根据需要进行压力测试的发压机的数量,将存储在所述第二存储位置中的目标流量数据拆分为多个目标文件;
基于所述预设分配方式,将多个所述目标文件分别分配给不同的发压机;
所述通过所述发压机接收到的所述目标流量数据,对所述待测试服务器进行压力测试,包括:
通过各个所述发压机根据本地目标文件中的目标流量数据进行流量回放,以对所述待测试服务器进行压力测试。
在一种可选的实施方式中,所述通过多种存储方式对所述目标流量数据进行存储,包括:
将所述目标流量数据存储在所述分布式缓存方式对应的第一存储位置中,以及,通过异步持久化操作,将所述目标流量数据以文件的方式存储在所述分布式文件系统存储方式对应的第二存储位置中。
在一种可选的实施方式中,所述通过异步持久化操作,将所述目标流量数据以文件的方式存储在分布式文件系统存储方式对应的第二存储位置中,具体包括:
将所述目标流量数据分割为多个单条流量数据;
通过异步持久化操作,将包含所有单条流量数据的流量文件存储在所述第二存储位置中。
在一种可选的实施方式中,所述将所述目标流量数据分割为多个单条流量数据,包括:
按照预设的字节数对所有目标流量数据进行分割,以及每分割一次,则在本次分割处添加一个分隔符,其中,所述字节数用于表示一份目标流量数据的大小;
将每相邻两个分隔符之间的目标流量数据作为一个单条流量数据,以及,将第一个分隔符之前的目标流量数据作为一个单条流量数据,将最后一个分隔符之后的目标流量数据作为一个单条流量数据,以获得所述多个单条流量数据。
在一种可选的实施方式中,所述方法还包括:
删除所述分布式缓存方式对应的第一存储位置中,存储时长达到预设时长的目标流量数据。
根据本公开实施例的第二方面,提供另一种压力测试方法,包括:
接收针对待测试服务器的流量回放控制指令,所述流量回放控制指令包括用于进行流量回放的目标流量数据对应的存储方式,所述存储方式是与发压机对应的带宽占用参数匹配的存储方式,所述目标流量数据为对指定时间内目标生产服务产生的流量进行流量录制得到的;
若所述存储方式为分布式缓存方式,则接收从所述分布式缓存方式对应的第一存储位置中,获取所请求的所述目标流量数据;或者,若所述存储方式为分布式文件系统存储方式,则从所述分布式文件系统存储方式对应的第二存储位置中,获取基于预设分配方式选取的所述目标流量数据;
根据接收到的所述目标流量数据,对所述待测试服务器进行压力测试。
在一种可选的实施方式中,所述接收从所述分布式缓存方式对应的第一存储位置中,获取所请求的所述目标流量数据,包括:
根据增量命令确定所述目标流量数据在所述第一存储位置中的起止位置;
将根据所述起止位置获取的相应位置的目标流量数据,作为所请求的所述目标流量数据。
在一种可选的实施方式中,所述从所述分布式文件系统存储方式对应的第二存储位置中,获取基于预设分配方式选取的所述目标流量数据,包括:
基于所述预设分配方式,获取对所述第二存储位置中的目标流量数据进行拆分得到的目标文件,并存储在本地;
将本地目标文件中的目标流量数据,作为选取的所述目标流量数据。
根据本公开实施例的第三方面,提供一种压力测试装置,包括:
数据存储单元,被配置为执行对指定时间内目标生产服务产生的流量进行流量录制,得到目标流量数据,并通过多种存储方式对所述目标流量数据进行存储;
方式确定单元,被配置为执行确定与发压机对应的带宽占用参数匹配的存储方式;
数据分发单元,被配置为执行若所述存储方式为分布式缓存方式,则从所述分布式缓存方式对应的第一存储位置中,将所述发压机请求的所述目标流量数据发送给所述发压机;或者,若所述存储方式为分布式文件系统存储方式,则从所述分布式文件系统存储方式对应的第二存储位置中,将基于预设分配方式选取的所述目标流量数据发送给所述发压机;
压力测试单元,被配置为执行通过所述发压机接收到的所述目标流量数据,对所述待测试服务器进行压力测试。
在一种可选的实施方式中,所述带宽占用参数包括单个发压机对应的单机带宽占用参数以及所有发压机对应的总带宽占用参数中的至少一种;所述方式确定单元具体被配置为执行:
若所述单机带宽占用参数不大于第一带宽阈值,并且所述总带宽占用参数不大于第二带宽阈值,则确定所述存储方式为所述分布式缓存方式,所述第一带宽阈值小于所述第二带宽阈值;
若所述单机带宽占用参数大于第一带宽阈值,或者所述总带宽占用参数大于第二带宽阈值,则确定所述存储方式为所述分布式文件系统存储方式。
在一种可选的实施方式中,所述数据分发单元具体被配置为执行:
分别根据各个所述发压机的增量命令,确定各个所述发压机各自所请求的目标流量数据在所述第一存储位置中的起止位置;
根据所述起止位置获取相应位置的目标流量数据,并分别将获取的所述目标流量数据发送给对应的发压机;
所述压力测试单元具体被配置为执行:
通过各个所述发压机对各自获取到的目标流量数据进行流量回放,以对所述待测试服务器进行压力测试。
在一种可选的实施方式中,所述数据分发单元具体被配置为执行:
根据需要进行压力测试的发压机的数量,将存储在所述第二存储位置中的流量数据拆分为多个目标文件;
基于所述预设分配方式,将多个所述目标文件分别分配给不同的发压机;
所述压力测试单元具体被配置为执行:
通过各个所述发压机根据本地目标文件中的目标流量数据进行流量回放,以对所述待测试服务器进行压力测试。
在一种可选的实施方式中,所述数据存储单元具体被配置为执行:
将所述目标流量数据存储在所述分布式缓存方式对应的第一存储位置中,以及,通过异步持久化操作,将所述目标流量数据以文件的方式存储在所述分布式文件系统存储方式对应的第二存储位置中。
在一种可选的实施方式中,所述数据存储单元具体被配置为执行:
将所述目标流量数据分割为多个单条流量数据;
通过异步持久化操作,将包含所有单条流量数据的流量文件存储在所述第二存储位置中。
在一种可选的实施方式中,所述数据存储单元具体被配置为执行:
按照预设的字节数对所有目标流量数据进行分割,以及每分割一次,则在本次分割处添加一个分隔符,其中,所述字节数用于表示一份目标流量数据的大小;
将每相邻两个分隔符之间的目标流量数据作为一个单条流量数据,以及,将第一个分隔符之前的目标流量数据作为一个单条流量数据,将最后一个分隔符之后的目标流量数据作为一个单条流量数据,以获得所述多个单条流量数据。
在一种可选的实施方式中,所述装置还包括:
删除单元,被配置为执行删除所述分布式缓存方式对应的第一存储位置中,存储时长达到预设时长的目标流量数据。
根据本公开实施例的第四方面,提供另一种压力测试装置,包括:
接收单元,被配置为执行接收针对待测试服务器的流量回放控制指令,所述流量回放控制指令包括用于进行流量回放的目标流量数据对应的存储方式,所述存储方式是与发压机对应的带宽占用参数匹配的存储方式,所述目标流量数据为对指定时间内目标生产服务产生的流量进行流量录制得到的;
获取单元,被配置为执行若所述存储方式为分布式缓存方式,则接收从所述分布式缓存方式对应的第一存储位置中,获取所请求的所述目标流量数据;或者,若所述存储方式为分布式文件系统存储方式,则从所述分布式文件系统存储方式对应的第二存储位置中,获取基于预设分配方式选取的所述目标流量数据;
压力测试单元,被配置为执行根据接收到的所述目标流量数据,对所述待测试服务器进行压力测试。
在一种可选的实施方式中,所述获取单元具体被配置为执行:
根据增量命令确定所述目标流量数据在所述第一存储位置中的起止位置;
将根据所述起止位置获取的相应位置的目标流量数据,作为所请求的所述目标流量数据。
在一种可选的实施方式中,所述存储方式为分布式文件系统,所述获取单元具体被配置为执行:
基于所述预设分配方式,获取对所述第二存储位置中的目标流量数据进行拆分得到的目标文件,并存储在本地;
将本地目标文件中的目标流量数据,作为选取的所述目标流量数据。
根据本公开实施例的第五方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现本公开实施例第一方面或第二方面中任一项所述的压力测试方法。
根据本公开实施例的第四方面,提供一种非易失性可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行本公开实施例第一方面或第二方面中任一项所述的压力测试方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行实现本公开实施例上述第一方面以及第一方面任一可能涉及的方法,或者第二方面以及第二方面任一可能涉及的方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开实施例采用分布式的方式存储录制好的流量数据,在进行压力测试时,则会根据发压机对应的带宽占用参数,确定用于进行流量回放的目标流量数据对应的存储方式,进而,对该存储方式对应位置的目标流量数据进行流量回放,以实现压力测试。由于本公开实施例对流量数据采用了多种存储方式进行分布式存储,不同的存储方式对应不同的存储位置,不需要通过流量抢占的方式发压,并且根据发压机对应的带宽占用参数来分析流量存储方式,进而进行发压,能够满足精确调整压力需求,可以解决分布式流量数据不重复问题,并且尽可能少的占用发压机资源,保证单机高QPS发压能力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1为相关技术中的一种压力测试方法的应用场景示意图;
图2是根据一示例性实施例示出的一种压力测试方法的流程图;
图3是根据一示例性实施例示出的一种应用于压测工具的压力测试的方法示意图;
图4是根据一示例性实施例示出的一种文件存储格式的示意图;
图5是根据一示例性实施例示出的一种基于分布式缓存进行压力测试的方法示意图;
图6是根据一示例性实施例示出的一种从分布式缓存中读取流量数据的方法示意图;
图7是根据一示例性实施例示出的一种基于分布式文件系统进行压力测试的方法示意图;
图8是根据一示例性实施例示出的一种文件拆分方法的示意图;
图9是根据一示例性实施例示出的另一种压力测试方法的流程图;
图10是根据一示例性实施例示出的一种压力测试的完整方法流程图;
图11是根据一示例性实施例示出的第一种压力测试装置的框图;
图12是根据一示例性实施例示出的第二种压力测试装置的框图;
图13是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
下面对文中出现的一些词语进行解释:
1、本公开实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
2、本公开实施例中术语“电子设备”可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
3、本公开实施例中术语“压力测试(Stress Test)”简称压测,是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。在软件工程中,压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
4、本公开实施例中术语“流量回放”指通过记录线上流量,在开发或者测试环境回放,来发现系统是否能够正常运行,降低代码变动整体系统带来的风险。
5、本公开实施例中术语“持久化”是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。
6、本公开实施例中术语“Redis(分布式缓存)”是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value(关键字-值)数据库,并提供多种语言的API(Application Programming Interface,应用程序编程接口)。redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop(推/弹出)、add/remove(添加/删除)及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
7、本公开实施例中术语“incr(增量)命令”是一个针对字符串的操作,因为Redis没有专用的整数类型,所以key内储存的字符串被解释为十进制64位有符号整数来执行incr操作。
下面对本公开实施例的设计思想进行简要介绍:
随着计算机技术的发展,电子商务系统、购票系统、广告系统、即时通信工具、短视频客户端、邮箱客户端等各类系统应运而生,且各系统的规模越来越大、用户的访问或使用也越来越频繁。为了保证系统的性能稳定,需要对系统进行压力测试,压力测试也称为强度测试,压力测试用于确定一个系统的性能瓶颈或者不能正常使用的性能点,从而获得系统的服务级别。通常,通过模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试工具,来测试被测系统的性能、可靠性、稳定性等。具体的,将录制好的线上流量以稳定的QPS/并发度回放到被压服务是压测的主要方式之一。
参阅图1所示,其为相关技术中的一种压力测试方法的应用场景示意图。图示表示直接使用录制好的流量进行发压,通过流量抢占的方式解决分布式流量数据不重复问题,即实时录制好流量并实时回放。但是该方式下实时录制多少流量,发压机才能回放多少流量,无法精确调整压力,难以满足压力测试的基本要求。
有鉴于此,本公开实施例提出了一种压力测试方法、装置、电子设备和存储介质。本公开实施例采用分布式的方式存储录制好的流量数据,在进行压力测试时,则会根据发压机对应的带宽占用参数,确定用于进行流量回放的目标流量数据对应的存储方式,进而,对该位置的目标流量数据进行流量回放,以实现压力测试。由于本公开实施例对流量数据进行了分布式存储,不需要通过流量抢占的方式发压,并且根据发压机对应的带宽占用参数来分析流量存储方式,进而进行发压,能够满足精确调整压力需求,可以解决分布式流量数据不重复问题,并且尽可能少的占用发压机资源,保证单机高QPS发压能力。
本公开实施例描述的应用场景是为了更加清楚的说明本公开实施例的技术方案,并不构成对于本公开实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本公开实施例提供的技术方案对于类似的技术问题,同样适用。其中,在本公开的描述中,除非另有说明,“多个”的含义。
参阅图2所示,其为根据一示例性实施例示出的一种压力测试方法的流程图,该方法的执行主体为压测工具,具体包括以下步骤:
在步骤S21中,对指定时间内目标生产服务产生的流量进行流量录制,得到目标流量数据,并通过多种存储方式对目标流量数据进行存储;
具体地,在对指定时间内目标生产服务产生的流量进行流量录制并存储时的多种存储方式包括分布式缓存方式和分布式文件系统存储方式。
在一种可选的实施方式中,通过多种存储方式对目标流量数据进行存储时,可以将目标流量数据存储在分布式缓存方式对应的第一存储位置中,以及,通过异步持久化操作,将目标流量数据以文件的方式存储在分布式文件系统存储方式对应的第二存储位置中。
例如,第一存储位置为redis,第二存储位置为HDFS(Hadoop Distributed FileSystem,hadoop分布式文件系统)。
在本公开实施例中,对目标生产服务产生的流量进行流量录制并存储时,可以边录制边存储,也可以录制完成再存储,因而,具体还可分为以下两种情况:
情况一、在对目标生产服务产生的流量进行流量录制过程中,将录制的目标流量数据存储在分布式缓存方式对应的第一存储位置中,以及,在对目标生产服务产生的流量进行流量录制之后,根据带宽占用参数确定匹配的存储方式之前,通过异步持久化操作,将目标流量数据以文件的方式存储在分布式文件系统存储方式对应的第二存储位置中。
情况二、在对目标生产服务产生的流量进行流量录制之后,在根据带宽占用参数确定匹配的存储方式之前,将录制的目标流量数据存储在分布式缓存方式对应的第一存储位置中,同时,通过异步持久化操作,将目标流量数据以文件的方式存储在分布式文件系统存储方式对应的第二存储位置中。
综上,本公开实施例中录制好的流量数据可单独采用分布式缓存方式或分布式文件系统存储方式进行存储,也可同时采用在分布式缓存方式和分布式文件系统存储方式进行存储。由于本公开实施例结合分布式缓存与文件持久化的数据存储方案,在保证存储成本足够低的基础上减少用户数据等待时间。
在步骤S22中,确定与发压机对应的带宽占用参数匹配的存储方式;
其中,发压机具体是指发压时所使用的服务器,即部署发压引擎的服务器。
在步骤S23中,若存储方式为分布式缓存方式,则从分布式缓存方式对应的第一存储位置中,将发压机请求的目标流量数据发送给发压机;或者,若存储方式为分布式文件系统存储方式,则从分布式文件系统存储方式对应的第二存储位置中,将基于预设分配方式选取的目标流量数据发送给发压机;
在步骤S24中,通过发压机接收到的目标流量数据,对待测试服务器进行压力测试。
需要说明的是,本公开实施例中,对待测试服务器进行压力测试时所需的发压机可能有多个,即采用分布式发压的方式,对待测试服务器进行压测。
具体的,根据目标流量数据对待测试服务器进行压力测试时,主要是由发压机根据确定的存储方式,读取相应位置处的目标流量数据,并通过流量回放的方式对待测试服务器发压,之后,各发压机都会上报请求状况信息,当压测完成后,压测工具会对各发压机上报的请求状况信息进行处理得到这次压测任务的详细报告,具体包含整个压测过程中的总请求数、QPS、平均请求延时、错误请求数以及百分位时延数值等。
通过上述方案,对流量数据进行了分布式存储,不需要通过流量抢占的方式发压,并且根据发压机对应的带宽占用参数来分析流量存储方式,进而进行发压,能够满足精确调整压力需求,可以解决分布式流量数据不重复问题,并且尽可能少的占用发压机资源,保证单机高QPS发压能力。
在一种可选的实施方式中,带宽占用参数包括单个发压机对应的单机带宽占用参数以及所有发压机对应的总带宽占用参数中的至少一种。
其中,单机带宽占用参数为单条流量平均大小与单机压力值的乘积,总带宽占用参数为单条流量平均大小与总压力值的乘积,单条流量平均大小是指录制的目标流量数据大小的平均值,单机压力值表示单个发压机对应的压力值,总压力值表示所有发压机对应的总压力值。
具体的,【单机带宽占用】=【单条流量平均大小】*【单机压力值】;
【总带宽占用】=【单条流量平均大小】*【总压力值】。
在本公开实施例中,执行步骤S21时,具体可分为如下两种情况:
情况一、若单机带宽占用参数不大于第一带宽阈值,并且总带宽占用参数不大于第二带宽阈值,则确定存储方式为分布式缓存方式。
其中,第一带宽阈值小于第二带宽阈值。例如,第一带宽阈值为200MB,第二带宽阈值为2GB。
在【单机带宽占用】<=200MB并且【总带宽占用】<=2GB时,即可确定存储方式为分布式缓存方式,发压机需要从分布式缓存方式对应的第一存储位置中读取目标流量数据,并进行流量回放。
情况二、若单机带宽占用参数大于第一带宽阈值,或者总带宽占用参数大于第二带宽阈值,则确定存储方式为分布式文件系统存储方式。
例如,在【单机带宽占用】>200MB或者【总带宽占用】>2GB时,即可确定存储方式为分布式文件系统存储方式,该方式下,需要从分布式文件系统对应的第二存储位置中读取目标流量数据,具体是根据需要进行压力测试的发压机的个数,对分布式文件系统对应的第二存储位置中存储的流量数据进行拆分,得到多个目标文件,并分配给不同的发压机,继而由发压机读取目标文件中的流量数据(即目标流量数据),并进行流量回放。
其中,需要进行压力测试的发压机的个数是根据实际情况而定的,比如压测工具中一共有10个发压机,而本次只需用到8个发压机,则在进行文件拆分时,则拆分为8个目标文件即可。
需要说明的是,本公开实施例中所列举的发压机的数量只是简单的举例说明,实际上在进行压力测试时,所需发压机的数量也可以有很多,例如几千台或是几万台,具体可根据实际情况而定。
下面主要是以上述所列举情况一为例,分别介绍在不同存储方式下,如何进行压力测试的详细过程:
例如,某个节日活动时,用户可以通过短视频客户端抢红包,在活动上线之前即可进行压测,评估目前后台服务设备的总数能不能支持这些用户的请求。参阅图3所示,其为本公开实施例中的一种应用于压测工具的压力测试的方法示意图。具体包括:流量录制和流量回放。
以短视频客户端为例,用户登录短视频客户端进行操作(例如点击按钮)时会触发请求的调用,其中的生产服务指这些调用所请求的服务,可以指服务器等设备上所搭载的服务,服务器可以根据相应的处理逻辑得获取请求结果返回给用户。被压服务指压测环节中,进行测试所需的待测试服务上所搭载的服务。即,生产服务和被压服务都是指服务器中部署的系统。发压机用于模拟用户发请求的过程。例如模拟5亿用户抢红包的过程,一共所需几千台发压机的情况下,一个发压机可以模拟几万用户发请求的过程。
在流量录制过程中,首先将流量数据存储在分布式缓存redis中,以保证流量数据可直接进行小流量回放发压验证使用,方便快速发压,减少用户等待时间,另外还可尽可能少的占用发压机资源,保证单机高QPS发压能力。
在一种可选的实施方式中,还可进一步设置数据缓存的有效期,即预设时长,当流量数据在redis中的存储时长达到预设时长时,即可删除存储时长达到预设时长的目标流量数据。
例如,redis对应的数据有效期为24h(小时),则在浏览数据存储至redis中的时间达到24h后,可从redis中删除,避免失效数据(已完成压测的流量数据)长期占用缓存。
在流量录制结束后,根据录制的流量数据计算【单条流量平均大小】。同时,将录制的流量数据以文件的方式异步持久化进HDFS中。
在一种可选的实施方式中,在将流量数据以文件的方式存储在分布式文件系统时,需要采用本公开实施例中的将录制得到的所有流量数据进行分割,即将录制的流量数据分割为多个单条流量数据;进而,通过异步持久化操作,将包含所有单条流量数据的流量文件存储在分布式文件系统中。
具体的,在将录制得到的流量数据分割为一个一个的单条流量数据时,可以按照上述计算得到的【单条流量平均大小】,按照该平均值将流量数据分割为一条一条大小相同的流量数据。或者,也可按照每一条流量数据的实际大小进行分割,分割得到的单条流量数据之间可采用分隔符标记。
在本公开实施例中,由于流量数据是二进制字节流,无法如字符流般可天然使用换行符等字符分隔;因此采用size-data-separator存储法,即以【字节数-实际流量数据】作为单条流量数据的完整内容,再用【分隔符】分离。其中,字节数用于表示单条流量数据的大小,实际流量数据用于表示与字节数对应的实际的流量数据。
在一种可选的实施方式中,可以按照预设的字节数对所有目标流量数据进行分割,以及每分割一次,则在本次分割处添加一个分隔符,其中,字节数用于表示一份目标流量数据的大小,即单条流量数据的大小;进而,将每相邻两个分隔符之间的目标流量数据作为一个单条流量数据,以及,将第一个分隔符之前的目标流量数据作为一个单条流量数据,将最后一个分隔符之后的目标流量数据作为一个单条流量数据,以获得多个单条流量数据。
参阅图4所示,其为本公开实施例中的一种文件存储格式的示意图。在本公开实施例中,【字节数】固定占用4字节长度,最大可表示整数2的32次方,即可支持单条数据最大4GB;【实际流量数据】的二进制byte(字节)数组长度就是【字节数】所表示的数字,表示为size,数据拉取时根据此数字可拿到实际流量数据。
例如图4所示,存储在分布式文件系统中的流量文件(持久化文件)一共包含N个单条流量数据,即表示将录制的流量数据分割后,可以得到N个单条流量数据。分别表示为:【单条流量字节数size1-实际流量数据data1】,分隔符,【单条流量字节数size2-实际流量数据data2】,分隔符,…,分隔符,【单条流量字节数sizeN-实际流量数据dataN】。
在本公开实施例中,使用基于size-data-separator存储法的文件持久化方案,存储并区分出海量二进制数据,最大程度降低了海量流量数据的存储成本;数据间的【分隔符】可在读取时快速发现错误数据,但应尽可能短,已减少存储资源浪费。
需要说明的是,除了使用分隔符外,还可使用其他具有相同作用的字符,例如无效字符等进行分隔,在此不做具体限定。
在流量回放压测前,还需要计算得到本公开实施例中的带宽占用参数,依据带宽占用参数确定存储方式,进而获取目标流量数据进行流量回放压测,具体如下:
【单机带宽占用】=【单条流量平均大小】*【单机压力值】;
【总带宽占用】=【单条流量平均大小】*【总压力值】。
仍以上述所列举的短视频客户端场景为例,假设目标为模拟五亿用户,总压力值可以指5亿QPS,单机压力值可以指一个发压机最多可模拟多少用户QPS。在本公开实施例中,单机压力值是会在发压之前提前验证好的。
在本公开实施例中,为保证尽可能少的占用发压机资源,保证单机发压性能稳定,同时防止占用太多redis资源,本公开实施例对【单机带宽占用】和【总带宽占用】进行限制,以便平衡压测前数据准备时间与发压机资源占用两指标。
若【单机带宽占用】<=200MB并且【总带宽占用】<=2GB,则根据数据过期(指存储时长超过预设时长)情况,将文件中流量数据存入redis,发压机直接从redis中读取流量进行发压。
一种可选的实施方式为,存储方式为分布式缓存方式,此时可以按照如图5所示的流程图实施S23和S24,其为本公开实施例中的一种基于分布式缓存进行压力测试的方法示意图,包括以下步骤:
S501:分别根据各个发压机的增量命令,确定各个发压机各自所请求的目标流量数据在第一存储位置中的起止位置;
S502:根据起止位置获取相应位置的目标流量数据,并分别将获取的目标流量数据发送给对应的发压机;
S503:通过各个发压机对各自获取到的目标流量数据进行流量回放,以对待测试服务器进行压力测试。
其中,步骤S501中的发压机是指参与本次压力测试所需的发压机。由发压机从第一存储位置中读取流量数据的方式为:先通过incr命令占用所需流量(即各个发压机各自对应的目标流量数据)的起止位置,再获取相应位置的数据,供发压使用。
在本公开实施例中,基于incr命令的原子性保证,这种方式可以解决分布式流量数据不重复问题。此方式准备时间短,可快速开始回放压测行为。
如图6所示,其为本公开实施例中的一种从第一存储位置中读取流量数据的方法示意图。
在本公开实施例中,发压机通过incr命令占用所需的流量的起止位置,再获取相应位置的目标流量数据,供发压使用。incr命令可以接受并发调用,即各个发压机可以并发调用。如图所示,各个发压机可以通过incr命名分别获取m条数据,以进行发压。具体的,流量内容示例如图所示,表示为:
第一条流量key:service-data-1,value:具体内容;
第二条流量key:service-data-2,value:具体内容;
…
第n条流量key:service-data-n,value:具体内容;
流量总数key:service-data-num,value:n;
其中,key是关键字,表示流量编号;value是值,表示流量数据的具体内容,即实际流量数据。
若【单机带宽占用】>200MB或者【总带宽占用】>2GB,则使用文件拆分方案进行流量切割;此方式将流量文件切分成发压机数量的文件,再将这些文件分别分配给不同的发压机上;发压机读取本地流量文件进行发压。
一种可选的实施方式为,存储方式为分布式文件系统存储方式,此时可以按照如图7所示的流程图实施S23和S24,其为本公开实施例中的基于分布式文件系统进行压力测试的方法示意图,包括以下步骤:
S701:根据需要进行压力测试的发压机的数量,将存储在第二存储位置中的流量数据拆分为多个目标文件;
S702:基于预设分配方式,将多个目标文件分别分配给不同的发压机;
S703:通过各个发压机根据本地目标文件中的目标流量数据进行流量回放,以对待测试服务器进行压力测试。
例如,需要进行压力测试的发压机的数量为3个,则需将持久化文件拆分为3个目标文件。其中,预设分配方式可以指平均分配,即将多个目标文件平均分配给各个发压机,也可基于发压机的带宽占用参数等进行分配,在此不做具体限定;另外,预设分配方式中还可进一步规定流量拆分时的具体方式,例如按照图8所示的方式进行拆分,图8为本公开实施例中的一种文件拆分方法的示意图。具体拆分过程为:
假设N为3的倍数,将持久化文件中的N个单条流量数据按照顺序,一条一条的依次分配给3个目标文件,每个目标文件有N/3个单条流量数据,即可得:
目标文件1包含:【单条流量字节数size1-实际流量数据data1】,【单条流量字节数size4-实际流量数据data4】,…,【单条流量字节数sizeN-2-实际流量数据dataN-2】。
相应的,目标文件2包含:【单条流量字节数size2-实际流量数据data2】,【单条流量字节数size5-实际流量数据data5】,…,【单条流量字节数sizeN-1-实际流量数据dataN-1】。
目标文件3包含:【单条流量字节数size3-实际流量数据data3】,【单条流量字节数size6-实际流量数据data6】,…,【单条流量字节数sizeN-实际流量数据dataN】。
如图8所示,图中的“Size”即表示单条流量字节数,“Data”即表示实际流量数据,“分”即表示分隔符。在拆分得到目标文件之后,即可配送到对应的发压机(可随机配送),进而由发压机读取本地目标文件进行发压。
需要说明的是,除了图8所列举的拆分方式外,还可直接按照顺序将前N/3个单条流量数据划分为目标文件1,将中间N/3个单条流量数据划分为目标文件2,将最后N/3个单条流量数据划分为目标文件3等等。
采用上述实施方式,当流量数据不可平均分配时,也可保证目标文件的大小基本一致。在本公开实施例中,文件分割后,每个文件中包含的流量数据不同,因此自然解决了分布式流量数据不重复问题。此方式准备时间较长,需要在文件拆分并配送完成后再进行回放压测行为。
综上,本公开实施例采用分布式缓存配合文件持久化的方案,可以达到最低的持久化存储成本。同时,通过结合文件拆分与分布式缓存redis读取的数据获取方案,平衡了压测前数据准备时间与资源占用两重要指标,在尽可能得保证了发压机单机性能的基础上,解决流量数据分布式使用不重复问题,并且能够满足精确调整压力需求。
参阅图9所示,其为根据一示例性实施例示出的另一种压力测试方法的流程图,该方法的执行主体为发压机,如图9所示,包括以下步骤:
在步骤S91中,接收针对待测试服务器的流量回放控制指令,流量回放控制指令包括用于进行流量回放的目标流量数据对应的存储方式,存储方式是与发压机对应的带宽占用参数匹配的存储方式,目标流量数据为对指定时间内目标生产服务产生的流量进行流量录制得到的;
在步骤S92中,若存储方式为分布式缓存方式,则接收从分布式缓存方式对应的第一存储位置中,获取所请求的目标流量数据;或者,若存储方式为分布式文件系统存储方式,则从分布式文件系统存储方式对应的第二存储位置中,获取基于预设分配方式选取的目标流量数据;
在步骤S93中,根据接收到的目标流量数据,对待测试服务器进行压力测试。
在本公开实施例中,发压机可以接收压测工具发送的流量回放控制指令,该指令中包括本次压测所对应的存储方式,为分布式缓存方式或分布式文件系统存储方式,进而,根据确定的存储方式对应的存储位置读取流量数据进行流量回放发压。
在一种可选的实施方式中,存储方式为分布式缓存方式,接收从分布式缓存方式对应的第一存储位置中,获取所请求的目标流量数据,包括:
根据增量命令确定目标流量数据在第一存储位置中的起止位置;
将根据起止位置获取的相应位置的目标流量数据,作为所请求的目标流量数据。
需要说明的是,该实施方式的具体实现过程可参考上述实施例,例如图5,图6所示,重复之处不再赘述。
在一种可选的实施方式中,存储方式为分布式文件系统存储方式,从分布式文件系统存储方式对应的第二存储位置中,获取基于预设分配方式选取的目标流量数据,包括:
基于预设分配方式,获取对第二存储位置中的目标流量数据进行拆分得到的目标文件,并存储在本地;
将本地目标文件中的目标流量数据,作为选取的目标流量数据。
需要说明的是,该实施方式的具体实现过程可参考上述实施例,例如图7,图8所示,重复之处不再赘述。
由于本公开实施例对流量数据进行了分布式存储,不需要通过流量抢占的方式发压,并且根据发压机对应的带宽占用参数来分析流量存储方式,进而进行发压,能够满足精确调整压力需求,可以解决分布式流量数据不重复问题,并且尽可能少的占用发压机资源,保证单机高QPS发压能力。
图10是根据一示例性实施例示出的一种压力测试的完整方法流程图,以执行主体为压测工具为例,具体包括以下步骤:
S1001:压测工具对目标生产服务产生的流量进行流量录制,并在流量录制过程中,将录制的流量数据存储在分布式缓存方式对应的第一存储位置中;
S1002:压测工具在流量录制结束后,通过异步持久化操作,将流量数据以文件的方式存储在分布式文件系统存储方式对应的第二存储位置中;
S1003:压测工具根据发压机对应的带宽占用参数,确定用于进行流量回放的目标流量数据对应的存储方式;
其中,若单机带宽占用参数不大于第一带宽阈值,并且总带宽占用参数不大于第二带宽阈值,则确定存储方式为分布式缓存方式,并执行步骤S1004-S1006:
S1004:压测工具分别经由各个发压机确定各自对应的目标流量数据在第一存储位置中的起止位置;
S1005:压测工具根据起止位置获取相应位置的目标流量数据;
S1006:压测工具通过各个发压机对各自获取到的目标流量数据进行流量回放,以对待测试服务器进行压力测试。
其中,若单机带宽占用参数大于第一带宽阈值,或者总带宽占用参数大于第二带宽阈值,则确定存储方式为分布式文件系统存储方式,并执行步骤S1004’-S1006’:
S1004’:压测工具根据需要进行压力测试的发压机的数量,将存储在第二存储位置中的流量数据拆分为多个目标文件;
S1005’:压测工具将多个目标文件分别分配给不同的发压机;
S1006’:压测工具通过各个发压机根据本地目标文件中的目标流量数据进行流量回放,以对待测试服务器进行压力测试。
基于相同的发明构思,本公开实施例还提供一种压力测试装置。参阅图11所示,其是根据一示例性实施例示出的一种压力测试装置1100的框图。
参照图11,该装置包括:
数据存储单元1101,被配置为执行对指定时间内目标生产服务产生的流量进行流量录制,得到目标流量数据,并通过多种存储方式对目标流量数据进行存储;
方式确定单元1102,被配置为执行确定与发压机对应的带宽占用参数匹配的存储方式;
数据分发单元1103,被配置为执行若存储方式为分布式缓存方式,则从分布式缓存方式对应的第一存储位置中,将发压机请求的目标流量数据发送给发压机;或者,若存储方式为分布式文件系统存储方式,则从分布式文件系统存储方式对应的第二存储位置中,将基于预设分配方式选取的目标流量数据发送给发压机;
压力测试单元1104,被配置为执行通过发压机接收到的目标流量数据,对待测试服务器进行压力测试。
在一种可选的实施方式中,带宽占用参数包括单个发压机对应的单机带宽占用参数以及所有发压机对应的总带宽占用参数中的至少一种;方式确定单元1102具体被配置为执行:
若单机带宽占用参数不大于第一带宽阈值,并且总带宽占用参数不大于第二带宽阈值,则确定存储方式为分布式缓存方式,第一带宽阈值小于第二带宽阈值;
若单机带宽占用参数大于第一带宽阈值,或者总带宽占用参数大于第二带宽阈值,则确定存储方式为分布式文件系统存储方式。
在一种可选的实施方式中,数据分发单元1103具体被配置为执行:
分别根据各个发压机的增量命令,确定各个发压机各自所请求的目标流量数据在第一存储位置中的起止位置;
根据起止位置获取相应位置的目标流量数据,并分别将获取的目标流量数据发送给对应的发压机;
压力测试单元1104具体被配置为执行:
通过各个发压机对各自获取到的目标流量数据进行流量回放,以对待测试服务器进行压力测试。
在一种可选的实施方式中,数据分发单元1103具体被配置为执行:
根据需要进行压力测试的发压机的数量,将存储在第二存储位置中的流量数据拆分为多个目标文件;
基于预设分配方式,将多个目标文件分别分配给不同的发压机;
压力测试单元1104具体被配置为执行:
通过各个发压机根据本地目标文件中的目标流量数据进行流量回放,以对待测试服务器进行压力测试。
在一种可选的实施方式中,数据存储单元1101具体被配置为执行:
将目标流量数据存储在分布式缓存方式对应的第一存储位置中,以及,通过异步持久化操作,将目标流量数据以文件的方式存储在分布式文件系统存储方式对应的第二存储位置中。
在一种可选的实施方式中,数据存储单元1101具体被配置为执行:
将目标流量数据分割为多个单条流量数据;
通过异步持久化操作,将包含所有单条流量数据的流量文件存储在第二存储位置中。
在一种可选的实施方式中,数据存储单元1101具体被配置为执行:
按照预设的字节数对所有目标流量数据进行分割,以及每分割一次,则在本次分割处添加一个分隔符,其中,字节数用于表示一份目标流量数据的大小;
将每相邻两个分隔符之间的目标流量数据作为一个单条流量数据,以及,将第一个分隔符之前的目标流量数据作为一个单条流量数据,将最后一个分隔符之后的目标流量数据作为一个单条流量数据,以获得多个单条流量数据。
在一种可选的实施方式中,装置还包括:
删除单元1105,被配置为执行删除分布式缓存方式对应的第一存储位置中,存储时长达到预设时长的目标流量数据。
基于相同的发明构思,本公开实施例还提供一种压力测试装置。参阅图12所示,其是根据一示例性实施例示出的一种压力测试装置1200的框图。参照图12,该装置包括接收单元1201,获取单元1202和压力测试单元1203。
接收单元1201,被配置为执行接收针对待测试服务器的流量回放控制指令,流量回放控制指令包括用于进行流量回放的目标流量数据对应的存储方式,存储方式是与发压机对应的带宽占用参数匹配的存储方式,目标流量数据为对指定时间内目标生产服务产生的流量进行流量录制得到的;
获取单元1202,被配置为执行若存储方式为分布式缓存方式,则接收从分布式缓存方式对应的第一存储位置中,获取所请求的目标流量数据;或者,若存储方式为分布式文件系统存储方式,则从分布式文件系统存储方式对应的第二存储位置中,获取基于预设分配方式选取的目标流量数据;
压力测试单元1203,被配置为执行根据接收到的目标流量数据,对待测试服务器进行压力测试。
在一种可选的实施方式中,获取单元1202具体被配置为执行:
根据增量命令确定目标流量数据在第一存储位置中的起止位置;将根据起止位置获取的相应位置的目标流量数据,作为所请求的目标流量数据。
在一种可选的实施方式中,存储方式为分布式文件系统,获取单元1202具体被配置为执行:
基于预设分配方式,获取对第二存储位置中的目标流量数据进行拆分得到的目标文件,并存储在本地;将本地目标文件中的目标流量数据,作为选取的目标流量数据。
由于本公开实施例对流量数据进行了分布式存储,不需要通过流量抢占的方式发压,并且根据发压机对应的带宽占用参数来分析流量存储方式,进而进行发压,能够满足精确调整压力需求,可以解决分布式流量数据不重复问题,并且尽可能少的占用发压机资源,保证单机高QPS发压能力。
关于上述实施例中的装置,其中各个单元执行请求的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
与上述方法实施例基于同一发明构思,本公开实施例中还提供了一种电子设备。在一种实施例中,该电子设备可以是服务器。在该实施例中,电子设备的结构可以如图13所示,包括存储器1301,通讯模块1303以及一个或多个处理器1302。
存储器1301,用于存储处理器1302执行的计算机程序。存储器1301可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器1301可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1301也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器1301是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1301可以是上述存储器的组合。
处理器1302,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器1302,用于调用存储器1301中存储的计算机程序时实现上述任意一种压力测试方法。
通讯模块1303用于与终端设备和其他服务器进行通信。
本公开实施例中不限定上述存储器1301、通讯模块1303和处理器1302之间的具体连接介质。本公开实施例在图13中以存储器1301和处理器1302之间通过总线1304连接,总线1304在图13中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1304可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1301中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本公开实施例的压力测试方法。处理器1302用于执行上述的压力测试方法,如图2或图9所示。
本公开实施例还提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行实现本公开实施例上述任意一项压力测试方法或任意一项压力测试方法任一可能涉及的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由上面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (22)
1.一种压力测试方法,其特征在于,包括:
对指定时间内目标生产服务产生的流量进行流量录制,得到目标流量数据,并通过多种存储方式对所述目标流量数据进行存储,所述多种存储方式包括分布式缓存方式、分布式文件系统存储方式;
确定与发压机对应的带宽占用参数匹配的存储方式;
若所述存储方式为分布式缓存方式,则从所述分布式缓存方式对应的第一存储位置中,将所述发压机请求的所述目标流量数据发送给所述发压机;或者,若所述存储方式为分布式文件系统存储方式,则从所述分布式文件系统存储方式对应的第二存储位置中,将基于预设分配方式选取的所述目标流量数据发送给所述发压机;
通过所述发压机接收到的所述目标流量数据,对待测试服务器进行压力测试;
其中,所述带宽占用参数包括单个发压机对应的单机带宽占用参数以及所有发压机对应的总带宽占用参数中的至少一种;所述确定与发压机对应的带宽占用参数匹配的存储方式,包括:
若所述单机带宽占用参数不大于第一带宽阈值,并且所述总带宽占用参数不大于第二带宽阈值,则确定所述存储方式为所述分布式缓存方式,所述第一带宽阈值小于所述第二带宽阈值;
若所述单机带宽占用参数大于第一带宽阈值,或者所述总带宽占用参数大于第二带宽阈值,则确定所述存储方式为所述分布式文件系统存储方式。
2.如权利要求1所述的方法,其特征在于,所述从所述分布式缓存方式对应的第一存储位置中,将所述发压机请求的所述目标流量数据发送给所述发压机,包括:
分别根据各个所述发压机的增量命令,确定各个所述发压机各自所请求的目标流量数据在所述第一存储位置中的起止位置;
根据所述起止位置获取相应位置的目标流量数据,并分别将获取的所述目标流量数据发送给对应的发压机;
所述通过所述发压机接收到的所述目标流量数据,对所述待测试服务器进行压力测试,包括:
通过各个所述发压机对各自获取到的目标流量数据进行流量回放,以对所述待测试服务器进行压力测试。
3.如权利要求1所述的方法,其特征在于,所述从所述分布式文件系统存储方式对应的第二存储位置中,将基于预设分配方式选取的所述目标流量数据发送给所述发压机,包括:
根据需要进行压力测试的发压机的数量,将存储在所述第二存储位置中的目标流量数据拆分为多个目标文件;
基于所述预设分配方式,将多个所述目标文件分别分配给不同的发压机;
所述通过所述发压机接收到的所述目标流量数据,对所述待测试服务器进行压力测试,包括:
通过各个所述发压机根据本地目标文件中的目标流量数据进行流量回放,以对所述待测试服务器进行压力测试。
4.如权利要求1所述的方法,其特征在于,所述通过多种存储方式对所述目标流量数据进行存储,包括:
将所述目标流量数据存储在所述分布式缓存方式对应的第一存储位置中,以及,通过异步持久化操作,将所述目标流量数据以文件的方式存储在所述分布式文件系统存储方式对应的第二存储位置中。
5.如权利要求4所述的方法,其特征在于,所述通过异步持久化操作,将所述目标流量数据以文件的方式存储在分布式文件系统存储方式对应的第二存储位置中,包括:
将所述目标流量数据分割为多个单条流量数据;
通过异步持久化操作,将包含所有单条流量数据的流量文件存储在所述第二存储位置中。
6.如权利要求5所述的方法,其特征在于,所述将所述目标流量数据分割为多个单条流量数据,包括:
按照预设的字节数对所有目标流量数据进行分割,以及每分割一次,则在本次分割处添加一个分隔符,其中,所述字节数用于表示一份目标流量数据的大小;
将每相邻两个分隔符之间的目标流量数据作为一个单条流量数据,以及,将第一个分隔符之前的目标流量数据作为一个单条流量数据,将最后一个分隔符之后的目标流量数据作为一个单条流量数据,以获得所述多个单条流量数据。
7.如权利要求1~6任一项所述的方法,其特征在于,所述方法还包括:
删除所述分布式缓存方式对应的第一存储位置中,存储时长达到预设时长的目标流量数据。
8.一种压力测试方法,其特征在于,包括:
接收针对待测试服务器的流量回放控制指令,所述流量回放控制指令包括用于进行流量回放的目标流量数据对应的存储方式,所述存储方式是与发压机对应的带宽占用参数匹配的存储方式,所述目标流量数据为对指定时间内目标生产服务产生的流量进行流量录制得到的,所述存储方式为分布式缓存方式或分布式文件系统存储方式;
若所述存储方式为分布式缓存方式,则接收从所述分布式缓存方式对应的第一存储位置中,获取的所请求的所述目标流量数据;或者,若所述存储方式为分布式文件系统存储方式,则从所述分布式文件系统存储方式对应的第二存储位置中,获取基于预设分配方式选取的所述目标流量数据;
根据接收到的所述目标流量数据,对所述待测试服务器进行压力测试。
9.如权利要求8所述的方法,其特征在于,所述接收从所述分布式缓存方式对应的第一存储位置中,获取的所请求的所述目标流量数据,包括:
根据增量命令确定所述目标流量数据在所述第一存储位置中的起止位置;
将根据所述起止位置获取的相应位置的目标流量数据,作为所请求的所述目标流量数据。
10.如权利要求8所述的方法,其特征在于,所述从所述分布式文件系统存储方式对应的第二存储位置中,获取基于预设分配方式选取的所述目标流量数据,包括:
基于所述预设分配方式,获取对所述第二存储位置中的目标流量数据进行拆分得到的目标文件,并存储在本地;
将本地目标文件中的目标流量数据,作为选取的所述目标流量数据。
11.一种压力测试装置,其特征在于,包括:
数据存储单元,被配置为执行对指定时间内目标生产服务产生的流量进行流量录制,得到目标流量数据,并通过多种存储方式对所述目标流量数据进行存储,所述多种存储方式包括分布式缓存方式、分布式文件系统存储方式;
方式确定单元,被配置为执行确定与发压机对应的带宽占用参数匹配的存储方式;
数据分发单元,被配置为执行若所述存储方式为分布式缓存方式,则从所述分布式缓存方式对应的第一存储位置中,将所述发压机请求的所述目标流量数据发送给所述发压机;或者,若所述存储方式为分布式文件系统存储方式,则从所述分布式文件系统存储方式对应的第二存储位置中,将基于预设分配方式选取的所述目标流量数据发送给所述发压机;
压力测试单元,被配置为执行通过所述发压机接收到的所述目标流量数据,对待测试服务器进行压力测试;
其中,所述带宽占用参数包括单个发压机对应的单机带宽占用参数以及所有发压机对应的总带宽占用参数中的至少一种;所述方式确定单元具体被配置为执行:
若所述单机带宽占用参数不大于第一带宽阈值,并且所述总带宽占用参数不大于第二带宽阈值,则确定所述存储方式为所述分布式缓存方式,所述第一带宽阈值小于所述第二带宽阈值;
若所述单机带宽占用参数大于第一带宽阈值,或者所述总带宽占用参数大于第二带宽阈值,则确定所述存储方式为所述分布式文件系统存储方式。
12.如权利要求11所述的装置,其特征在于,所述数据分发单元具体被配置为执行:
分别根据各个所述发压机的增量命令,确定各个所述发压机各自所请求的目标流量数据在所述第一存储位置中的起止位置;
根据所述起止位置获取相应位置的目标流量数据,并分别将获取的所述目标流量数据发送给对应的发压机;
所述压力测试单元具体被配置为执行:
通过各个所述发压机对各自获取到的目标流量数据进行流量回放,以对所述待测试服务器进行压力测试。
13.如权利要求11所述的装置,其特征在于,所述数据分发单元具体被配置为执行:
根据需要进行压力测试的发压机的数量,将存储在所述第二存储位置中的流量数据拆分为多个目标文件;
基于所述预设分配方式,将多个所述目标文件分别分配给不同的发压机;
所述压力测试单元具体被配置为执行:
通过各个所述发压机根据本地目标文件中的目标流量数据进行流量回放,以对所述待测试服务器进行压力测试。
14.如权利要求11所述的装置,其特征在于,所述数据存储单元具体被配置为执行:
将所述目标流量数据存储在所述分布式缓存方式对应的第一存储位置中,以及,通过异步持久化操作,将所述目标流量数据以文件的方式存储在所述分布式文件系统存储方式对应的第二存储位置中。
15.如权利要求14所述的装置,其特征在于,所述数据存储单元具体被配置为执行:
将所述目标流量数据分割为多个单条流量数据;
通过异步持久化操作,将包含所有单条流量数据的流量文件存储在所述第二存储位置中。
16.如权利要求15所述的装置,其特征在于,所述数据存储单元具体被配置为执行:
按照预设的字节数对所有目标流量数据进行分割,以及每分割一次,则在本次分割处添加一个分隔符,其中,所述字节数用于表示一份目标流量数据的大小;
将每相邻两个分隔符之间的目标流量数据作为一个单条流量数据,以及,将第一个分隔符之前的目标流量数据作为一个单条流量数据,将最后一个分隔符之后的目标流量数据作为一个单条流量数据,以获得所述多个单条流量数据。
17.如权利要求11~16任一项所述的装置,其特征在于,所述装置还包括:
删除单元,被配置为执行删除所述分布式缓存方式对应的第一存储位置中,存储时长达到预设时长的目标流量数据。
18.一种压力测试装置,其特征在于,该装置包括:
接收单元,被配置为执行接收针对待测试服务器的流量回放控制指令,所述流量回放控制指令包括用于进行流量回放的目标流量数据对应的存储方式,所述存储方式是与发压机对应的带宽占用参数匹配的存储方式,所述目标流量数据为对指定时间内目标生产服务产生的流量进行流量录制得到的,所述存储方式为分布式缓存方式或分布式文件系统存储方式;
获取单元,被配置为执行若所述存储方式为分布式缓存方式,则接收从所述分布式缓存方式对应的第一存储位置中,获取的所请求的所述目标流量数据;或者,若所述存储方式为分布式文件系统存储方式,则从所述分布式文件系统存储方式对应的第二存储位置中,获取基于预设分配方式选取的所述目标流量数据;
压力测试单元,被配置为执行根据接收到的所述目标流量数据,对所述待测试服务器进行压力测试。
19.如权利要求18所述的装置,其特征在于,所述获取单元具体被配置为执行:
根据增量命令确定所述目标流量数据在所述第一存储位置中的起止位置;
将根据所述起止位置获取的相应位置的目标流量数据,作为所请求的所述目标流量数据。
20.如权利要求18所述的装置,其特征在于,所述存储方式为分布式文件系统,所述获取单元具体被配置为执行:
基于所述预设分配方式,获取对所述第二存储位置中的目标流量数据进行拆分得到的目标文件,并存储在本地;
将本地目标文件中的目标流量数据,作为选取的所述目标流量数据。
21.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至权利要求7中任一项所述方法的步骤或权利要求8至权利要求10中任一项所述方法的步骤。
22.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至权利要求7中任一项所述方法的步骤或权利要求8至权利要求10中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110874888.1A CN113595829B (zh) | 2021-07-30 | 2021-07-30 | 压力测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110874888.1A CN113595829B (zh) | 2021-07-30 | 2021-07-30 | 压力测试方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113595829A CN113595829A (zh) | 2021-11-02 |
CN113595829B true CN113595829B (zh) | 2022-10-11 |
Family
ID=78253135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110874888.1A Active CN113595829B (zh) | 2021-07-30 | 2021-07-30 | 压力测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113595829B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704375A (zh) * | 2016-08-09 | 2018-02-16 | 厦门雅迅网络股份有限公司 | 一种录制和回放网络端口上行数据的系统和方法 |
CN109726094A (zh) * | 2017-10-27 | 2019-05-07 | 北京京东尚科信息技术有限公司 | 压力测试的方法和装置 |
CN110083543B (zh) * | 2019-05-07 | 2022-08-19 | 江苏满运软件科技有限公司 | 回归测试方法、装置、电子设备及存储介质 |
CN111464615B (zh) * | 2020-03-30 | 2023-06-20 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、服务器及存储介质 |
CN112187589B (zh) * | 2020-11-10 | 2022-08-12 | 珠海市新德汇信息技术有限公司 | 基于流量回放的系统测试方法 |
CN113076251A (zh) * | 2021-04-16 | 2021-07-06 | 北京京东拓先科技有限公司 | 测试方法和装置 |
-
2021
- 2021-07-30 CN CN202110874888.1A patent/CN113595829B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113595829A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947668B (zh) | 存储数据的方法和装置 | |
US11296940B2 (en) | Centralized configuration data in a distributed file system | |
CN111124850A (zh) | Mqtt服务器性能测试方法、系统、计算机设备及存储介质 | |
CN106446168B (zh) | 一种面向分布式数据仓库的加载客户端实现方法 | |
US20160140141A1 (en) | File lookup in a distributed file system | |
CN113806300B (zh) | 数据存储方法、系统、装置、设备及存储介质 | |
CN102255866A (zh) | 一种数据下载方法及装置 | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
CN112148693A (zh) | 一种数据处理方法、装置及存储介质 | |
CN105630683A (zh) | 一种云测试体系架构 | |
CN112685499A (zh) | 一种工作业务流的流程数据同步方法、装置及设备 | |
CN113687964A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
US11157456B2 (en) | Replication of data in a distributed file system using an arbiter | |
CN116304390A (zh) | 时序数据处理方法、装置、存储介质及电子设备 | |
CN113422808B (zh) | 物联网平台http信息推送方法、系统、装置及介质 | |
CN113595829B (zh) | 压力测试方法、装置、电子设备及存储介质 | |
CN114490526B (zh) | 选课索引文件更新方法、课程搜索方法及装置 | |
CN115238006A (zh) | 检索数据同步方法、装置、设备及计算机存储介质 | |
CN115293365A (zh) | 机器学习模型的管理方法、装置、管理平台和存储介质 | |
CN111221857B (zh) | 从分布式系统中读数据记录的方法和装置 | |
CN115373831A (zh) | 数据处理方法、装置以及计算机可读存储介质 | |
CN115114316A (zh) | 一种高并发数据的处理方法、装置、集群和存储介质 | |
CN114817344A (zh) | 一种数据获取方法和装置 | |
CN111159004A (zh) | 一种Hadoop集群仿真测试方法、装置及存储介质 | |
CN117573730B (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 |