JMeter压力测试入门教程[图文]

Apache JMeter是Apache组 织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通 过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

1. 下载JMeter
官方网站下载最新版本: http://jmeter.apache.org/download_jmeter.cgi ,目前最新版是Apache JMeter 2.9
使用JMeter依赖jdk,建议安装jdk 1.6版本
Linux下安装jdk参考文章:http://www.linuxeye.com/Linux/Linux-install-JDK.html
Windowns下安装jdk同Linux下安装类似,这里就不介绍了。

2. 启动JMeter
这里就在win下进行,图形界面较为方便
在目录apache-jmeter-2.9\bin 下可以见到一个jmeter.bat文件,双击此文件,即看到JMeter控制面板。

3. 运行预准备
现在来对LinuxEye进行压力测试,压力测试对象为随机的几个网页链接,这几个链接是写在一个文本文件中的,在压力测试的时候会随机读取。
1) 建立一个线程组,如下图

为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户)来访问LinuxEye。
线程属性部分中,线程数是启动多少个线程,我这里填写的是10,Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒,比如如果填写10,那么10/10=1表示10个线程间每隔1秒钟请求网站。
循环次数:60个线程运行完毕算是一次,循环次数就是这样的一个请求过程运行多少次,我这里测试就填写的是2.
每次修改一个设置后,别忘记了保存一下。

2) 设置请求服务器、压力链接等信息
接下来很自然的是,我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。
右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,弹出如下图界面:

路径:
假如你只是对一个链接进行压力测试,直接填写一个链接就ok,比如 http://www.linuxeye.com,但是大多数情况下都不是这样的,我们这里需要多个链接,就如同刚开始讲到的那样,我们要将多个链接保存到一个文本文件中,然后随机读取进行压力测试。我们可以这么做,如图:

在选择一个功能下拉列表中选择_StringFromFile,然后在本机新建一个测试文件C:\Users\root\Desktop\apache-jmeter-2.9\test.txt,在第一行(你也可以不在第一行)的值中填写测试文件的路径,如下图:

 

然后点击“生成”按钮,在生成按钮的左边文本框中将生成一个字符串如:
${__StringFromFile(C:\Users\root\Desktop\apache-jmeter-2.9\test.txt,,,)}
test.txt测试文件中,我们每行写一个URL链接,如下格式:
/command
/linuxrumen
/program
/jianzhan
/command/cat.html
/command/chmod.html
/command/lsattr.html

注意,每行前面并没有http://www.linuxeye.com这样的信息,因为我们在前面已经填写了服务器地址为www.linuxeye.com,这里就没必要再为每个url填写这个相同前缀了;另外,上面的url格式也只是个例子,表示域名后的部分。

这样一来,当我们并非请求的时候,就会从test.txt中随机选择url来进行压力测试。
另外值得注意的一个地方是,如果参数中有中文的情况,运行的时候可能会出现乱码,这个时候就需要注意你在Jmeter中的编码设置与你要请求的网页编码是一致的。

路径文本框下面的选项,可以按默认的就成,Use multipart/form-data for HTTP POST是当请求中有附件的情况,一般情况下都不用选中的。

3) 查看运行结果
鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,如下图:

4. 运行
当然,在运行前,请把所有修改都保存好
运行后的结果表格如下:

各属性如下:
Sample:每个请求的序号
Start Time:每个请求开始时间
Thread Name:每个线程的名称
Label:Http请求名称
Sample Time:每个请求所花时间,单位毫秒
Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
Bytes:请求的字节数
如果Status为叉,那很显然请求是失败了,但如果是勾,也并不能认为请求就一定完全成功了,因为还得看Bytes的字节数是否是所请求网页的正常大小值,如果不是则说明发生了丢包现象,也不是完全成功。

在下面还有几个参数
样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数。
平均:每个线程请求的平均时间
最新样本:表示服务器响应最后一个请求的时间
偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布(这个我不是很理解)。

术语:
1、线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“Test Plan(鼠标右击) -> 添加  ->Threads(Users) -> 线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。
2、取样器(Sampler):可以认为所有的测试任务都由取样器承担,有很多种,如:HTTP请求。
3、断言:对取样器返回的请求结果给出判断是否正确。
4、monitor:它的功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。

转载于:https://www.cnblogs.com/felix-/p/4347134.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET6之MiniAPI(二十九):UnitTest

MiniAPI的单元测试与asp.net web api的单元测试大体是相同的(毕竟都是asp.net core),只是在小细节上有一些差异,文章中会说到这点。本文测试框架是XUnit,Mock框架是Moq,关于这两个框架和库的学习&#xff0…

vue data数据修改_Vue 超清晰思维导图(7张),详细知识点梳理!

Vue思维导图目录MVC与MVVM的区别Vue基本代码结构Vue指令Vue组件class和style动态绑定computed计算属性EventBusfilter过滤器方法Vue是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。(Vue有…

转帖不会乱码的,powershell网络蜘蛛

抓取(爬取)网上信息的脚本程序,俗称网络蜘蛛。powershell中自带了这样的两个命令,【Invoke-WebRequest】和【Invoke-RestMethod】,但这两个命令有时候会乱码。 现在转帖分享, 某个【歪果仁】写的脚本。来源…

Linux上搭建nginx,及简单配置

在上家公司都是运维安装nginx,到新公司后代码开发完成部署测试服务器要求自己装nginx,研究了好久安装好之后,到正式上线还要自己安装,索性把安装步骤自己记载下来(好大一部分都是在网站找的)。一&#xff0…

c语言打开文件并输出,文件的读取,c语言打开文件并输出

文件的读取,c语言打开文件并输出在做数据分析的过程中,经常会遇到文件的读取。我想很多人都在这个环节遇到过问题,所以就把自己掌握的一些文件读取方法记录下来,以及过程中遇到的一些状况和解决方法列出来,以便交流。o…

IOS学习笔记十六(NSString和NSMutableString)

1、NSString和NSMutableString NSString是不变字符串类,有点像java里面的String,NSMutableString是可变字符串类,有点类似java里面的StringBuffer 2、测试demo int main(int argc, char * argv[]) {autoreleasepool {unichar data[6] {97, 98, 100, 1…

产品经理书籍

《结网》 part1 做产品的几个要点:出处、目标、 壁垒、 受益人群、 商业模式、 平台现金牛、战略部署。 一个概念是否可以被有效执行出来比概念的本事更重要 要有坚定的决心更要有合理的发展路线 part2 传说中的风投:(投资你的个人品质和你对…

界面连接数据库

1、获取本机的SQL Server服务器名 private void Form2_Load(object sender, EventArgs e){listBox1.Items.Clear();SQLDMO.Application SQLServer = new SQLDMO.Application();SQLDMO.NameList strServer = SQLServer.ListAvailableSQLServers();if (strServer.Count > 0){f…

Xamarin效果第二十篇之GIS中加载三维白模

在前面文章中简单玩了玩GIS的基本操作、Mark相关、AR和测距,今天再次分享一下N年前就像玩耍的效果;啥也不说了都在效果里:再来看看手机端的效果:1、关于效果我也是偶然见看到了别人实现:https://blog.csdn.net/arcgis_all/article/details/769991042、关于实现就是在三维场景图…

visa虚拟卡生成器_虚拟卡有哪些功能?赶紧了解一下

现在很多人都会有机会出国,或者是直接在国外生活,他们时不时的会到国内办理一些事情,而这个时候为了确保信用卡在使用的时候安全,有些人就会申请使用虚拟信用卡,这样不但可以解决跨国支付的麻烦,从而确保在…

35个Java代码性能优化总结

代码优化的目标是: 1、减小代码的体积 2、提高代码运行的效率 代码优化细节: 1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。…

android编程绘图,Android编程绘图操作之弧形绘制方法示例

本文实例讲述了Android编程绘图操作之弧形绘制方法。分享给大家供大家参考,具体如下:/*** 绘制弧形图案* description:* author ldm* date 2016-4-25 下午4:37:01*/public class ArcsActivity extends Activity {Overrideprotected void onCr…

JS多个对象添加到一个对象中

var obj1 {"qq":10}; var obj2{"mm":2,"nn":3}; var obj3{"xx":1,"yy":5}; obj1.field1 obj2; obj1.field2 obj3; console.log(obj1)转载于:https://www.cnblogs.com/thiaoqueen/p/7111697.html

Caffe cuDNN

Ref: http://jetsonhacks.com/2015/01/20/nvidia-jetson-tk1-cudnn-install-caffe-example/ 转载于:https://www.cnblogs.com/nn0p/p/4351026.html

linux平台之如何查看svn账号

1、平台 在ubuntu 2、如何查看svn账号 1)、 到svn.simple目录 cd ~/.subversion/auth/svn.simple 2)、然后在svn.simple目录下查看文件 这个目录很多文件,我们随便cat/vim一下就可以看到了

C#将dataGridView中显示的数据导出到Excel(大数据量超实用版)

开发中很多情况下需要将dataGridView控件中显示的数据结果以Excel或者Word的形式导出来,本例就来实现这个功能。由于从数据库中查找出某些数据列可能没必要显示出来,在dataGridView中将对应的列隐藏了,这时导出时就会将隐藏的列导出来,显然不是我们所预期的。做法是先将dat…

BeetleX实现MessagePack和Protobuf消息控制器调用websocket服务详解

最近有用户问如何使用BeetleX封装一个基于Protobuf格式的websocket服务并支持控制器调用;其实BeetleX.FastHttpApi是支持Websocket服务和自定义数据格式的,但需要对组件有一定了解的情况才能进行扩展;接下来通过封装一个支持Protobuf和Messag…

vue 获取url地址的参数_2020年 vue常见面试问题总结(干货)!

1.什么是mvvm模式,谈谈你的理解? MVVM - Model View ViewModel,数据,视图,视图模型view 可以通过 事件绑定 的方式影响 model,model 可以通过 数据绑定 的形式影响到view,viewModel是把 model 和…

CSS 定位之绝对与相对

static,relative,absolute,fixed含义 static(静态定位):元素框正常生成。块级元素生成一个矩形框,作为文档流的的一部分,行内元素则会常见一个或多个行框,至于其父元素中。默认值。没有定位,元素出现在正常的流中(忽略…

理解云计算备份与灾难恢复

如今,云计算和用户生态系统有一个新的转变,IT的转化创造了一个独特的“数据需求”环境。这意味着有放在这些工作负荷的详细的信息工作和更大的恢复需求。IT管理人员负责管理他们的备份系统,并必须准备好他们的灾难恢复策略。适当的恢复方法是…