多语言展示
当前在线:643今日阅读:39今日分享:10

JMeter安装(下载打开)以及基本概念

想必你已经知道Jmeter是用来做啥的了吧?对,JMeter就是用来做性能测试的。JMeter 介绍: 一个非常优秀的开源的性能测试工具。Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能力,jmeter短小精悍一有了使用多台机器同时产生负载的机制。从性能工具的原理划分:Jmeter工具和其他性能工具在原理上完全一致,工具包含4个部分:(1)负载发生器:用于产生负载,通常以多线程或是多进程的方式模拟用户行为。(2)用户运行器:通常是一个脚本运行引擎,用户运行器附加在线程或进程上,根据脚本要求模拟指定的用户行为。(3)资源生成器:用于生成测试过程中服务器、负载机的资源数据。(4)报表生成器:根据测试中霍地的数据生成报表,提供可视化的数据显示方式。性能测试常见的分类:    负载测试:Load Testing    压力测试:Stress Testing    容量测试:Volume Testing
工具/原料
1

JMeter源码包

2

Java安装包和JDK

3

Windows 7

方法/步骤
2

2直接点击bat,打开jmeter:

3

3添加一个线程组:

4

4添加完成之后,先设置这两项:线程属性和循环次数

5

5然后右击左边的线程组,添加一个http请求

6

6添加完成之后,我们可以看到右边有了可以编辑的地方:

7

7这里打算压测这样一个url,这个url请求是 http://cm.browser.qq.com/test_xianwu/api/buy   也就是拉取App的首页的信息

8

8我们直接用浏览器打开是这样的:

9

9见下图,我们需要把url分成两部分填写

10

10这个时候点击保存,保存的文件路径自己指定,我保存到了bin目录下,保存完之后,是一个jmx文件。

11

11保存完毕之后呢,我们需要,在压测的过程中,去查看请求的结果,因此需要添加一个“查看结果树”

12

12添加完毕之后的样子:

13

13这个时候我们点击启动,看看效果吧:

14

14这个时候我们把线程数加大,先加达到100

15

15加完之后,我去App端看了一眼,然后发现首页悲剧了,一片白屏:

16

16这时候我们在网站上去看一下,发现果然,返回的子串当中,list的内容为空了,而这个list就是我们首页要展示出的物品:

17

17既然我们知道了请求返回失败的特征是list为空,那么就增加一个断言,让他直接帮我们筛选出请求失败的样本。  同样右击,“添加”-“断言”-“响应断言”,添加完成之后,我们添加一个substring:

18

18这里说一下location是什么鬼。因为在请求成功的情况下,返回的list当中的信息当中有location,所以我们可以简单的认为,当location字段存在的时候,这个请求是成功的。  这个时候我们再运行一下,看看结果树当中会不会帮我们辨别出来:

19

19我们可以看到红色就是失败的个数。数量有点多,所以我们需要借助Aggregate Graph

20

20添加完成之后,我们启动我们的服务,这个时候就能在这里看到一个大概的数据了:

21

21这样我们就可以不断的去改变线程数,然后去观察失败率和吞吐量,得到一个当前请求的一个最佳的相应数。  在测试的过程中我发现,如果手动去强制停止的话,最后的几条请求会因为手动停止而抛出异常,因此我们决定让他去请求2w次,2w次结束收自动停止。那么我们就需求在开始的地方设置采集次数:

22

22这里需要注意线程数和循环次数的乘积等于一个固定值就可以,然后你可以变换两个乘数,最终我选择了线程数分别是10、20、50、80、100、200,得到的结果是:

23

23最后生成图表,就可以看出来性能的瓶颈,下面是结果:从图中我们不难看出响应时间延时很大,且错误率非常高,并且最大qps才能打到50出头,所以初步怀疑这是有性能问题的,最终反馈给开发,开发加入了缓存机制,并且增加了机器,经过优化之后,我们再看看数据对比:

24

很明显优化后的效果显著,达到了预期的效果。这就是我第一次简单压力测试的经过,看完后是不是你也可以做了。END

推荐信息