转自:http://www.cnblogs.com/fnng/archive/2012/12/22/2829479.html
创建一个简单的测试计划来使用这些元件。该计划对应的测试需求。
1)测试目标网站是fnng.cnblogs.com 和 tt-topia.rhcloud.com
2)测试目的是该网站在负载达到20 QPS 时的响应时间。
QPS 解释
QPS : Query Per Second 每秒查询率。是一台查询服务器每秒能够处理的查询次数。在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。
为了达成预期的测目的,需要需要在jmeter中建立一个测试计划。因为本次测试仅要求完成对fnng.cnblogs.com 和 tt-topia.rhcloud.com 两个博客首页请求,因此只需要使用HTTP Request Sampler 即可。
建立测试计划
启动jmeter后,jmeter会自动生成一个空的测试计划,用户可以基于该测试计划建立自己的测试计划。
添加线程组
一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可。
jmeter中 每个测试计划至少需要包含一个线程组,当然也可以在一个计划中创建多个线程组,那么多个线程组之间又会怎样的顺序执行(串行还是并行)?在测试计划下面多个线程是并行执行的,也就是说这些线程组是同时被初始化并同时执行线程组下的Sampler的。
线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
准备时长: 设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。
循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
设置合理的线程数对于能否达到测试目标有决定性的影响。在本例中,要求得到网站首页在20 QPS 负载情况下的响应时间,如果如果线程数量设置的过小,则很可能无法达到设定的QPS要求。另外,设置合理的循环次数也很重要,除了上面介绍的固定循环次数与永远外;也可以灵活的选择设定测试运行时间。勾选“调度器”,进行调度器配置。
添加HTTP请求
添加完成线程组后,在线程组上右键菜单(添加--->Sampler--->HTTP请求)选择HTTP请求。对于jmeter来说,取样器(Sampler)是与服务器进行交互的单元。一个取样器通常进行三部分的工作:
向服务器发送请求
记录服务器的响应数据
记录相应时间信息
一个HTTP请求有着许多的配置参数,下面将详细介绍:
名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。
端口号:目标服务器的端口号,默认值为80 。
协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
Content encoding :内容的编码方式,默认值为iso8859
路径:目标URL路径(不包括服务器地址和端口)
自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。
Use keep Alive : 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。
Use multipart/from-data for HTTP POST :当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。
同请求一起发送参数 : 在请求中发送URL参数,对于带参数的URL ,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的 名称1=值1)。
同请求一起发送文件:在请求中发送文件,通常,HTTP文件上传行为可以通过这种方式模拟。
从HTML文件获取所有有内含的资源:当该选项被选中时,jmeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行Parse 并获取HTML中包含的所有资源(图片、flash等),默认不选中,如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,这样,只有能匹配指定正则表达式的URL指向资源会被下载。
用作监视器:此取样器被当成监视器,在Monitor Results Listener 中可以直接看到基于该取样器的图形化统计信息。默认为不选中。
Save response as MD5 hash? :选中该项,在执行时仅记录服务端响应数据的MD5值,而不记录完整的响应数据。在需要进行数据量非常大的测试时,建议选中该项以减少取样器记录响应数据的开销。
在这里我们添加两个HTTP请求,分别用于对fnng.cnblogs.com 和 tt-topia.rhcloud.com发送请求。
设置QPS限制
本次性能测试的需求中提到测试的目的是“了解博客的首页在负载达到20 QPS时的响应时间”,因此需要控制向博客首页发送请求的负载为20QPS。
一种可行的方法是逐步调整测试计划中的线程计算的数量以及为取样器(Sampler)添加定时器(Timer),以使HTTP取样器发出的请求的QPS保持在20个左右。但这种方法耗时耗力,需要经过多次尝试才能达到;另一方法,完全通过设置定时器来控制QPS,一旦取样器的响应时间发生改变(网络环境发生改变),就需要重新调整定时器的等待时间。
Jmeter提供了一个非常有用的定时器,称为Constant Throughput Timer (常数吞吐量定时器),该定时器可以方便地控制给定的取样器发送请求的吞吐量。
右键点击fnng.cnblogs.com ,弹出菜单(添加--->定时器--->Constant Throughput Timer)选择Constant Throughput Timer
Constant Throughput Timer 的主要属性介绍:
名称 :定时器的名称
Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这里的值应该是1200 。
Calculate Throughput based on :有5个选项,分别是:
This thread only :控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以矣线程的数量。
All active threads : 设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。
All active threads in current thread group :设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和All active threads选项的效果完全相同。
All active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。
All cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。
如上图,该元件仅作用于fnng.cnblogs.com ,设置定时器的Target throughput为1200/分钟(20 QPS),设置Calculate Throughput based on 的值为All active threads 。
当然,Constant Throughput Timer只有在线程组中的线程产生足够多的request 的情况下才有意义,因此,即使设置了Constant Throughput Timer的值,也可能由于线程组中的线程数量不够,或是定时器设置不合理等原因导致总体的QPS不能达到预期目标。
添加监听器(Listener)
脚本的主要部分设置完成后,需要通过某种方式获得性能测试中的测试结果,在本例中,我们关心的是请求的响应时间。
Jmeter 中使用监听器元件收集取样器记录的数据并以可视化的方式来呈现。Jmeter有各种不同的监听器类型,因为上HTTP请求,我们可在添加聚合报告,更为直观的查看测试结果。
添加聚合报告,右键点击线程组,在弹的菜单(添加--->监听器--->聚合报告)中选择聚合报告。
添加结果树
图形结果树:以结果树的形式显示测试结果。
Thread Name: 线程组名称
Sample Start: 启动开始时间
Load time: 加载时长
Latency: 等待时长
Size in bytes: 发送的数据总大小
Headers size in bytes: 发送头大小
Body size in bytes: 发送数据的其余部分大小
Sample Count: 发送统计
Error Count: 交互错误统计
Response code: 返回码
Response message: 返回信息
Response headers: 返回的头部信息
运行脚本
添加完成聚合报告后,我们来运行脚本,稍后介绍聚合报告的参数。
在运脚本之前,我们来查看一下,各个元件的参数设置:
---------------------------------------------------------------
线程组:
线程数:20
准备时长: 10
循环次数:10
---------------------------------------------------------------
HTTP请求:
名称:fnng.cnblogs.com。
服务器名称或IP :fnng.cnblogs.com
端口号:80
Implementation : java
协议: http
方法: GET
路径:/
---------------------------------------------------------------
常数吞吐量定时器:
Target throughput(in samples per minute):1200.0
Calculate Throughput based on :All active threads
---------------------------------------------------------------
点击工具栏上的运行按钮,或者点击菜单栏“ 运行--->启动 ” 或者使用快捷键ctrl+r 来运行程序。
聚合报告分析
查看聚合报告的运行结果:
查看结果树结果:
Term |
Definition |
Label |
每个JMeter的element(例如 HTTP Request)都有一个Name属性,这里显示的就是Name属性的值 |
#Samples |
表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100 |
Average |
平均响应时间——默认情况下是单个Request的平均响应时间,当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间 |
Median |
中位数,也就是50%用户的响应时间 |
90%line |
90%用户的响应时间 |
Min |
最小响应时间 |
Max |
最大响应时间 |
Error% |
本次测试中出现错误的请求的数量/请求的总数 |
Throughput |
吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了Transaction Controller时,也可以表示类似LoadRunner的Transaction per Second数 |
KB/sec |
每秒从服务端接收到的数据量,相当于LoadRunner中的Throughput/sec |
相关推荐
1. **JMeter的基本概念:** - **线程组**:线程组是JMeter测试计划的基础单元,代表一组并发执行任务的虚拟用户。 - **采样器**:采样器用于发送请求到服务器,如HTTP请求、FTP请求或数据库查询。 - **监听器**:...
为了更好地利用JMeter服务器监控组件,你需要了解一些基本的性能测试概念,比如吞吐量、响应时间、并发用户数等,以及如何根据监控结果调整测试参数。同时,学习如何解读和分析监控数据也是至关重要的,这将有助于找...
综上所述,《jemter视频-(30讲)》这份教程旨在帮助初学者快速掌握JMeter的基本用法及其在实际项目中的应用技巧。从简单的安装配置到复杂的功能测试,每一步都提供了详尽的操作指导,非常适合希望提升自己技能水平...
在熟悉基本操作后,可以进一步配置定时器、监听器、断言等,以满足更复杂的测试需求。 JMeter的运行环境要求相对较低,只需要符合标准的JVM 1.4或更高版本。它可以在多种操作系统上运行,包括Unix、Windows和...
- 线程组(Thread Group):最基本的线程组类型,用于模拟一组用户执行相同的任务。 - 设置前线程组(Set Up Thread Group):特殊的线程组类型,用于执行测试前的准备工作。 - 清理后线程组(Tear Down Thread Group)...
根据提供的文件信息,我们可以将其中的关键知识点归纳如下: ...JMeter是一款强大的开源负载测试工具,通过上述知识点的学习,可以更好地掌握JMeter的基本使用技巧,为后续更深入地学习打下坚实的基础。
首先,"jmeter绿色安装包"是指一个包含了JMeter所有必要文件的压缩包,用户只需解压即可使用,无需经过复杂的安装步骤。这种安装方式对于那些希望在不同计算机上快速部署JMeter或避免系统注册表修改的用户尤为方便。...
在本实验报告中,我们将探讨如何使用Apache JMeter这一强大的性能测试工具。JMeter是开源软件,特别适用于Web应用程序的压力和负载测试。本实验旨在帮助学生理解JMeter的基本操作,包括安装、创建测试计划、设置参数...
这个压缩包"apache-jmeter-5.6.2.zip"包含了JMeter的5.6.2版本,这是一个广泛使用的性能测试工具,它允许用户模拟大量并发用户对目标系统进行访问,以评估其稳定性和性能。 在解压后,我们可以看到以下文件和目录:...
本文档旨在帮助初学者了解JMeter的基本概念,并通过一系列实际案例来深入学习其高级特性。 #### 二、入门基础知识 ##### 2.1 JMeter安装 **2.1.1 安装JDK** - **环境需求**: JMeter 需要在 Java 环境下运行,因此...
1. **README.md**:这个文件通常包含项目的基本信息、安装指南和使用说明。 2. **printable_docs**:可能包含可打印的文档,如PDF格式的手册,用于离线参考。 3. **bin**:这个目录通常存放可执行文件和脚本,如启动...
在进行JMeter自动化接口用例时,我们首先要理解其基本架构。JMeter的工作原理是模拟多个用户并发访问服务器,通过构建测试计划来模拟真实的用户行为。测试计划由一系列元素组成,包括线程组、采样器、监听器、断言、...
`DBManager.java`是一个数据库管理工具类,它封装了对SQLite数据库的基本操作,比如创建表、插入数据、查询数据、更新数据和删除数据等。使用这样的工具类可以使代码更整洁,提高了代码的可读性和可维护性。下面是...
下面我们将详细探讨剪切板操作的基本原理以及如何在编程中实现它们。 首先,我们要理解剪切、复制和粘贴的概念: 1. **剪切**:剪切操作会将选中的内容移动到剪切板,并从原始位置删除。这相当于物理世界中的剪刀...
4. 设定脚本运行频率,告警方式等基本参数,进行接口的日常监控。 5. 每日进行接口脚本的维护更新,接口异常的处理。 五、运行时机设计 该方案的运行时机设计包括: 1. 开发自测:开发同学开发完新的接口后,不...
1. **线程组**:这是测试计划的基本单元,每个线程组代表一组虚拟用户。你可以设置线程的数量、启动时间和延迟时间。 2. **采样器(Samplers)**:它们负责发送请求到服务器,如HTTP请求、FTP请求、JDBC请求等。 3...
Apache JMeter是一款强大的开源性能测试工具,主要用于模拟多种并发用户执行不同的操作,以此来测试Web应用服务器的性能和稳定性。...通过熟悉其安装过程和基本操作,你将能够有效地评估和优化你的应用程序性能。
1. README.md:这是项目的说明文件,通常包含项目的基本信息、安装指南、使用教程等内容,对于快速理解和上手JMeter 5.5非常有帮助。 2. lib:这个目录存放了JMeter 5.5的核心库文件,这些库文件支持JMeter的各种...
#### 一、JMeter的安装与配置(Linux环境) **1. 下载JMeter** - 访问官方下载页面:`http://jmeter.apache.org/download_jmeter.cgi` - 选择适合版本进行下载。 **2. 解压** - 使用`tar`命令解压下载的文件:`...