使用JMeter对网站并发性测试
目录结构:
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。多的不说了:直接上操作:由于JMeter是使用java开发的,所以运行需要java的运行环境。接触过java的人都知道,java环境的搭建,不是我们现在讨论的东西,所以不会的,自己度娘哈。
1. 下载JMeter
官方网站下载最新版本: http://jmeter.apache.org/download_jmeter.cgi
2. 启动JMeter
首先解压apache-jmeter-2.9,进入bin目录:点击jmeter.bat。启动软件
开始界面:
1) 建立线程。
模拟多用户访问:步骤如下
为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户)来访问web网站。线程属性部分中,线程数是启动多少个线程,比如:我这里填写的是10,Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒,比如如果填写10,那么10/10=1表示10个线程间每隔1秒钟请求网站。循环次数:60个线程运行完毕算是一次,循环次数就是这样的一个请求过程运行多少次,我这里测试就填写的是2。每次修改一个设置后,别忘记了保存一下。
2) 设置请求服务器、压力链接等信息
接下来很自然的是,我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,弹出如下图界面:
路径:
假如你只是对一个链接进行压力测试,直接填写一个链接就ok,比如 http://www.baidu.com,但是大多数情况下都不是这样的,我们这里需要多个链接,就如同刚开始讲到的那样,我们要将多个链接保存到一个文本文件中,然后随机读取进行压力测试。我们可以这么做,如图:
在选择一个功能下拉列表中选择_StringFromFile,然后在本机新建一个测试文件C:\Users\root\Desktop\apache-jmeter-2.9\test.txt,在第一行(你也可以不在第一行)的值中填写测试文件的路径,如下图:
然后点击“生成”按钮,在生成按钮的左边文本框中将生成一个字符串如:
${__StringFromFile(C:\Users\wukong\Desktop\test.txt,,,)}
在test.txt测试文件中,我们每行写一个URL链接,如下格式:
如果地址是:www.quzhuanpan.com.那么。在test.txt中的内容,就是相对地址;如
这样一来,当我们并非请求的时候,就会从test.txt中随机选择url来进行压力测试。
另外值得注意的一个地方是,如果参数中有中文的情况,运行的时候可能会出现乱码,这个时候就需要注意你在Jmeter中的编码设置与你要请求的网页编码是一致的。
路径文本框下面的选项,可以按默认的就成,Use multipart/form-data for HTTP POST是当请求中有附件的情况,一般情况下都不用选中的
3) 查看运行结果
鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,如下图:
各属性如下:
Sample:每个请求的序号
Start Time:每个请求开始时间
Thread Name:每个线程的名称
Label:Http请求名称
Sample Time:每个请求所花时间,单位毫秒
Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
Bytes:请求的字节数
在下面还有几个参数:
样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数
平均:每个线程请求的平均时间
最新样本:表示服务器响应最后一个请求的时间
偏离:服务器响应时间变化、离散程度测量值的大小。
到这里,我们已经做了一个简单的网站并发性测试。
3,分析数据
吞吐量的概念: 一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。
系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间
QPS(TPS):每秒钟request/事务 数量
并发数: 系统同时处理的request/事务数
响应时间: 一般取平均响应时间
(很多人经常会把并发数和TPS理解混淆)
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数/平均响应时间
一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。
从上面的运行结果可以得出,
11个样本的运行总共花费了40882-36703=4179毫秒
平均时间为127毫秒
所以可以大约估计出 并发量为(11/4179)*127=0.3
参考文章链接:
http://blog.csdn.net/zhang_ps/article/details/51345904
使用JMeter对网站并发性测试的更多相关文章
- JMeter并发性测试
JMeter并发性测试 一.JMeter简介 JMeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmet ...
- 用jmeter进行多用户并发压力测试 [转]
近日manager要求对项目进行压力测试,开始对jmeter进行了研究.jmeter是Apache一个开源项目,可对各种项目进行测试,甚至包括junit. 测试要求如下,多用户同时登陆web应用程序, ...
- 用jmeter进行多用户并发压力测试
测试要求如下,多用户同时登陆web应用程序,并进行操作,查看在多用户操作下,程序的performence.恰好,jemter下有个CSV Data Set Config,它用来设定一组参数,以便在向程 ...
- JMeter学习笔记--并发登录测试
账号密码读取文件 1.设置线程数为30,并发用户量就是30个用户同时登录 2.添加同步定时器 添加 Synchronizing Timer 同步定时器,为了阻塞线程,当线程数达到指定数量,再同时释放, ...
- Windows和Linux的Jmeter分布式集群压力测试
Windows的Jmeter分布式集群压力测试 原文:https://blog.csdn.net/cyjs1988/article/details/80267475 在使用Jmeter进行性能测试时, ...
- 使用JMeter进行简单的压力测试
一.压力测试 顾名思义:压力测试,就是 被测试的系统,在一定的访问压力下,看程序运行是否稳定/服务器运行是否稳定(资源占用情况). 比如: 2000个用户同时到一个购物网站购物,这些用户打开页面的速 ...
- JMeter (3) —— JMeter录制脚本并压力测试用户登陆场景以CAS SSO为例(101 Tutorial)
JMeter (3) -- JMeter录制脚本并压力测试用户登陆场景以CAS SSO为例(101 Tutorial) 主要内容 JMeter录制脚本并进行压力测试用户登陆场景,并以CAS SSO单点 ...
- 使用 JMeter 完成常用的压力测试 [转]
讲到测试,人们脑海中首先浮现的就是针对软件正确性的测试,即常说的功能测试.但是软件仅仅只是功能正确是不够的.在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度.影响软件响应速度的 ...
- 使用 JMeter 完成常用的压力测试
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
随机推荐
- Giraph源代码分析(九)—— Aggregators 原理解析
HamaWhite 原创.转载请注明出处!欢迎大家增加Giraph 技术交流群: 228591158 Giraph中Aggregator的基本使用方法请參考官方文档:http://giraph.apa ...
- Pandas对行情数据的预处理
库里是过去抓取的行情数据,间隔6秒,每分钟8-10个数据不等,还有开盘前后的一些数据,用Pandas可以更加优雅地进行处理. 需要把当前时间设置为index df=df.set_index('time ...
- Mongoose JS findOne always returns null
[问题] I've been fighting with trying to get Mongoose to return data from my local MongoDB instance; ...
- @SuppressLint("NewApi")和@TargetApi()的区别
在Android代码中,我们有时会使用比我们在AndroidManifest中设置的android:minSdkVersion版本更高的方法,此时编译器会提示警告, 解决方法是在方法上加上@Suppr ...
- 使用Chrome保存网页为mht文件
一直在使用chrome浏览器,但由于需要将部分网页保存为mht文件,却发现chrome默认不支持.chrome浏览器默认支持2种:单独的html文件,全部: 万能的chrome怎么可能保存不了mht? ...
- Memcached常用命令及使用说明——netcat
数据存储(假设key为test,value为12345) printf "set test 0 0 5\r\n12345\r\n" | nc 127.0.0.1 12000 STO ...
- 用Eclipse进行远程Debug代码 (转)
来自:http://blog.csdn.net/fyq891014/article/details/7534711 首先你本地Eclipse上要有和部署在远程服务器一至的项目,否则debug的时候会出 ...
- 跟踪 Ring3 - Ring0 的运行流程
理论知识 SYSENTER 指令是在 Inter Pentium(R) Ⅱ 处理器上作为"高速系统调用"功能的一部分被首次引用的. SYSENTER 指令进行过专门的优化,能够以最 ...
- bat判断进程是否存在
setlocal enabledelayedexpansion @echo offcd /d D:\work\tool\nginx-1.13.7 set hasit=nofor /F "to ...
- Definitaion of 'utsname' must be imported from module 'Darwin.POSIX.sys.utsname' before it is required
https://stackoverflow.com/questions/34430354/objective-c-gettimeofday-must-be-imported