jmeter与apache测试网站并发

news/2024/5/14 2:48:30/文章来源:https://blog.csdn.net/ssdfsfdf/article/details/50907043

 本文主要介绍性能测试中的常用工具jmeter的使用方式,以方便开发人员在自测过程中就能自己动手对系统进行自动压测和模拟用户操作访问请求。最后还用linux下的压测工具ab做了简单对比。

1.      Jmeter相关概念简介:

JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。
Jmeter每个任务都由测试计划 组成,每个测试计划又包含了各种elements,通过不同的elements之间的组合来完成测试计划。一般常用的elements如下:

thread group:包含一组线程,每个线程独立地执行测试计划。

sampler:采样器,有多种不同的sample实现,用来发起各种请求,如http请求,jdbc请求,javaTest请求等等。

logic controller:逻辑控制器有多种不同的实现,可以决定每个sample的执行顺序。

listener:有多种不同的实现,主要用于统计测试接话运行中的数据并展示,如可以进行图形化方式展示响应时间。

timer:定时器,有多种不同的实现,可用作每个请求见的停顿时间。

assertions:断言,有多种不同实现,可以测试sample请求后返回的内容是否符合期望值。例如可以判断html返回的内容是否符合期望。

configuration elements:配置元素,主要用作对sample的请求的参数做配置。

         由于每个controller可以相互嵌套,并且具有作用域(如配置元素只在最近嵌套的一个controller中生效),所以通过上述几个元素的相互组合就可以组装出不同的测试计划。

2.      应用实例:

a)        场景一:多用户并发数压测系统。

这个场景中,100个用户并发访问系统,每个用户循环10次访问系统。

         首先在jmeter新建一个测试计划,然后如下图所示把各个元素新建完毕。(图标旁边都是各elements的实例命名)

         接着,对各个元素的配置进行设置:

i. 100并发:这个是一个线程组,进行如下配置:

在本例中设置了100个线程进行测试,RampUpPeriod是在制定秒数内均匀地把线程启动完毕,设置0则是同时启动,循环次数为1.

ii.    循环控制器:这是一个循环类型的逻辑控制器,它设置了其作用范围内的行为均循环10次——每个线程将循环发起10次http请求。循环控制器配置如下:

iii.  HTTP请求:这是一个Sampler,是最本次测试中最核心部分,负责发起http请求。在该http sampler中,可以设置:服务器地址、访问路径、访问参数、请求方式(Get/post/etc..)等属性。因为该sampler嵌套在循环控制器内,所以将会循环10次发起请求。部分配置如下:

Figure1 http采样器配置

iv.  响应断言:这个是response断言,可以设置响应条件,然后满足断言的话返回成功或失败,后续统计结果可以用到该值。配置如下(本例子中的success是http返回的response data结果,所以只要包含success就判断断言为true):

Figure2 断言配置

v.    http请求参数设置:这是配合httpsampler使用的,就是为了单独把需要频繁配置的内容写到这里,配置方式和http sampler类似。其参数生效作用于在于最近一个嵌套控制器中。

vi.  Summery Report:这是一个listener,它对测试计划中的sampler发起的请求进行统计,可以对断言成功的部分统计也可以全部统计。效果如下:

Figure3 summery report报告

因为本例只有1个http sampler,所以结果第一行就是该sampler的统计结果。

Samples表明有1000个请求发起了,Average是平均响应时间(ms),Throughput是吞吐量,其余参数望文生义基本可以明白,具体可查看jmeter参考手册。

vii.  图形结果:这是另一个listener,它对统计的结果进行图标展示,是和SummerReport相独立的另一项统计,效果如下:

Figure4 图形结果报告

图例参数基本和SummeryReport中的数据一致

         这样,测试计划就完成配置了,然后就是进行测试计划启动了。

         点击工具栏的 或者菜单栏的运行>启动,测试计划开始执行。执行完成后,就可以看到Figure3,Figure4的图标结果了。

         从结果可以看到,本次测试共发起了1000个http请求,平均每个请求的时间是24毫秒,吞吐量是318.1/秒

b)        场景二:多用户登录多步骤访问系统。

这个场景中,2个用户分别先登录系统,然后静止1秒,再依次访问2个页面。

按上面的步骤先把测试计划配置好:

Figure5测试计划2

在这个测试计划中,有2个线程组A和B,每个线程组各代表1个用户,每个用户首先各自在知识库登陆页面登陆,然后跳转到会员中心,最后访问机器列表。

这个测试计划引入了cookie管理器,这个管理器可以在登陆后把用户的cookie保存到线程中。同时在cookie管理器你可以另外设置cookie。

还引入了仅一次控制器,这个控制器可以保证线程在多次循环跑得情况下只登陆一次。

另外,登陆Fragment和页面访问Fragment是2个独立的模块,他们可以分别被2个线程组引用,达到复用的目的而不需要为2个线程组各自设置请求。

具体详情可以在附件的jmeter测试计划文件中了解到。

 

通过以上的基本要素,你就可以为你的应用进行基本访问行为的模拟和并发测试了。还是很方便的。

 

3.      Ab(ApacheBench)对比

Ab也是apache下的另一个压测工具。Ab压测的并发结果和jmeter的并发测试结果会有怎么样的联系呢,我们可以对比下。在下面的例子中,在一个tomcat服务器上运行了一个简单的servlet,该servlet只是睡眠100毫秒,然后返回success给response。

Jmeter和Ab的测试结果如下表所示:

Figure6 jmeter和ab的并发压测对比

其中红色的是有错误出现,并且结果不太稳定没有继续往下再压。

可以看到,在线程数100以下时,jmeter的avg(每个线程的平均响应时间)和ab的Time per request,throughput与request per second基本是一致的,但是之后就开始相差比较大了。具体原因未明,也许是jmeter有更多的东西需要处理和基于gui的缘故,有知情者请不吝赐教。但是,如果jmeter每个线程的循环数设置到无限时候,数据显示性能就会有所提升。

综上所述,我们一般所说的QPS,TPS,对应到jmeter应该就是throughout,对应到ab应该是requestper second,结合2者,就能大致推算出应用的吞吐量大概在哪个范围了。在本例中应该在1200~1400左右。

 

最后再小结下。

本文主要了简述了jmeter的基本使用方式,并结合2个场景讲解了测试计划如何配置,为开发使用做了入门介绍。最后又对一个demo应用,在jmeter和ab的压测下,对结果进行了比较。最后再利用下stackoverflow的一段问答介绍两者的使用场景:

Jmeter告诉你每个请求实际上耗费多长时间。AB只是简单的用数学方式统计平均值。所以从准确性来说,jmeter比ab更准确,更多如数据处理。但是ab的速度更快,更轻巧。如果性能测试的目的在于更真实的表现被测应用,那么jmeter更佳。但如仅仅是用最少的机器资源产生最多的访问请求,那ab适合……

 

参考资料:

jmeter手册.pdf(中文版官方文档)

jmeter官网(http://jmeter.apache.org/)

cnblogs博客:Jackei(http://blog.csdn.net/jackei)

jmeter应用指南.pdf

转载自:http://blog.csdn.net/ultrani/article/details/8309932

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

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

相关文章

大型网站架构演变过程理解

web动静资源分离 浏览器的请求分为静态资源请求,与动态资源请求。 静态有:html文件,js脚本,css等。 动态有:jsp,php等 http服务器用来处理静态请求,应用服务器处理动态请求。分别可以称为前端…

解决火车头7.6版本无法采集部分https网站处理方法

因为现在大多数网站都采取https,导致很多网站无法采集。那哪行,肯定得有解决办法,今日就说说关于火车头采集器7.6版本无法采集部分https网站处理方法。 火车头7.6版本由于发布时间久远,虽然采集器大部分功能都还可以正常使用&…

destooon7.0装修网站源码带分站多地区带设计报价

源码为destoon7.0系统,整站打包,功能很多,不保证无bug,请测试好演示站; 安装测试环境为:宝塔-php-mysql; 源码带手机版,dt内核,安全稳定,支持二次开发等 下…

响应式行业资讯网类网站织梦mip模板带数据完整无错版

织梦最新内核开发的模板,该模板属于比特币新闻资讯类、博客类企业都可使用, 这款模板使用范围极广,不仅仅局限于一类型的企业,你只需要把图片和产品内容; 换成你的,颜色都可以修改,改完让你耳目…

响应式自适应推土机挖掘机机械类网站织梦模板

响应式自适应推土机挖掘机机械类网站织梦模板介绍 响应式自适应推土机挖掘机机械类网站织梦模板,此套dedecms模板可以作为推土机挖掘机机械类、大型机械重工类网站,比较简洁实用的网站模板,是做推土机挖掘机机械类、大型机械重工类网站朋友的…

织梦最新版后台一键更新网站、更新文档HTML、添加文档卡死500的解决方法

后台操作很卡,经常卡住,解决方法 1、/data/common.inc.php 里面如果是 localhost 的话,把它改成 127.0.0.1 2、把 /dede/templets/index_body.htm 25到41行,删除 3、检查 /include/common.inc.php 文件最下面的代码是不是这样的 …

我想创建自己的网站,买好服务器和域名后应该怎么做?应该怎么搭建服务器?怎么配置服务器?

最近双十一,阿里云服务器搞活动,心血来潮买了个服务器和域名。可自己完全不会,真是很痛苦的事情。。。各种百度,各种查,下面我来说说我的个人经历,希望对大家有所帮助。 我想创建自己的网站,买…

个人网站或APP遭遇到DDOS攻击怎么办?

之所以写这篇文章,是因为笔者网站遭到DDOS攻击,从遭遇到的那一刻直到最后恢复,心情复杂,感觉凉凉,真的有坐以待毙的感觉。 背景 首先说一下背景,笔者做了一个影视站,爱美剧tv,这个网…

【phpcms-v9】怎样给网站前台的个别页面更换新的模板?

[html] view plain copy print ? 1.第一步:将美工新设计的模板放置到phpcms/templates/default/模块目录名/模板文件名.html 如: phpcms/templates/default/content/category_new.html 如: phpcms/templates/default/content/category_download_new.h…

(推荐)高并发高流量网站架构详解

Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导 向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但Web2.0以用户为导向的理念,使得新 生的网站…

大型网站系统架构的演化

前言 一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计…

大型网站架构演变和知识体系

原文链接:http://www.blogjava.net/BlueDavy/archive/2008/09/03/226749.html 之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有…

免费jsp空间建站攻略【eatj】【入门】【教程】

我的网站-免费jsp空间建站攻略 1 申请免费的jsp空间 1.1 进入 http://www.eatj.com 1.2 申请注册 1.3 注册成功 1.4 打开确认邮件,点击确认链接 1.5 确认成功 1.6 登录页面 1.7 登录 1.8 关键信息 2 网站设计 2.1 文件结构 2.2 web.xml 2.3 index.jsp 2.…

[转贴] 著名社交网站LinkedIn的Java架构技术

在JavaOne 2008的会议上,著名社交网站LinkedIn的开发者做了2个关于LinkedIn网站的架构技术的演讲,目前这两个演讲的PPT已经可以下载了。下载地址如下: LinkedIn - A Professional Social Network Built with Java™ Technologies and Agile …

XAMPP修改Apache默认网站目录htdocs

方法/步骤 打开文件xampp\apache\conf\httpd.conf 在httpd.conf文件中找到DocumentRoot "I:/xampp/htdocs" 步骤阅读 3 修改httpd.conf文件中的内容为DocumentRoot "D:/www" 4 在D盘新建一个www文件夹,重启apache,将文件移到w…

JSP+SQL企业门户网站

<% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> 代码已经上传github&#xff0c;下载地址&#xff1a; https://github.com/21503882/companydoor <!DOCTYPE html PUBLIC "-//W3C//DTD…

java+mysql+servlet论坛网站BBS

管理员子系统功能划分 管理员子系统完成本论坛各种信息的管理与维护的功能&#xff0c;管理员子系统包括的主要功能模块有权限管理、发帖、回帖、修改个人用户信息、发帖状态设置。管理员子系统功能模块图如图4-1。 代码已经上传github&#xff0c;下载地址&#xff1a;https:/…

基于Spring+SpringMvc+Hibernate的JSP+MYSQL保健品销售网站

基于SpringSpringMvcHibernate的JSPMYSQL保健品销售网站 1.包含源程序&#xff0c;数据库脚本。代码和数据库脚本都有详细注释。 2.课题设计仅供参考学习使用&#xff0c;可以在此基础上进行扩展完善 代码已经上传github&#xff0c;下载地址 https://github.com/21503882/sa…

基于java的志愿者交流网站

技术&#xff1a;Java、JSP等 摘要&#xff1a; 随着社会的发展&#xff0c;人民自身素质水平的提高&#xff0c;志愿活动越来越成为大家实现自身价值&#xff0c;投身社会建设的一项主流活动。一项有意义的志愿活动不仅有利于人文社会的建设&#xff0c;还能使志愿者的综合素质…

基于Java的婴幼儿产品销售网站

技术&#xff1a;Java、JSP等 摘要&#xff1a; 婴幼儿产品销售是指各婴幼儿产品生产企业通过电子商务网站的形式&#xff0c;利用网络进行的多种形式销售。是将传统的线下商品销售业务通过与互联网的结合&#xff0c;形成线上线下双渠道的销售模式&#xff0c;即商家利用现有的…