一种互联网系统的压力测试系统和方法与流程

文档序号:13763201阅读:288来源:国知局
一种互联网系统的压力测试系统和方法与流程

本发明涉及一种系统的压力测试系统和方法,尤其涉及一种互联网系统的压力测试系统和方法。



背景技术:

与传统的应用系统不同,互联网应用系统需要承载的请求和流量都是海量。此外,互联网应用系统也会经常进行营销活动,在活动期间会给互联网应用系统带来短时间大量的访问请求。因此,在互联网应用系统进行营销活动前,通常需要对互联网应用系统进行压力测试,以确认互联网应用系统的负载能力是否能够承受营销活动带来的流量压力。

传统的压力测试方法通常采用jmeter、LoadRunner等工具,此类工具的工作原理是通过发送大量模拟的请求到互联网应用系统,再通过观察互联网应用系统的响应情况作出对互联网应用系统负载能力的评估。

对于简单的互联网应用系统,传统的压力测试方法能够满足基本的压力测试要求。然而由于传统的压力测试方法使用的模拟的请求并非真实的用户行为,对于一个大型的、分布式的、多链路的互联网应用系统,传统的压力测试方法使用的模拟的请求与真实的用户行为之间存在较大差别,因此对该类互联网应用系统使用传统的压力测试方法得出的测试结果并不能反映被测系统真实的负载能力。



技术实现要素:

本发明的目的之一是提供一种互联网系统的压力测试系统,使用该压力测试系统测试互联网系统,尤其是大型的、分布式的、多链路的互联网应用系统的压力时,得出的测试结果能反映被测系统的真实的负载能力。

根据上述目的,本发明提出了一种互联网系统的压力测试系统,其包括:

待测试的应用系统,其部署在第一主机上;

待测试的应用系统的镜像系统,其部署在第二主机上;

流量采集模块,其设置于第一主机上,以采集第一主机在待测试的应用系统的工作状态下的网络请求;

流量存储模块,其与流量采集模块数据连接,以存储流量采集模块采集的网络请求;

流量发送模块,其与流量存储模块和第二主机分别数据连接,所述流量发送模块读取流量存储模块中的网络请求,并将该网络请求发送至所述镜像系统;

监控模块,其监测镜像系统的运行状态。

本发明中所述的压力是指访问流量。

本发明的构思主要是:为了测试结果能反映被测系统真实的负载能力,需要采用能体现真实的用户行为的网络请求进行测试。进一步考虑,采用待测试的应用系统的工作状态下的网络请求,自然能体现真实的用户行为。此外,为了不影响待测试的应用系统的正常工作,发明人考虑另外部署一个待测试的应用系统的镜像系统专门用于测试。由于待测试的应用系统的镜像系统是待测试的应用系统的镜像,在待测试的应用系统的镜像系统上的测试结果可以代表待测试的应用系统的测试结果。

本发明所述的互联网系统的压力测试系统,其用于测试互联网系统,尤其是大型的、分布式的、多链路的互联网应用系统的压力时,通过流量采集模块采集第一主机在待测试的应用系统的工作状态下的网络请求,通过流量存储模块存储流量采集模块采集的网络请求,通过流量发送模块读取存储的网络请求,并将该网络请求发送至所述镜像系统,最后通过监控模块监测镜像系统在接收所述网络请求状态下的运行状态,从而实现对待测试的应用系统的镜像系统的压力测试,得出的测试结果即能反映待测试的应用系统的真实的负载能力。其中,测试结果基于监控模块监测的镜像系统的运行状态描述,可以包括运行性能指标。

本发明所述的互联网系统的压力测试系统中,所述系统和模块可以为软件系统和模块,其通过运行在相应的硬件设备上实现其功能。待测试的应用系统可以是部署在第一主机上的一个web应用。待测试的应用系统的镜像系统即待测试的应用系统的复制品。不过需要说明的是,该复制品在某些情况下达到基本相同也是被允许的,例如复制品除了不对外提供服务之外,其余相同。流量采集模块可以采用类似unix环境下的tcpdump程序实现,当前类似的工具包括tcpcopy、gor。流量存储模块可以以数据库或系统文件的方式实现,其运行的硬件上需要具有用于存储所述网络请求的存储介质。流量发送模块的构造在各种编程语言中都有对应的库可供使用。

本发明所述的互联网系统的压力测试系统可用于互联网保险业务场景。

进一步地,本发明所述的压力测试系统中,所述流量采集模块被构造为对第一主机上的所有网络请求进行监听。

上述方案中,可采用工具gor构造流量采集模块,以实现监听功能。

进一步地,本发明所述的压力测试系统中,所述流量存储模块内存储的网络请求被构造为数据库。

进一步地,本发明所述的压力测试系统中,所述流量存储模块内存储的网络请求被构造为系统文件。

进一步地,本发明所述的压力测试系统中,所述流量发送模块将其读取的每一个网络请求都发送数次至所述镜像系统。

上述方案中,通过发送数次读取的每一个网络请求可使得压力增加至单次时的数倍,其中数倍的倍数和数次的次数相同。此外,发送速度也可以按需调整,以满足不同的测试需求。

本发明的另一目的是提供一种互联网系统的压力测试方法,使用该压力测试方法测试互联网系统,尤其是大型的、分布式的、多链路的互联网应用系统的压力时,得出的测试结果能反映被测系统的真实的负载能力。

基于上述发明目的,本发明还提供了一种互联网系统的压力测试方法,其包括步骤:

将待测试的应用系统部署在第一主机上;

待测试的应用系统的镜像系统部署在第二主机上;

采集并存储第一主机在待测试的应用系统的工作状态下的网络请求;

读取存储的网络请求,并将该网络请求发送至所述镜像系统;

监测镜像系统在接收所述网络请求状态下的运行状态。

本发明所述的互联网系统的压力测试方法,其用于测试互联网系统,尤其是大型的、分布式的、多链路的互联网应用系统的压力时,通过上述步骤实现对待测试的应用系统的镜像系统的压力测试,得出的测试结果即能反映待测试的应用系统的真实的负载能力。其中,测试结果基于监测的镜像系统的运行状态描述,可以包括运行性能指标。

进一步地,本发明所述的压力测试方法还包括对第一主机上的所有网络请求进行监听。

进一步地,本发明所述的压力测试方法中,存储的网络请求被构造为数据库。

进一步地,本发明所述的压力测试方法中,存储的网络请求被构造为系统文件。

进一步地,本发明所述的压力测试方法中,被读取的每一个网络请求都被发送数次至所述镜像系统。

上述方案中,通过发送数次读取的每一个网络请求可使得压力增加至单次时的数倍,其中数倍的倍数和数次的次数相同。此外,发送速度也可以按需调整,以满足不同的测试需求。

本发明所述的互联网系统的压力测试系统,其与现有技术相比具有以下优点:

(1)压力测试所采用的网络请求是来自用户的真实的网络请求,并非模拟的网络请求,其体现真实的用户行为,因此得到的测试结果更为准确。

(2)不影响待测试的应用系统的正常使用。

(3)不仅可以用于单机系统,也可以用于分布式系统。

(4)调整测试压力非常方便。

(5)准备工作简单,部署一次即可重复使用。

本发明所述的互联网系统的压力测试方法,其同样具有上述优点。

附图说明

图1为本发明所述的互联网系统的压力测试系统在一种实施方式下的结构示意图。

图2为本发明所述的互联网系统的压力测试系统在一种实施方式下的工作流程示意图。

图3为本发明所述的互联网系统的压力测试方法在一种实施方式下的流程示意图。

具体实施方式

下面将结合说明书附图和具体的实施例来对本发明所述的互联网系统的压力测试系统和方法进行进一步地详细说明,但是该详细说明不构成对本发明的限制。

以下实施方式中的互联网系统的压力测试系统和模块可以为软件系统和模块,其通过运行在相应的硬件设备上实现其功能。以下实施方式可用于互联网保险业务场景。

图1显示了本发明所述的互联网系统的压力测试系统在一种实施方式下的结构。如图1所示,该互联网系统的压力测试系统包括:待测试的应用系统1,其部署在第一主机host-1上;待测试的应用系统1的镜像系统2,其部署在第二主机host-2上;流量采集模块3,其设置于第一主机host-1上,以采集第一主机host-1在待测试的应用系统1的工作状态下的网络请求A;流量存储模块4,其与流量采集模块3数据连接,以存储流量采集模块3采集的网络请求A;流量发送模块5,其与流量存储模块4和第二主机host-2分别数据连接,流量发送模块5读取流量存储模块4中的网络请求A,并将该网络请求A发送至镜像系统2;监控模块6,其部署在第二主机host-2上,监测镜像系统2的运行状态。

在某些实施方式下,流量采集模块3被构造为对第一主机host-1上的所有网络请求A进行监听。

在某些实施方式下,流量存储模块4内存储的网络请求A被构造为数据库。

在某些实施方式下,流量存储模块4内存储的网络请求A被构造为系统文件。

在某些实施方式下,流量发送模块5将其读取的每一个网络请求A都发送数次至镜像系统2。此外,发送速度也可以按需调整,以满足不同的测试需求。

此外,待测试的应用系统1可以是一个web应用。待测试的应用系统1的镜像系统2即待测试的应用系统1的复制品,将该待测试的应用系统1(可以是一个web应用的代码)完整地部署到第二主机host-2上,即可完成镜像系统2的部署。流量采集模块3可以采用类似unix环境下的tcpdump程序实现,当前类似的工具包括tcpcopy、gor,其中,采用gor实现可以监听并复制第一主机host-1上的网络请求A。流量存储模块4可以以数据库或系统文件的方式实现,其运行的硬件上需要具有用于存储所述网络请求A的存储介质。流量发送模块5的构造在各种编程语言中都有对应的库可供使用,具体地,可以使用Java语言的httpclient库。

图2显示了本发明所述的互联网系统的压力测试系统在一种实施方式下的工作流程。该系统中,采用gor构造流量采集模块3;流量存储模块4以数据库的方式实现;使用Java语言的httpclient库构造流量发送模块5。如图2所示,该互联网系统的压力测试系统的工作流程包括步骤:

步骤110:通过流量采集模块3监听、复制并暂存第一主机host-1在待测试的应用系统1的工作状态下的网络请求A。此时该网络请求A不受影响,仍然由待测试的应用系统1提供服务。

步骤120:通过流量存储模块4存储流量采集模块3采集的网络请求A。

步骤130:通过流量发送模块5读取存储的网络请求A,并将该网络请求A发送至镜像系统2。其中,流量发送模块5将其读取的每一个网络请求A都发送10次至镜像系统2。

步骤140:通过监控模块6监测镜像系统2在接收网络请求A状态下的运行状态,获取其运行性能指标,该性能指标即为待测试的应用系统1在受到10倍于当前访问流量时的性能指标。

图3显示了本发明所述的互联网系统的压力测试方法在一种实施方式下的流程。如图3所示,该互联网系统的压力测试方法包括步骤:将待测试的应用系统部署在第一主机上;待测试的应用系统的镜像系统部署在第二主机上;采集并存储第一主机在待测试的应用系统的工作状态下的网络请求;读取存储的网络请求,并将该网络请求发送至所述镜像系统;监测镜像系统在接收所述网络请求状态下的运行状态。

在某些实施方式下,还包括对第一主机上的所有网络请求进行监听。

在某些实施方式下,存储的网络请求被构造为数据库。

在某些实施方式下,存储的网络请求被构造为系统文件。

在某些实施方式下,被读取的每一个网络请求都被发送数次至所述镜像系统。

需要注意的是,以上列举的仅为本发明的具体实施例,显然本发明不限于以上实施例,随之有着许多的类似变化。本领域的技术人员如果从本发明公开的内容直接导出或联想到的所有变形,均应属于本发明的保护范围。

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