jmeter常用面试题(Jmeter测试地图服务性能(二)--对地图服务进行压力测试)

本文目录
Jmeter测试地图服务性能(二)--对地图服务进行压力测试
***隐藏网址***
当然地图服务也有着它的特殊性,对于一般的网页服务用户是打开,浏览,跳转,关闭这些步骤。而对于一个地图服务来说用户除了以上的操作外还会不停的去放大缩小、拖拽地图。因此页面上的数据也会不停的改变所以我们要充分考虑其特殊性来设计压力测试。
1.创建一个测试计划,自定义其名称和注释,并将测试计划文件保存在文件目录下。
2.添加线程(组),设置线程组参数。线程组模板多样而且支持插件拓展,本文选取steping thread group作为例子。
名称: 线程组的名称
注释: 线程组注释
采样器错误后执行的动作: 分为继续、开始下一个进程循环、停止线程、停止测试、立刻停止测试五种。常用的为继续和停止测试两种。
在Steping Thread Group线程组中一下参数需要设置:
This group will start: 本次测试中将启动的最大线程数。
First wait for: 启动第一个线程之前等待的时间。
Then start: 第一次启动的线程数。
Next add: 启动后每次增加的线程数。
Threads every: 两次增加线程数的时间间隔。
Using ramp-up: 增加线程数的时间。
Then hold load for: 增加到最大线程数后持续的时间。
Finally stop: 停止过程中每次减小的线程数。
Threads every: 两次减小线程数的时间间隔。
3.添加测试请求,并设置参数。
***隐藏网址***
服务器名称或IP:填写ArcGIS server 对应的服务器名称或IP地址,要保证测试客户机和服务器网络通畅。
***隐藏网址***
***隐藏网址***
4.设置ArcGIS自定义参数
同请求一起发送的参数:
F: 返回类型,支持html | json | image | kmz四种格式,我们请求的是图片,选择f=image即可;
Bbox: 地图的左下角坐标和右上角坐标,排列顺序是《xmin》,《ymin》, 《xmax》, 《ymax》。例如bbox=-104,35.6,-94.32,41;
Size: 返回图片的大小,宽度和长度,例如:size=600,550;
imageSR: 请求图片的坐标系统;
format: 请求图片的格式,有以下几种:png | png8 | png24 |jpg | pdf | bmp | gif | svg | png32
layers: 请求图片的图层,有四个关键词:show(显示)hide(隐藏)include(包括)exclude(不包括);例如:show:1(表示显示第一层数据),同样hide:1(表示隐藏第一层数据);
layer Definitions: 表示获取满足当前条件的数据,相当于where条件或者是Filter;例如:layerdefs=0:COM1=’COPPER’(表示第0层,字段COM1中的值等于“COPPER”的所有要素);
transparent: 透明度,只对png格式有效;
5.通过Bbox参数,模拟用户移动、放大缩小地图。
***隐藏网址***
填写随机网格数据配置参数
变量名称: CSV文件中的表头名称,用英文逗号隔开
忽略首行: 选择true
在设置请求中添加Bbox参数,将四个坐标参数使用${}引用,填写格式为 ${XMin},${YMin},${XMax},${YMax} 。勾选编码选项
6,添加监听器收集测试结果。
添加监听器,配置监听器输出的文件路径。
启动jmeter,查看测试结果。
jmeter循环控制器的总结(一)
1,交替控制器
交替控制器下的请求主要和线程组下的请求或者其他控制器下的请求交替运行。例如:
@1,我们创建一个线程组,循环5次,如图所示:
@2,在线程组下添加一个交替控制器,里面加入3个请求,在线程组下加入一个请求,如图所示:
@5,再次运行,查看结果:
总结:交替控制器类似于代数中的分离同类项。(A+B+C) M = (A M + B M +C*M),你理解了吗?
2,一次控制器
一次控制器不管怎么循环,只运行一次。
我们可以在@5的基础上添加一个仅一次控制器,运行如图所示:
3,随机控制器
顾名思义,随机控制器就是对其下的请求随机运行,可以是任意一个:如图:
4,简单控制器
简单控制器其实没任何作用,就是一个分组,下边可以添加请求,也可以嵌套其他控制器。
5,随机顺序控制器
随机顺序控制器是该控制器下的所有的请求都执行,但是先后顺序随机。随机控制器是指每次循环随意执行其中一个请求
6,循环控制器
最常用的一个控制器,没什么特别之处,输入循环次数,按照请求顺序依次执行循环次数。
7,事务控制器
事务控制器并没有啥实质性的作用,和简单控制器的作用差不多,分组。Generate Parent Sample:如果选中,则生成样本作为其他样本的父项,否则样本将作为独立样本生成。使用根据自己需求使用。
nclude duration of timer and pre-post processors in generated sample:是否在生成的样本中包括计时器,预处理和后处理延迟。默认值为false。一般不建议选择,因为选择会把一些额外时间算入总时间
勾选则会把其他时间算入事务总数:
jmeter-获取系统最大并发数
问题:有一个页面,需要测试一下最大支持多少用户并发?
此时需计算的是最大用户并发数,强调的是同时操作,也可以理解为同时发起请求;
针对这个问题,我们可以通过rps定时器或阶梯加压线程组测试每秒最大的请求数;
首先需要导入jmeter-plugins插件 ,然后去初始化需要用到的插件
在平衡状态下,并发数=RPS*响应时间
a)使用jp@gc - Throughput Shaping Timer (吞吐量成形计时器,调节rps的定时器);
设置线程组中线程数为50,ramp-up时间为1s,永远循环;
同时在请求下面加Throughput Shaping Timer定时间,rps由1增加到400/s;
测试最终运行时间取 线程组运行时间 与 定时器时间的最小值;
设置后我们需要添加几个性能测试中常用的监听器:
添加监听器Hits per Second(每秒请求数)
观察HPS走势,HPS在140的时候持续了十几秒,随后HPS稳定在100
添加监听器 Transaction per second
TPS在48/s稳定了十几秒,然后稳定在30/s
添加监听器 jp@gc - Response Times Over Time
平均响应时间在3s以内
在比较稳定的情况下,最大rps=140/s,平均响应时间=1.6s,则最大并发=140*1.6=224,也就是224个线程同时启动可满足1s内140/s HPS压力值
b)使用阶梯加压线程组
功能如下:
This group will start 100 threads :设置线程组启动的线程总数为400个;
First,wait for N seconds :启动第一个线程之前,需要等待N秒;
Then start N threads :设置最开始时启动N个线程;
Next,add 100 threads every 2 seconds,using ramp-up 10 seconds :每隔2秒,在10秒内启动100个线程;
Then hold load for 40 seconds :启动的线程总数达到最大值之后,再持续运行40秒;
Finally,stop 100 threads every 0 seconds :同时停止100个线程;
设置阶梯线程组各配置项后,再添加各个监听器后观察,发现得出的tps,rps,平均响应时间与添加rps监听器测试出的结果基本一致
下面可以来验证一下,线程组的线程数设置为224,其它值可随意,(如,设置定时60s,循环次数设置为100,因为并发数=rps*响应时间 是在平衡状态下得出的结论,所以运行时间不能太短)
添加监听器Hits per Second,Transactions per Second,Response Times Over Time 查看这些指标是否和上面得出的结果一致(预期应该是满足的)
我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。右键点击我们刚创建的线程组,在弹出的菜单中,选择添加-》Sampler-》Http请求,弹出如下图界面:
路径:
***隐藏网址***
在选择一个功能下拉列表中选择_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:请求的字节数
在下面还有几个参数:
样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数
平均:每个线程请求的平均时间
最新样本:表示服务器响应最后一个请求的时间
偏离:服务器响应时间变化、离散程度测量值的大小。

更多文章:
evaluation状态是好是坏(evaluation和review有什么区别)
2025年12月27日 22:30
idea写的代码eclipse能用吗(怎么把Intelij IDEA的工程变为Eclipse工程,希望有人解答)
2025年6月9日 15:00
insert命令注意哪些语法问题(sql语句中INSERT的使用问题)
2026年8月12日 10:30
fundamental音标(英语leap forward怎么翻译)
2025年11月21日 04:00
scum建房子(SCUM0.8版本悬空房建造攻略悬空房怎么建)
2026年7月11日 03:30
virtue中文(谁知道V打头的英文单词呀 要加中文意思越多越好 谢谢谢谢)
2025年12月17日 23:00
application是什么类型(Excel VBA中APPLICATION是什么意思)
2026年2月18日 21:30
疫情期间应急方案企业模板(公司疫情防控措施方案范文(精选5篇))
2026年1月3日 21:00
es6 阮一峰(来自一位react新手的react入门须知)
2025年8月26日 09:30
common翻译(common ,ordinary,general,usual,normal,natural区别)
2026年2月18日 14:30
discuz自适应模板下载(请问discuz论坛下载的模板安装问题)
2025年9月17日 01:45













