【后台测试】手把手教你jmeter压测

 ◆版权声明:本文出自胖喵~的博客,转载必须注明出处。html

  转载请注明出处:http://www.cnblogs.com/by-dream/p/5611555.html linux

 

 

  我知道我早晚是要踏上了后台测试之路的,只是没想到来的这么忽然。新接手了一个项目,在初版发出后,产品须要作运营活动拉量,由于我担忧忽然的流量涌入是否会对后台形成压力呢?所以决定作一下压测:apache

  下面就一步一步的介绍我从0到1的压测过程吧。windows

  我下载的是 apache-jmeter-2.13,由于这个包下载下来通用linux和windows的,因此咱们如今windows下打开它。api

  

  直接点击bat,打开jmeter:浏览器

  添加一个线程组:缓存

 

  添加完成以后,先设置这两项:性能

  

 

   而后右击左边的线程组,添加一个http请求测试

  

  添加完成以后,咱们能够看到右边有了能够编辑的地方:优化

  这里打算压测这样一个url,这个url请求是 http://cm.browser.qq.com/test_xianwu/api/buy 

  也就是拉取App的首页的信息

 

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

  见下图,咱们须要把url分红两部分填写

 

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

 

  保存完毕以后呢,咱们须要,在压测的过程当中,去查看请求的结果,所以须要添加一个“查看结果树”

 

  添加完毕以后的样子:

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

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

 

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

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

  既然咱们知道了请求返回失败的特征是list为空,那么就增长一个断言,让他直接帮咱们筛选出请求失败的样本。

  一样右击,“添加”-“断言”-“响应断言”,添加完成以后,咱们添加一个substring:

  这里说一下location是什么鬼。由于在请求成功的状况下,返回的list当中的信息当中有location,因此咱们能够简单的认为,当location字段存在的时候,这个请求是成功的。

  这个时候咱们再运行一下,看看结果树当中会不会帮咱们辨别出来:  

 

  咱们能够看到红色就是失败的个数。数量有点多,因此咱们须要借助Aggregate Graph

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

  这样咱们就能够不断的去改变线程数,而后去观察失败率和吞吐量,获得一个当前请求的一个最佳的相应数。

  在测试的过程当中我发现,若是手动去强制中止的话,最后的几条请求会由于手动中止而抛出异常,所以咱们决定让他去请求2w次,2w次结束收自动中止。那么咱们就需求在开始的地方设置采集次数:

  这里须要注意线程数和循环次数的乘积等于一个固定值就能够,而后你能够变换两个乘数,最终我选择了线程数分别是十、20、50、80、100、200,获得的结果是:

  最后生成图表,就能够看出来性能的瓶颈,下面是结果:

  

   从图中咱们不难看出响应时间延时很大,且错误率很是高,而且最大qps才能打到50出头,因此初步怀疑这是有性能问题的,最终反馈给开发,开发加入了缓存机制,而且增长了机器,通过优化以后,咱们再看看数据对比:

  很明显优化后的效果显著,达到了预期的效果。

  这就是我第一次简单压力测试的通过,看完后是否是你也能够作了。

相关文章
相关标签/搜索