她就是用来搜集被压服务器的各样性能目的,使用指南.

不久前要用到Stress Test,找到J-Meter 这多少个工具,转载一篇网络上的J-Meter
使用指南.

1、工作规律

简介

Apache
JMeter是100%纯java桌面应用程序,被设计用来测试C/S结构的软件(例如web应用程序)。它能够被用来测试包括基于静态和动态资源程序的属性,例如静态文件,Java
Servlets,Java 对象,数据库,FTP
服务器等等。JMeter可以用来模拟一个在服务器、网络或者目的上大的负荷来测试或者分析在不同的负载类型下的统筹兼顾性能。
除此以外,JMeter可以用断言成立测试脚本来验证应用程序是否再次回到了我们期待的结果,从而匡助大家开展回归测试。为了博取最大的油滑,JMeter允许大家使用正则表达式创造断言。

原贴地址:http://hi.baidu.com/%D5%C5%B9%DA%C1%D6/blog/item/084298827b5685bd6c8119c9.html

JMeter是Apache协会的怒放源代码项目,它是法力和性质测试的工具,100%的用java实现,最新的版本是1.9.1,大家能够到http://jakarta.apache.org/jmeter/index.html下载源代码和查六柱预测关文档。

1 JMeter功能领域

JMeter可以用于测试静态或者动态资源的特性(文件、Servlets、Perl脚本、
java对象、数据库和查询、ftp服务器或者另外的资源)。JMeter用于模拟在服务器、网络或者其余对象上附加高负载以测试他们提供服务的受压能
力,或者分析他们提供的劳务在不同负载条件下的总性能情况。你可以用JMeter提供的图形化界面分析性能目的或者在高负荷状况下测试服务器/脚本/对象
的行事。

2 使用JMeter测试Web应用

接下去的章节里,作者将详细的示范怎样使用JMeter来测试Web应用的完好经过。

2.1 测试环境

笔者选拔了汤姆cat作为Web服务器举行测试,被测试的内容是一个jsp文件和一个
servlet,jsp文件调用JavaBean、打印相关音讯,servlet接受用户参数、调用javabean、输出相关音信。详细的内容请参见作
者提供的JMeter.war的情节。

2.2 安装启动JMeter

大家可以到通过http://apache.linuxforum.net/dist
/jakarta/jmeter/binaries/jakarta-jmeter-1.9.1.zip下载JMeter的release版本,然后将下
载的.zip文件解压缩到C:/JMeter(前面的篇章旅长使用%JMeter%来引用这一个目录)目录下。现在,请使用%JMeter%/bin上边的
jmeter.bat批处理公事来启动JMeter的可视化界面,下面的劳作都将在这些可视化界面界面上举办操作。下面的图纸是JMeter的可视化界面
的屏幕截图。

图片 1

图一: JMeter打开时的屏幕截图

2.3 建立测试计划(Test Plan)

测试计划描述了实施测试过程中JMeter的推行进程和手续,一个完好无损的测试计划包括一个或
者四个线程组(Thread Groups)、逻辑控制(Logic
Controller)、实例爆发控制器(萨姆(Sam)ple Generating
Controllers)、侦听器(Listener)、定时器(提姆er)、比较(Assertions)、配置元素(Config
Elements)。打开JMeter时,它已经建立一个默认的测试计划,一个JMeter应用的实例只好建立或者打开一个测试计划。现在我们起初填充一
个测试计划的内容,那么些测试计划向一个jsp文件和一个servlet发出请求,大家需要JMeter模拟六个请求者(也就是三个线程),每个请求者连续
请求四回,下面的章节介绍了详细的操作步骤。

2.4 增添负载信息设置

这一步,我们将向测试计划中扩大相关负载设置,是Jmeter知道我们需要效法六个请求者,每个请求者在测试过程中老是请求五次。详细步骤如下:

  1. 入选可视化界面中左侧树的Test Plan节点,单击右键,选取Add’Thread
    Group,界面右侧将会并发她的装置信息框。

  2. Thread Group有多少个和负载音讯相关的参数:

Number of Threads: 设置发送请求的用户数量

Ramp-up period:
每个请求暴发的总时间距离,单位是秒。比如您的伏乞数目是5,而以此参数是10,那么每个请求之间的距离就是10/5,也就是2秒

Loop Count: 请求暴发的重新次数,假诺选拔背后的forever(默认),那么
请求将直接继承,倘若不采纳forever,而在输入框中输入数字,那么请求将再一次指定的次数,假诺输入0,那么请求将履行几遍。

按照我们演示例子的宏图,大家应当将Number of Threads设置为5,Ramp-up
period设置为0(也就是同时出现请求),不选中forever,在Loop
Count后边的输入框中输入2,设置后的屏幕截图如下:

图片 2

图二:设置好参数的Thread Group。

2.5 扩充默认Http属性(可选)

实际上的测试工作多次是本着同一个服务器上Web应用举行的,所以Jmeter提供了如此一种
设置,
在默认Http属性设置需要被测试服务器的相关属性,将来的http请求设置中就可以忽略那一个相同参数的装置,裁减设置参数录入的年月。我们这里将应用这种属性。你可以因此下面的步骤来安装默认http属性:

  1. 当选可视化界面中左侧树的Test Plan节点,单击右键,选用Add’config
    element’http request defaults,界面右侧将会出现她的安装信息框。

  2. 默认http属性的重要参数表达如下:

protocal:发送测试请求时行使的说道

server name or ip:被测试服务器的ip地址或者名字

path:
默认的开场地点。比如将path设置为/jmeter,那么富有的http请求的url中都将增多/jmeter路径。

port number: 服务器提供劳务的端口号

咱俩的测试计划将本着本机的Web服务器上的Web应用举行测试,所以protocal应该
是http,ip使用localhost,因为这么些web应用宣布的context路径是/jmeter,所以这里的path设置为/jmeter,因为
使用Tomcat服务器,所以port number是8080。设置后的屏幕截图如下:

图片 3

图三: 测试计划中动用的默认Http参数

2.6 增加Http请求

现在大家需要充实http请求了,他也是大家测试的始末主导部分。你可以因此下边的步骤来增加性的http请求:

  1. 当选可视化界面中左侧树的Thread
    Group节点,单击右键,选用Add’sampler’http
    request,界面左边将会产出她的装置信息框。

2.
他的参数和2.5中牵线的http属性差不多,扩张的性质中有发送http时方法的抉择,你可以挑选为get或者post。

我们现在增多七个http
请求,因为我们设置了默认的http属性,所以和默认http属性中相同的特性不再另行设置。设置后的屏幕截图如下:

图片 4

图四:设置好的jsp测试请求

图片 5

图五:设置好的Servlet测试请求(带参数)

2.7 增加Listener

日增listener是为了记录测试音信并且可以运用Jmeter提供的可视化界面查看测试
结果,里面有好两种结果分析方法可供选拔,你可以依据自己习惯的解析方法选用不同的结果展现情势,我们这里运用表格的格局来查看和分析测试结果。你可以通
过下面的步子来扩充listener:

  1. 当选可视化界面中左边树的Test
    Plan节点,单击右键,选用Add’listener’view result in
    table,界面右侧将会油不过生她的设置音讯和结果显示框。

2.
您可以设置界面下面的filename属性设置将测试结果保存到某个文件中界面下面将应用表格突显测试结果,表格的第一列sampleno显示请求执行的
顺序和号码,url显示请求发送的对象,sample-ms列呈现这么些请求完成耗费的时间,末了的success列彰显改请求是否中标实践。界面的最下面你还能见见部分总结新闻,最关心的应当是Average吧,也就是应和的平分时间。

2.8 起首执行测试计划

现今你可以因而单击菜单栏run ->
Start初始实践测试计划了。下边这六个图是作者首先次、第二次实践该测试计划的结果图:

图片 6

图六:第一次执行后的结果展现

图片 7

图七:第二次施行的结果呈现

我们可以见到第一次执行时的多少个大日子值均来自于jsp
request,这足以经过下边的理由进行表明:jsp执行前都急需被编译成.class文件。所以第二次的结果才是正常的结果。

3 总结

JMeter用于举行供能或者性质测试,通过行使JMeter提供的供能,我们得以可视化的成立测试计划:包括确定选用什么的载重、测试什么内容、传入的参数,同时,他提供了好多种图形化的测试结果显示形式,使咱们可以简单的初始测试工作和分析测试结果。

本文中,作者依照自己的运用经验,详细演示了怎样运用JMeter来开展Web测试的所有过
程,简单的牵线了JMeter提供测试结果的图形化彰显界面中相关参数的意思。希望可以帮助大家学会使用JMeter的基本知识,同时,我们可以参见那多少个过程和JMeter的增援文档来贯彻对java对象、数据库等的测试过程。

参考资料:

JMeter 的用户指南 :
http://jakarta.apache.org/jmeter/usermanual/index.html

工具下载:

  1. tomcat http://jakarta.apache.org/tomcat/index.html

  2. JMeter http://jakarta.apache.org/jmeter/index.html

==========================================
找到此外一篇相比好的情节:

JMeter技巧集锦

摘要:
使 用Jmeter开发一个载重测试脚本并不困难, 因为JMeter
提供了充裕的部件和拖拽风格的操作界面,但是,建立一个近乎实际负荷的测试脚本仍然是有一定难度的。其中的一个缘故就是裁判测试质料的局部参数是让人费解
的,本文可以为你解答部分这下边的困惑,并就怎么样满意响应时间等测试需要等提供了部分指引规范。

改进Jmeter 脚本质地

摘要
    使 用Jmeter开发一个载重测试脚本并不困难, 因为JMeter
提供了增长的预制构件和拖拽风格的操作界面,不过,建立一个像样实际负荷的测试脚本仍然是有肯定难度的。其中的一个缘故就是鉴定测试质地的片段参数是令人费解
的,本文可以为您解答部分这上边的迷离,并就咋样知足响应时间等测试需要等提供了有些指点原则。

版权讲明:任何收获Matrix授权的网站,转载时请务必保留以下作者音信和链接
作者:Chi-Chang
Kung;joson(作者的blog:http://blog.matrix.org.cn/page/joson)
原文:http://www.javaworld.com/javaworld/jw-07-2005/jw-0711-jmeter.html
译文:http://www.matrix.org.cn/resource/article/44/44226_JMeter+tips.html
关键字:JMeter;tips

JMeter 是一个风靡的用来负载测试的开源工具,
具有许多卓有效率的效果元件,如线程组(thread group), 定时器(timer),
和HTTP 取样 (sampler) 元件。 本文是对JMeter
用户手册的互补,而且提供了有关采用Jmeter的片段模仿元件开发质料测试脚本的指点。

正文同时也研商了一项关键的内容:在指定了标准的响应时间要求后,咋样来校验测试结果,特别是在拔取了置信区间分析这种严俊的总结模式的事态下应如何操作。请留意,我借使本文的读者们询问关于Jmeter的基础知识,本文的例证基于Jmeter2。0。3版。

确定一个线程组的ramp-up period
(Determine)

   Jmeter脚本的率先个要素是线程组(Thread
Group),由此首先让我们来回顾一下。
正如图一所示,线程组需要安装以下参数:
·线程数量。
·ramp-up period。
·运行测试的次数。
·启动时间:立即或者预定的时光,如假设后人,线程组所涵盖的要素也要指定这一个起止时间。

图片 8
图 1。 JMeter 线程组(JMeter Thread Group)

各样线程均独立运作测试计划。由此,
线程组常用来效仿并发用户访问。假若客户机没有丰盛的力量来模拟较重的载重,可以运用Jmeter的分布式测试功用来因此一个Jmeter控制台来远程控制四个Jmeter引擎完成测试。

参 数 ramp-up period 用于告知JMeter
要在多长期内建立全方位的线程。默认值是0。如果未指定ramp-up period
,也就是说ramp-up period 为零, JMeter 将即刻创设具无线程,假诺ramp-up
period 设置成T 秒,全体线程数设置成N个, JMeter
将每隔T/N秒建立一个线程。

线程组的绝大多数参数是不言自明的,只有ramp-up period有些不便知晓,
因为啥设置适当的值并不容易。 首先,要是要选用大量线程的话,ramp-up
period
一般不要设置成零。因为一旦设置成零,Jmeter将会在测试的始发就创造全方位线程并霎时发送访问请求,这样一来就很容易使服务器饱和,更要紧的是会隐性
地扩张了负荷,这就代表服务器将可能过载,不是因为平均访问率高而是因为拥无线程的首先次面世访问而滋生的不健康的上马访问峰值,可以透过Jmeter
的集合报告监听器看到这种情形。
这种特别不是我们需要的,因而,确定一个创设的ramp-up period
的规则就是让先导点击率接近平均点击率。当然,也许需要周转一些测试来规定合理访问量。

依照相同的原委,过大的ramp-up period
也是不相宜的,因为将会减低访问峰值的载重,换句话说,在有些线程还未启动时,初期启动的片段线程可能已经截止了。

这 么,咋样检验ramp-up period
I太小了仍然太大了啊?首先,推断一下平分点击率并用总线程除点击率来计量起头的ramp-up
period。 例如,假如线程数为100, 算计的点击率为每秒10次,
那么揣测的理想ramp-up period 就是 100/10 = 10 秒。
那么,应如何来提议一个靠边的揣摸点击率呢?没有怎么好点子,必须经过运行五回测试脚本来拿到。

说不上,在测试计划(test
plan)中追加一个汇集报告监听器,如图2所示,其中蕴藏了颇具独立的拜访请求(一个samplers)的平分点击率。第五次取样的点击率(如http
请求)与ramp-up period 和线程数量密切相关。通过调整ramp-up period
可以使第一次取样的奠基率接近平均取样的点击率。

图片 9
图2 JMeter 聚合报告

其三, 查验一下Jmeter日志(文件地方:JMeter_Home_Directory/bin)
的最终一个线程起首时首先个线程是否确实停止了,二者的流年差是否健康。

总而言之,是否能确定一个适用的ramp-up time 取决于以下两条规则:
·第一个取样器的点击率(hit
rate)是否接近其他取样器的平均值,从而能否避免ramp-up period 过小。
·在最后一个线程启动时,首个线程是否在真的截至了,最好二者的时辰要硬着头皮的长,以避免ramp-up
period过大。

有时,这两条规则的下结论会相互争论。
这就意味着无法找到并且满意两条规则的确切的ramp-up period。
不佳的测试计划通常会招致这么些题材,这是因为在这样的测试计划里,取样器将无法丰裕地征集数据,可能因为测试计划执行时间太短并且线程会很快的运行截止。

用户思维时间(User think
time),定时器,和代理服务器(proxy server)

    在 负载测试中需要考虑的的一个最紧要元素是思考时间(think time),
也就是在五次得逞的拜访请求之间的刹车时间。有多种情形挥发导致延迟的暴发:
用户需要时刻阅读文字内容,或者填表,或者搜索正确的链接等。未认真考虑考虑时间平常会造成测试结果的失真。例如,估摸数值不合适,也就是被测系统能够扶助的最多用户量(并发用户)看起来好像要少一些等。

Jmeter提供了一整套的计时器(timer)来模拟思考时间(think
time),但是如故存在一个题目:: 咋样确定合适的思想时间吧?幸运的是,
JMeter 提供了一个不利的答案:使用 JMeter HTTP 代理服务器(Proxy
Server)元件。

代理服务器会记录在使用一个平凡的浏览器(如FireFox 或 Internet
Explorer)浏览一个web应用时的操作。 其它, JMeter
在记录操作的同时会树立一个测试计划(test plan)。
这一个效果能提供以下便利:
·不必手工建立HTTP 访问请求,
尤其是当要安装有些令人乏味的参数时(可是,非英文的参数也许无法健康工作)
。JMeter 将会录制包括富含字段(hidden fields)在内的兼具内容。
·在转移的测试计划中,Jmeter会包含浏览器生成的富有的 HTTP
报头,如User-Agent (e。g。, Mozilla/4。0), 或AcceptLanguage (e。g。,
zh-tw,en-us;q=0。7,zh-cn;q=0。3)等。
·JMeter
会依照设置在录制操作的同时创制部分定时器,其延迟时间是一心按照实事求是的操作来安装的
现 在让大家来看一下哪些安排Jmeter的录制效率。 在JMeter 的控制台上,
在工作台(WorkBench)元件上单击右键,然后采取”add the HTTP Proxy Server
“。 注意是在WorkBench 上单击右键而不是在Test
Plan上,因为现在是要为记录操作举行布局而不是要运行测试计划。  HTTP Proxy
Server
的贯彻原理就是通过安排浏览器的代理服务器而使所有的造访请求通过JMeter发送(,由此被Jmeter把访问过程录制下来)。

如图3所示, HTTP代理服务器(HTTP Proxy
Server)元件的片段参数必须被部署:
·端口(port): 代理服务器的监听端口
·目标控制器(Target Controller):
是代理用于存储生成的数额的控制器,默认境况下,, JMeter
将会在脚下的测试计划中找一个记下用的控制器用于存储,别的也足以在下拉菜单中选拔随机支配起来存储,经常默认值就足以了。
· 分组(Grouping): 确定在测试计划中怎么样来为变化的构件分组。
有两个选项,一般可以采纳“只存储每个组的首先个样本”,否则,将会原样录制URLs,包括富含图像和JavaScripts脚本的页面。当然也足以品味
一下默认值“不对样本分组”(”Do not group samples”),来看一下JMeter
建立的原版的测试计划。
·包含格局(Patterns to Include) 和 排除情势(Patterns to Exclude)
:帮衬过滤一些不需要的拜访请求。

图片 10
图 3。 JMeter 代理服务器(Proxy Server)。

当 你点击初步(Start)按钮时,代理服务器就会起来记录所收受的HTTP
访问请求。当然,在初阶记录前,要首先设置好浏览器的代理服务器设置。在代理服务器元件中得以追加一个定时器子元件(配置元件),用于告知Jmeter来
在其转移的
HTTP请求中自行的充实一个定时器。Jmeter会自动把实际的延迟时间存储为一个被命名为T的Jmeter变量,因而,虽然在代理服务器元件里拔取了
高斯随机定时器,就活该在其中的一向延迟偏移(Constant Delay
Offset)设置项里添上${T}(用于机动引用纪录的延迟时间),如图4所示。那是另一个节省时间的有利特性。

图片 11
图 4。 在代理服务器组建中追加一个高斯随机定时器

定时器将会使相应的的取样器被延缓。
延时的平整是,在上一个造访请求被响应并延时了点名的时刻后,下一个被定时器影响的取样访问请求才会被发送出去。
因而,
你必须手工删除第一个取样器中自动生成的定时器,因为第一个取样器不需要定时器。
在 启动HTTP代理服务器此前,要在测试计划中扩大一个线程组(thread
group),在线程组中追加一个录制控制器(recording
controller)用于存储生成的结果。 否则,
生成的部件将会被一贯抬高到办事台里。另外,在录制控制器里扩张一个HTTP请求默认值元件HTTP
Request Defaults 元件 (是一个安排元件)
也很关键,这样Jmeter就不填写使用了默认值的字段。
录制完成后, 截止HTTP 代理服务器;
在录制控制器元件上单击右键将记录的部件保存为一个文书用于以后重用,其它,不要忘了恢复生机浏览器的代理服务器设置。

点名响应时间需要并校验结果

    尽管本节内容与Jmeter不是直接相关,不过Jmeter依然是点名响应时间要求和校验测试结果这七个负载测试评价任务相互联系的要害。


web应用的条件里,响应时间指的是从提交访问请求到等到HTML结果所耗费的时间。从技术的角度看,响应时间也应包括浏览器重绘HTML页面的时刻,然而浏览器一般是一块接着一块地突显而不是直接呈现完整的凡事页面,令人倍感响应时间要少一些。此外,典型的状态是,负载测试工具不会考虑浏览器的重绘时
间。 由此,
在实质上的属性测试中,我们将考虑以上描述的场合,假如不可能确信,可以在正常的响应时间上加一个固定值,如0.5秒。

以下是一套众所周知的规定相应时间的正统:
·用户将不会小心到零星0.1秒的推移
·少于1秒的延期不会中断用户的例行思维, 可是一些延缓会被用户注意到
·延迟时间少于10秒,用户会延续等待响应
·延迟时间超越10秒后,用户将会丢弃并最先其他操作

这多少个阀值很著名并且一般不会变动,因为是涉嫌人类的感知特性的。
所以要基于这个规则来安装响应时间需要,也需要适当调整以适应实际应用。例如,Amazon公司(Amazon.com)
的主页也如约了以上规则,但是出于更偏重于风格上的一样,所以在响应时间上有一点损失。

乍一看,好像有二种不同的措施来规定相应时间需要:
·平均响应时间(Average response time )
·相对响应时间(Absolute response time);即,
所有的响应时间必须低于某一阀值

指定平均响应时间相比简单一些(straightforward),不过出于数量变动的困扰,这些要求往往难以实现。为何取样中的20%的响应时间要比平均值高3倍以上呢?请小心,JMeter
统计平均响应时间与图片结果监视器中的标准不是是均等的。
单向, 对相对响应时间需要过于苛求是不实际的。
假如只有0。5%的抽样不可能透过测试该咋做?假使再测两次,又会有很大的转变。
幸运的是, 使用置信区间(confidence
interva)分析这种专业的总括方法可以兼顾到取样变化的熏陶。
在继续举办前,让我们率先想起一些着力的总计学知识。

主题极限定理(The central limit theorem)
  中央极限定理注明如果完全的遍布有一个平均值μ和正式偏差σ,那么对于一个非凡大的n(>30),其取样平均值的遍布将接近于正态分布,其平均值μmean
= μ ,标准不是σmean = σ/√n。
专注取样平均值的分布是正态的,而抽样自身的遍布不必是正态的。也就是说假如频繁运转测试脚本则测试结果的平均响应时间将会是正态的。

图 5 和图 6 分别展现了六个正态分布。 在此处横坐标是采样响应时间的均值,
总体的均值被调动到坐标的原点(shifted so the population mean is at the
origin)。 图5 注明90%的年月里,采样均值位于±Zσ的区间里(percent of the
time, the sampling means are within the interval ±Zσ,),这里的Z=1.645
和 σ 是业内不是。 图 6 阐明了99%的意况下的处境这时的Z=2.576。
在加以的几率下,如90%,我们得以看到相应的Z突显正态曲线,反之亦然。

图片 12
Figure 5。 Z value for 90 percent
  

图片 13
Figure 6。 Z value for 99 percent


相关材料中所列的是可提供正态曲线统计的一对网站。在那么些网站,我们得以测算随意的对峙区间内的概率(如,-1.5
< X < 1.5)或者在一个凑合的区域(cumulated area)内 ,(如, X <
1.5)。 也得以从上边的表中得到近似值。

表 1。 对应于给定的置信区间(confidence
interval)的专业不是范围(Standard deviation range)
图片 14

表 2。 对应于给定的正儿八经不是范围(Standard
deviation)的置信区间(confidence interval)
图片 15

置信区间(Confidence interval)
    置 信区间(confidence interval)的概念是[抽样平均值- Z*σ/√n,
取样平均值+ Z*σ/√n]。 例如,倘诺置信区间(概率)是90%, 经查找可知Z
值是1。645, 于是置信区间就是 [抽样平均值- 1。645*σ/√n, 取样平均值+
1。645*σ/√n], 这表示在90%的日子里, 总体平均值(population
mean)(是未知的) 会落入这些置信区间内。也就是说,
我们的测试结果是可怜像样的。 假如 σ(标准不是)
更大一部分,置信区间也会更大,这就意味着置信区间的上限就会更可能会越过可以接受的限定,即σ
越大,结果越不可信。

一呼百应时间需要(Response-time requirements )
    现在大家把富有的新闻都归咎到响应时间需要上来。首先。必须要定义性能需求,如:
%95概率的置信区间的平分响应时间的上限必须低于5秒。
当然,最好有相应的需要或现象。


性能测试截至后,倘若进分析得出结论是平均响应时间是4.5秒,标准不是时4.9秒,样本数量是120个,然后就可以总结%95概率的置信区间了。通过查
表1,找到Z值是 1。95996。 于是置信区间就是 [4.5 – 1.95996*4.9/√120,
4.5 + 1.95996*4.9/√120], 也就是 [3.62,
5.38]。即使看起来这一个响应时间看起来很正确,但这一个结果(因为超越了需求的渴求,由此)是不可接受的。
实际上,可以检验的是不怕是对此80%概率的可信区间,这么些测试结果也是无法接受的。正如您所寓目的,使用了置信区间分析后,会拿到一个非常可靠的方法来
揣测测试质地。

在web应用中,为了测定某一景观的响应时间,我们一般要通过测试工具来发送多少个访问请求,例如:
4.        登陆
5.        展现表单
6.        提交表单

设若我们对请求3更感兴趣。为拓展置信区间分析,我们需要的仅是请求3的拥有样本的响应时间均值和正式不是,而不是总体被统计的样书的。

在Jmeter的图片结果监听器中总括的却是全体请求的响应时间均值和正式不是。
而Jmeter的集纳报告监听器总结的是独自的采样器的响应时间均值,可惜没有测算标准不是。
显而易见, 仅仅指定响应时间均值是摇摇欲坠的, 因为不可能反映出多少的变型。
尽管响应时间均值是可以承受的,可是置信区间仅有75%,这一个结果也不可能相信。不过,使用置信区间分析仍然会带来更多的显眼。

结论

本文研究了以下内容:
·详细讲解了Jmeter 线程组在加载负载时的特别设置
·使用Jmeter代理服务器(Proxy
Server)元件自动建立测试脚本的指导方针,其紧要在于模拟用户思维时间(user
think time )。
·置信区间分析(Confidence interval analysis),
一种大家可以用来更好地满意响应时间要求的总结分析方法
通过行使本文提及的技能可以改良测试脚本的身分,更宽泛地说,本文所谈论的内容属于是性质测试的一个工作流程的一有些,
是中间的一个较困难的有的。性能测试包括并不仅限于以下内容:
·编写性能测试需要
·选用测试情景
·准备测试环境
·编写测试脚本
·执行测试
·回顾测试脚本和测试结果
·指出性能瓶颈
·书写测试报告

其它, 性能测试结果,包括确定下来的瓶颈,
都需要申报给开发公司依然架构师进行优化规划。在这一个过程中,并写测试脚本和追忆测试脚本是中间很要紧的一对,要仔细筹备和管制实施。凭借测试脚本引导和一个好的属性测试流程,你将会有更多的火候来在较重负载下优化软件性能。

有关作者
Chi-Chang Kung 是山西Sun 集团的java系统架构师,也是IEEE 和ACM的分子。

连锁资源
·JMeter: http://jakarta.apache.org/jmeter/index.html
·《主旨极限理论以及经典推论》(”Central Limit Theorem and Classical
Inference” )斯科特(Scott) M。 林奇 (二〇〇五年十月):
http://www.princeton.edu/~slynch/clt\_inference.pdf
·置信区间(Confidence intervals):
http://people.hofstra.edu/faculty/Stefan\_Waner/RealWorld/finitetopic1/confint.html
·《java网站的属性分析》(Performance Analysis for Java Websites),
Stacy(Stacy) Joines et al. (Addison(Addison)-韦斯利(Wesley), 2002年10月; ISBN: 0201844540):
http://www.amazon.com/exec/obidos/ASIN/0201844540/javaworld
· 《响应时间:六个重大的范围条件》(“Response 提姆(Tim)es: The Three Important
Limits”) 引自《实用工程学》( Usability Engineering), Jakob Nielsen
(摩根 Kaufmann, 1994; ISBN 0125184069):
http://www.useit.com/papers/responsetime.html
·一些提供了正态曲线总计功效的网站(Websites for normal curve
calculation):
o        http://www.psychstat.smsu.edu/introbook/normal.htm
o        http://www.ecositebr.bio.br/curva\_normal.htm
o        http://statistik.wu-wien.ac.at/mathstat/hatz/vo/applets/probCalc/normal\_z\_p.html
·更多关于测试的小说,请参照JavaWorld’s 标题索引的Testing 部分:
http://www.javaworld.com/channel\_content/jw-testing-index.shtml
·关于JAVA开发工具,参见JavaWorld’s 标题索引的Development Tools 部分:
http://www.javaworld.com/channel\_content/jw-tools-index.shtml

图片 16

安装

图片 17

windows版本

下载最新版本
http://jmeter.apache.org/download_jmeter.cgi

编纂本文时最新版本 2.12 (要求 Java 6 或更高)

解压zip/tar文件到自由目录。

管教正确安装JRE/JDK并且安装条件变量JAVA_HOME。

避免在一个有空格的途径安装 Jmeter,这将导致分布式测试现身问题。

为Jmeter安装PerfMon插件

运行

JMeter本身对这些音信是不做采访的,这么些时候PerfMon就涌出了。没错,他就是用来搜集被压服务器的各种性能目标,例如:CPU,

用户界面情势

运作 bin 目录中的 JMeter (for Unix) 或者 JMeter.bat (for Windows) 文件。

Memory, Swap, Disks I/O and Networks I/O……

服务器形式

为了分布测试
,可以动用服务器形式运行JMeter,然后经过用户界面/或命令行控制每一台服务器。

运作 bin 目录中的 jmeter-server (for Unix) 或者 jmeter-server.bat (for
Windows) 文件。

进去正题:

命令行

行使命令行运行:jmeter -n -t filename.jmx
-n 这是指定JMeter在非用户界面模式运行
-t [带有测试计划的JMX文件的名字]

用作分布式的内部一台主机:jmeter-server -H my.proxy.server -P 8000
-H [代理服务器主机名或者ip地址]
-P [代理服务器端口,默认1099]
操纵分布式主机执行脚本:jmeter -n -t filename.jmx -R
192.168.101.116:1099,192.168.101.113:1099

经过代理服务器连接网络:jmeter -H my.proxy.server -P 8000
-H [代理服务器主机名或者ip地址]
-P [代理服务器端口]

 

环境搭建

测试计划

一个测试计划描述了一多重JMeter运行时要推行的步子。一个整机的测试计划包含一个或者五个线程组(thread
groups),逻辑控制(logic controllers),取样暴发控制(sample generating
controllers),监听器(listeners)定时器(timers),断言(assertions)和部署元件(configuration
elements)。

1、下载jmeter,举办解压

添加和删除元件 ( Elements )

图片 18

在一个树上通过右击可以加上元件到一个测试计划
,从“add”列表中采用一个新元件。或者经过增选“open”选项从文件加载。

图片 19

去除元件,确保元件被入选,在元件上右击,然后选择”remove”选项。

图片 20

加载和保存元件

 图片 21

从文件加载元件,右击目的元件,选用“open”选项,然后选用你的构件保存文件。JMeter将载入文件中的所有元件。

图片 22

保存树元件,在一个构件上右击,选拔“save”选项。JMeter会保存已选的部件,加上富有下面的子元件。用这种方法,你可以保留测试树的一段、单独元件、或者全体测试计划。

2、安装Jmeter插件:http://www.jmeter-plugins.org/install/Install/,下载后将plugins-manager.jar放到jmeter客户端的jmeter/lib/ext下

 运行一个测试计划

图片 23

运转一个测试计划,从“run”菜单项拔取“start”。停止你的测试计划,从同样的食谱接纳“stop”。

 

图片 24

线程组

线程组是另外一个测试计划的启幕点.
所有的测试计划中的元件都要在一个线程组中。

如名字显示这样,线程组控制了一组线程,
JMeter使用这一个线程来执行你的测试,你能够做如下操作:

  • 控制thread group
  • 安装线程的数量
  • 设置ramp-up周期
  • 安装测试执行的循环次数

图片 25

每一个线程都会全盘和独门的施行测试计划而不影响其他线程。多线程可以用于模拟到您的服务器程序的出现连接。

Ramp-up period
告诉JMeter需要多少长度期来“ramp-up”去装载全体的线程,如若30个线程被利用,而ramp-up
period为120秒,那么JMeter会花120秒来驱动所有的30个线程运行,每个线程将在上个线程最先后4秒开首。延迟时间=ramp-up
period时间数/线程数

默认的,一个thread group被安装为不限制的轮回。你可以安装thread
group循环的次数,如若设置为一次,那么JMeter将进行测试一次然后截至。

 

2、将plugins-manager.jar放到jmeter客户端的jmeter/lib/ext下

Controllers

JMeter有两种controller:Samplers和Logical Controllers

山姆(Sam)plers告知JMeter发送请求到服务器。
例如,假若您想JMeter发送一个HTTP请求,就添加一个HTTP Request
山姆pler。当然你也可以定制一个呼吁,在山姆pler中添加一个或两个Configuration
Elements。

Logical
Controllers使您可以定制JMeter发送请求的逻辑。例如,你可以增长一个Interleave
Logic Controller来支配交替使用多个HTTP Request
山姆plers。同样,一个一定的Logic controller,作为Modification
Manager,可以让你改改请求的结果。

 

运作jmeter,查看插件是否安装成功

Samplers

Sampler 告知JMeter发送请求到server端。JMeter现在有如下的samplers:

  • FTP Request
  • HTTP Request
  • JDBC Request
  • Java Object Request
  • LDAP Request
  • SOAP/XML-RPC Request
  • Web Service (SOAP) Request (Alpha Code)

每个sampler都有部分能够安装的properties。
你也得以在一个sampler中添加Configuration Elements来做更多的装置。当然,
值得注意的是JMeter遵照request在tree中加上的顺序来发送请求。

一旦你想同时发送六个冒出的同等档次的request,例如HTTP
request,到同样一台服务器。可以设想使用一个Defaults Configuration
Element。每个Controller拥有一个或五个默认元素。

 图片 26

Listeners提供了获取在JMeter运行过程中募集到的音信的走访模式。最简便易行的Listener,Graph
Results
Listener图示出了响应时间。Listeners提供了一种图型化的主意来查阅JMeter运行过程中暴发的多寡。

其余,
Listeners可以一向将采访的到多少存入到文件中以备后用。任何一个listener都持有一个安装该公文存储地方的域。

Listener可以加到测试中的任何位置。他们将独自收集同级别和享有低级此外elements暴发的数量。

图片 27

图片 28

图片 29

图片 30

 

图片 31

3、安装集群收集服务器音讯的插件

图片 32

4、安装成功后会自己启动jmeter,查看是否安装成功,如图所示:

图片 33

图片 34

4.下载https://jmeter-plugins.org/wiki/PerfMonAgent/将下载的zip包解压到服务器上面,

假设你是linux(需要jre环境),就进去serverAgent目录,运行startAgent.sh命令,

一般来说:启动:>>./startAgent.sh –udp-port 0 –tcp-port
port(agent起来未来所监听的端口)

停止:>>./startAgent.sh –udp-port 0 –auto-shutdown

进而修改:jmeter.save.saveservice.thread_counts=true

万一您是windows环境:进入serverAgent目录,直接双击startAgent.bat,启动agent

注:agent启动默认监听的端口是4444

认识PerfMon

内部具体参数参考一下文档:

http://code.google.com/p/jmeter-plugins/wiki/PerfMon

http://code.google.com/p/jmeter-plugins/wiki/PerfMonMetrics

2、概念:Threads:这么些组件重要用来决定Jmeter并发时发生线程的数额,在它的下超级菜单下只有一个零部件(线程组),可以这样通晓每个线程就是一个虚构的用户。富有的其他序列组件必须是(线程组)节点的子节点。

图片 35

图片 36

各种线程均独立运行测试计划。因而,线程组常用来模拟并发用户访问。倘若客户机没有充裕的能力来效仿较重的负载,可以行使Jmeter的分布式测试效用来经过一个Jmeter控制台来远程控制三个Jmeter引擎完成测试。

参数ramp-up

period用于告知JMeter要在多少长度期内创造全方位的线程。默认值是0。假诺未指定ramp-up
period,也就是说ramp-up
period为零,JMeter将登时成立具无线程,如果ramp-up
period设置成T秒,全部线程数设置成N个,JMeter将每隔T/N秒建立一个线程。

线程组的大多数参数是不言自明的,只有ramp-up
period有些不便精通,因为何设置适当的值并不擅自。首先,假如要拔取大量线程的话,ramp-up
period一般不要设置成零。因为如果设置成零,Jmeter将会在测试的发端就创制全方位线程并霎时发送访问请求,那样一来就很随意使服务器饱和,更着重的是会隐性地伸张了负荷,这就代表服务器将可能过载,不是因为平均访问率高而是因为具备线程的率先次出现访问而引起的不健康的始发访问峰值,可以经过Jmeter的会见报告监听器看到这种气象。

这种很是不是咱们需要的,由此,确定一个合理的ramp-up
period的规则就是让起头点击率接近平均点击率。当然,也许需要周转一些测试来规定合理访问量。

遵照相同的原委,过大的ramp-up
period也是不适当的,因为将会稳中有降访问峰值的负荷,换句话说,在有的线程还未启动时,初期启动的有些线程可能曾经竣工了。

这就是说,如何检验ramp-up

period
I太小了或者太大了吗?首先,预计一下等分点击率并用总线程除点击率来统计起先的ramp-up
period。例如,如若线程数为100,预计的点击率为每秒10次,那么推测的理想ramp-up
period就是100/10 =
10秒。那么,应如何来提议一个客观的估摸点击率呢?没有什么好措施,必须经过运行两遍测试脚本来得到。

图片 37

其次,在测试计划(testplan)中追加一个汇集报告监听器,如图2所示,其中蕴藏了有着独立的拜访请求(一个samplers)的平均点击率。第一次取样的点击率(如http请求)与ramp-up
period和线程数量密切相关。通过调整ramp-up
period可以使第一次取样的奠基率接近平均取样的点击率。

图片 38

http://www.cnblogs.com/fnng/archive/2012/12/21/2828440.html基础原件介绍

http://www.cnblogs.com/puresoul/p/4886574.html控制器的介绍

JMeter的显要测试组件总括如下:

1.测试计划是行使JMeter举行测试的起源,它是此外JMeter测试元件的器皿。

2.线程组代表一定数量的面世用户,它能够用来模拟并发用户发送请求。实际的央浼内容在Sampler中定义,它被线程组包含。

3.监听器负责采集测试结果,同时也被报告了结果展现的点子。

4.逻辑控制器可以自定义JMeter发送请求的一言一行逻辑,它与山姆(Sam)pler结合使用能够如法炮制复杂的请求类别。

5.断言可以用来判断请求响应的结果是否如用户所梦想的。它可以用来隔断问题域,即在保险效能正确的前提下执行压力测试。这些界定对于有效的测试是可怜有效的。

6.安排元件维护Sampler需要的部署音信,并按照实际的急需会修改请求的始末。

7.平放处理器和后置处理器负责在变化请求从前和事后形成工作。前置处理器日常用来修改请求的装置,后置处理器则不时用来处理响应的数码。

8.定时器负责定义请求之间的延期间隔。

jmeter分布式集群

jmeter分布式集群注意3问题

(1)集群的机器安装的jmeter版本一致

(2)调度机(master)和执行机(slave)最好分开,由于master需要发送音讯给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以提议单独用一台机器作为mater

(3)参数文件:假诺运用csv举办参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的

(4)每台机械上安装的Jmeter版本和插件最好都同样,否则会出部分出人意料的题材

分布式集群原理

1、Jmeter分布式测试时,选用其中一台作为调度机(master),其余机器做为执行机(slave)。

2、执行时,master会把脚本发送到每台slave上,slave得到脚本后就开

始执行,slave执行时不需要启动GUI,我明白它应当是通过命令行情势实施的。

3、执行到位后,slave会把结果回传给master,master会收集所有slave的信息并集中。

集群配置

执行机

(1)执行机启航bin目录下的:jmeter-server.bat,启动成功如下图:

图片 39

(2)参数文件:如若利用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路

调度机

(1)找到Jmeter的bin目录下jmeter.properties文件,修改如下配置,IP和Port是slave机的IP以及自定义的端口

多台slave在此以前用”,”隔开,我这配置了2台,如图所示:一台是友善的,另一台是同事的

图片 40

(2)执行机启航bin目录下的:jmeter-server.bat

(3)打开Jmeter,采用运行,有运程启动、运程全体起始三个挑选:

图片 41

自定义端口:

地点其实已经实现了Jmeter的分布式测试,这有的紧要介绍下怎么着自定义slave端口:

1、slave:在slave机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下几个布局项,比如自己那里修改为1888:

server_port=1888

server.rmi.localport=1888

2、启动slave机上的jmeter-server.bat,验证端口是否早已修改为:1888


3、master:修改master机器的jmeter.properties文件:

remote_hosts=10.13.223.202:1000,10.13.225.12:1888

4、重启jmeter.bat,验证端口是否曾经变了:


因此ServerAgent监控服务器的cpu
memory等音讯,监听的服务器必须先运行startAgent服务

图片 42

相关文章