一种简单快捷自动的Web服务器压力测试方法

文档序号:7747067阅读:220来源:国知局
专利名称:一种简单快捷自动的Web服务器压力测试方法
技术领域
本发明涉及一种针对Web服务器的压力测试方法
背景技术
随着计算机技术、网络技术近二十年来突飞猛进地发展,互联网以其使用方便快 捷、费用低廉、包含信息量巨大等诸多优点,成为人们生活着不可或缺的重要工具。互联网 在信息提供方面的重要性越来越为人们所重视,许多个人以及企业、团体、组织等单位纷纷 创办自己的网站。网站是一个通过互联网提供信息的服务。网站的一大功用是向外界提供、发布信 息,人们通过浏览网站获得信息(虽然,当前技术条件下,基于Web的应用已经远远不止是 浏览网页,但是通过浏览方式获取信息依然是主要部分)。除了信息内容本身的质量以外,美观的版面和稳定的服务质量是网站运营者向用 户提供优质服务的基础。美观的版面可以聘请优秀的设计师进行设计,用肉眼可以很直观 的看出来;而稳定的服务质量必须通过一系列科学有效的测试进行测定和保障。众所周知,一个网站访问的人数越多,速度便会越慢。当有多少用户访问网站获取 信息的时候,网站响应的速度会慢到令用户无法忍受的程度,是网站运营者关注的焦点,因 为这关系到网站投资建设时购置设备的预算、运行的成本和后期效益等诸多因素。对Web服务器进行压力测试是了解网站性能的一个重要途径,通过模拟大量用户 对网站进行访问,可以在实验室条件中,了解到服务器在收到大量请求后的性能表现,从而 评估一个网站在实际运行时能接受的最大访问人数,为网站的建设者、运营者、管理者提供 科学有效的数字依据。现有的Web服务器的压力测试工具,主要代表有惠普公司的LoadRurmer,微软公 司的 Web ApplicationStress Tool (以下简称 WAS)和 Apache 社区的 ab。LoadRurmer和WAS都是使用预先录制的包含真人访问的行为的脚本,然后通过计 算机模拟大量用户重现所录制的内容。其优点在于重放真人的访问过程,能得到最真实的 网站性能情况。而缺点是录制真人访问行为脚本的准备工作是一项非常需要技术的工作, 需要通过大量的调研和访谈了解真正的用户将会如何访问该网站,获得可靠数据。WAS是一 个简单免费的测试工具,而LoadRurmer虽然功能非常强大,但是价格也非常昂贵。ab是Apache配套的一个功能非常简单的小型的测试工具,只能向一个指定的页 面发起指定数量的请求。

发明内容
本发明将提供一种新型的简单快捷自动的Web服务器压力测试方案,使得中小型 网站的创建者、运营者、维护者和管理者可以获得一种快速廉价的测试工具。测试人员只需 要进行少量的配置,通过本发明所述的方法,可以快速的得到一个近似的测试数据。测试的 过程由程序自动完成,不需要进行前期的调研工作。施加压力的过程与真实用户访问所产生的压力相近,测试数据具有较高的实用价值。简要思路(1) 一个网站上会有很多资源(包括但不限于HTML页面、图像、CSS代码、 JavaScript脚本、声音、文档等文件,下同),他们可以视作一个图的节点。HTML页面中会包 含有超链接,可以指向任何一个资源,超链接视为图的弧。用户访问网站的过程,就是沿着 这些弧在途中各个节点中移动的过程;(2)如果网站中,指向一个资源的超链接的个数越多,则可以视为这个资源对于这 个网站越重要,用户访问网站时请求这个资源的可能性也就越大,对于这个资源请求的次 数也就越多(同Google的PageRank的原理相似)。通过统计指向这个资源的超链接的个 数,我们可以将这个数字设定为该资源(节点)的一个权值。(3)测试过程中,根据所设定的权值,对资源发起请求。权值越大,单位时间内对该 资源的请求次数越多。通过这种方法,近似的模拟真实用户访问网站。(4)记录被测服务器对每一次请求响应的时间,这组数据为本测试方法的结果。本发明的优点是本发明与已有产品相比,新颖之处在于,不需要录制脚本,通过对网站资源的统 计,自动产生一个近似于真实用户的访问过程,对Web服务器施加压力。


附图所绘为具体实施方式
中准备阶段所完成的工作。
具体实施例方式对本发明的实施作如下详述需要使用到的机器设备包括被测服务器(即运行Web服务的服务器,不限于是一 台机器,也可以是提供完整Web服务的一套装置)和测试机器(即运行测试程序的机器,不 限于是一台机器,也可以是多台机器同时参与),以及将被测服务器和测试机器连接在一起 的网络线缆和交换设备。为了使得网络带宽不会成为瓶颈影响测试数据的准确性,被测服务器和测试机器 应当处于同一个局域网中,并采用高速交换设备和优质线缆。测试过程分为准备阶段和测试阶段。准备阶段使用一个网页爬虫程序搜索网站,建立一个网站内所有资源的列表,如 附图1所示,具体步骤如下(1)建立一个以资源的URL为键值的哈希表(称为网站资源列表),记载网站中各 资源的URL、出现的频数、内容类型、父节点的URL等信息,建立一个待抓取资源队列;(2)测试者设定一个最大抓取资源数(N_),被测网站资源判定规则(规则类型为 正则表达式)和起点页面URL,并启动程序开始抓取;(3)将起点页面的URL在网站资源列表中登记,并推入待抓取资源队列中;(4)从待抓取资源队列中取出一个资源的URL,并把该URL所对应的资源下载下 来;(5)根据HTTP响应的ContentType字段,判断该资源的类型,并在网站资源列表中登记该资源的类型,若该资源类型为“text/html,,类型,则进行步骤(6),否则,跳至步骤 (9);(6)扫描HTML代码中包含的所有资源的URL,包括但不限于图像、声音、视频、CSS 代码、JavaScript脚本、程序、文档等类型文件;(7)对于每一个扫描到的URL,使用被测网站资源判定规则进行判定,若该URL为 被测网站的资源,则进行步骤(8),否则不做任何处理,跳至步骤(9);(8)对于指向被测网站资源的URL,若该URL曾经出现过,则将该URL的出现频数 加一;否则,建立一条新纪录保存该资源信息,该资源的频数记为一,并把该资源的URL送 入待抓取资源队列中等待抓取;(9)如果待抓取资源队列为空,或者网站资源数据库中记载的资源总数超过N_, 则终止抓取行为,否则,跳回步骤(4)循环执行。注为了提高抓取的速度,会采用多个线程抓取,上述步骤(4)至(9)描述的是其 中一个线程的行为,工作的线程数量由测试者指定。测试阶段将向网站资源列表中的资源不断的发出请求,从而对被测服务器施加压 力,具体步骤如下(1)设定一个压力值和持续时间,压力值的含义为每秒对被测网站资源发出的请 求总数,持续时间的含义为测试工作持续的时间;(2)生成一个测试时将要使用的测试资源队列,包含测试时将要发起请求的资源 的URL,队列中任意一个资源的URL出现的概率等于在网站资源数据库中的频率(该资源出 现的频数除以所有资源的频数之和);(3)测试程序根据设定的压力,不断地从测试资源队列中取出资源的URL并对该 URL发出请求,同时保持请求发送的速率与设定的压力值相当;(4)对于每一个发送的请求,程序记录每一个请求的响应的第一个数据包到达的 延时(称为回复延时)和最后一个数据包到达的延时(称为响应延时);(5)根据设定的持续时间,在相应时间段内保持不断地发出请求,持续时间完成之 后,将回复延时和响应延时的统计数据呈现给测试者,测试过程结束。具体实施效果测试的过程比现有的产品要简单,得到的测试数据与真实用户访 问的数据接近,是真实值的一个可靠的近似。
权利要求
一种简单快捷自动的Web服务器压力测试方法,测试过程分为准备阶段和测试阶段,具体步骤如下准备阶段使用一个网页爬虫程序搜索网站,建立一个网站内所有资源的列表,具体步骤如下(1)建立一个以资源的URL为键值的哈希表(称为网站资源列表),记载网站中各资源的URL、出现的频数、内容类型、父节点的URL等信息,建立一个待抓取资源队列;(2)测试者设定一个最大抓取资源数(Nmax),被测网站资源判定规则(规则类型为正则表达式)和起点页面URL,并启动程序开始抓取;(3)将起点页面的URL在网站资源列表中登记,并推入待抓取资源队列中;(4)从待抓取资源队列中取出一个资源的URL,并把该URL所对应的资源下载下来;(5)根据HTTP响应的ContentType字段,判断该资源的类型,并在网站资源列表中登记该资源的类型,若该资源类型为“text/html”类型,则进行步骤(6),否则,跳至步骤(9);(6)扫描HTML代码中包含的所有资源的URL,包括但不限于图像、声音、视频、CSS代码、JavaScript脚本、程序、文档等类型文件;(7)对于每一个扫描到的URL,使用被测网站资源判定规则进行判定,若该URL为被测网站的资源,则进行步骤(8),否则不做任何处理,跳至步骤(9);(8)对于指向被测网站资源的URL,若该URL曾经出现过,则将该URL的出现频数加一;否则,建立一条新纪录保存该资源信息,该资源的频数记为一,并把该资源的URL送入待抓取资源队列中等待抓取;(9)如果待抓取资源队列为空,或者网站资源数据库中记载的资源总数超过Nmax,则终止抓取行为,否则,跳回步骤(4)循环执行。注为了提高抓取的速度,会采用多个线程抓取,上述步骤(4)至(9)描述的是其中一个线程的行为,工作的线程数量由测试者指定。测试阶段将向网站资源列表中的资源不断的发出请求,从而对被测服务器施加压力,具体步骤如下(1)设定一个压力值和持续时间,压力值的含义为每秒对被测网站资源发出的请求总数,持续时间的含义为测试工作持续的时间;(2)生成一个测试时将要使用的测试资源队列,包含测试时将要发起请求的资源的URL,队列中任意一个资源的URL出现的概率等于在网站资源数据库中的频率(该资源出现的频数除以所有资源的频数之和);(3)测试程序根据设定的压力,不断地从测试资源队列中取出资源的URL并对该URL发出请求,同时保持请求发送的速率与设定的压力值相当;(4)对于每一个发送的请求,程序记录每一个请求的响应的第一个数据包到达的延时(称为回复延时)和最后一个数据包到达的延时(称为响应延时);(5)根据设定的持续时间,在相应时间段内保持不断地发出请求,持续时间完成之后,将回复延时和响应延时的统计数据呈现给测试者,测试过程结束。
2.根据权利要求1所述的Web服务器压力测试方法,其特征在于测试过程中需要请 求的资源URL通过网页爬虫程序收集获得。
3.根据权利要求1所述的Web服务器压力测试方法,其特征在于测试过程中需要请 求的资源URL的出现概率与爬虫在网站爬行过程中该URL出现的频率相同。
全文摘要
本发明将提供一种新型的简单的Web服务器压力测试方案,测试人员只需要进行少量的配置,通过本发明所述的方法,可以快速的得到一组近似的测试结果。测试的过程由程序自动完成,通过网页爬虫程序获取一个测试过程中需要请求的网站资源列表,避免了现有压力测试系统为了配置模拟用户行为的脚本,而需要进行前期的调研工作。
文档编号H04L12/26GK101848116SQ20101015514
公开日2010年9月29日 申请日期2010年4月21日 优先权日2010年4月21日
发明者廖晓敏, 徐龑飞, 曲海鹏, 李好, 林喜军, 王悦 申请人:中国海洋大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1