Apache JMeter是 Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通 过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

1. 下载JMeter

官方网站下载最新版本: http://jmeter.apache.org/download_jmeter.cgi ,目前最新版是Apache JMeter 2.9
使用JMeter依赖jdk,建议安装jdk 1.6版本
Linux下安装jdk参考文章:http://www.linuxeye.com/Linux/Linux-install-JDK.html
Windowns下安装jdk同Linux下安装类似,这里就不介绍了。

2. 启动JMeter

这里就在win下进行,图形界面较为方便
在目录apache-jmeter-2.9\bin 下可以见到一个jmeter.bat文件,双击此文件,即看到JMeter控制面板。

3. 运行预准备

现在来对LinuxEye进行压力测试,压力测试对象为随机的几个网页链接,这几个链接是写在一个文本文件中的,在压力测试的时候会随机读取。
1) 建立一个线程组,如下图

为什么要建立线程组?原因很简单,因为我们要模拟多个线程(用户)来访问LinuxEye。
线程属性部分中,线程数是启动多少个线程,我这里填写的是10,Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒,比如如果填写10,那么10/10=1表示10个线程间每隔1秒钟请求网站。
循环次数:60个线程运行完毕算是一次,循环次数就是这样的一个请求过程运行多少次,我这里测试就填写的是2.
每次修改一个设置后,别忘记了保存一下。

2) 设置请求服务器、压力链接等信息
接下来很自然的是,我们要测试的网站地址是什么?链接是什么?所以现在我们就来设置这些信息。
右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,弹出如下图界面:

路径:
假如你只是对一个链接进行压力测试,直接填写一个链接就ok,比如 http://www.linuxeye.com,但是大多数情况下都不是这样的,我们这里需要多个链接,就如同刚开始讲到的那样,我们要将多个链接保存到一个文本文件中,然后随机读取进行压力测试。我们可以这么做,如图:

在选择一个功能下拉列表中选择_StringFromFile,然后在本机新建一个测试文件C:\Users\root\Desktop\apache-jmeter-2.9\test.txt,在第一行(你也可以不在第一行)的值中填写测试文件的路径,如下图:

然后点击“生成”按钮,在生成按钮的左边文本框中将生成一个字符串如:
${__StringFromFile(C:\Users\root\Desktop\apache-jmeter-2.9\test.txt,,,)}
在test.txt测试文件中,我们每行写一个URL链接,如下格式:

/command
/linuxrumen
/program /jianzhan /command/cat.html /command/chmod.html /command/lsattr.html

注意,每行前面并没有http://www.linuxeye.com这样的信息,因为我们在前面已经填写了服务器地址为www.linuxeye.com,这里就没必要再为每个url填写这个相同前缀了;另外,上面的url格式也只是个例子,表示域名后的部分。

这样一来,当我们并非请求的时候,就会从test.txt中随机选择url来进行压力测试。
另外值得注意的一个地方是,如果参数中有中文的情况,运行的时候可能会出现乱码,这个时候就需要注意你在Jmeter中的编码设置与你要请求的网页编码是一致的。

路径文本框下面的选项,可以按默认的就成,Use multipart/form-data for HTTP POST是当请求中有附件的情况,一般情况下都不用选中的。

3) 查看运行结果
鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,如下图:

4. 运行

当然,在运行前,请把所有修改都保存好
运行后的结果表格如下:

各属性如下:
Sample:每个请求的序号
Start Time:每个请求开始时间
Thread Name:每个线程的名称
Label:Http请求名称
Sample Time:每个请求所花时间,单位毫秒
Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
Bytes:请求的字节数
如果Status为叉,那很显然请求是失败了,但如果是勾,也并不能认为请求就一定完全成功了,因为还得看Bytes的字节数是否是所请求网页的正常大小值,如果不是则说明发生了丢包现象,也不是完全成功。

在下面还有几个参数:
样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数。
平均:每个线程请求的平均时间
最新样本:表示服务器响应最后一个请求的时间
偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布(这个我不是很理解)。

术语:
1、线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“Test Plan(鼠标右击) -> 添加  ->Threads(Users) -> 线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。
2、取样器(Sampler):可以认为所有的测试任务都由取样器承担,有很多种,如:HTTP请求。
3、断言:对取样器返回的请求结果给出判断是否正确。
4、monitor:它的功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等

Mon Jun 24 18:51:18 CST 2013

关于版权

《Linux运维笔记》的博文均基于创作共享的知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议发布。转载本站博文时请务必以超链接形式标明源文出处,否则谢绝一切转载!

转载请保留固定链接: https://blog.linuxeye.com/335.html

转载于:https://www.cnblogs.com/huifeideyu/p/4670234.html

JMeter压力测试入门教程[图文]相关推荐

  1. Jmeter压力测试简单教程(包括服务器状态监控)-----转载自lsoqvle 的博客(https://blog.csdn.net/cbzcbzcbzcbz/article/details/780)

    步骤一  安装Jmeter 我用的版本是3.1版本,为什么是3.1,因为3.2有问题,我也是跑了一段时间后才知道3.2版本太新了还是什么的,有些功能就是不行,在此建议大家,不要轻易使用最新版本,次新版 ...

  2. Jmeter压力测试教程(上)

    JMeter压力测试 一. 简介 1.1优点 1.2缺点 二.安装 2.1下载 2.2解决中文乱码问题 2.5配置环境变量 2.4启动 入门案例 三.线程组相关 3.1 创建多个线程组 3.2 并发和 ...

  3. Apache JMeter压力测试快速入门

    引言 前文<Apache JMeter功能测试快速入门>中,我们在bin目录下点击jmeter.bat启动JMeter时,目光如炬的你一定注意到了命令行窗口中的如下提示: Don't us ...

  4. JMeter压力测试,mongodb教程视频百度云

    2.httpclient4:压测时,每请求一次都创建一个新的链接,(jmeter5.0以前默认关闭了连接复用,5.0上是打开的:即每请求一次都会创建一个新的链接). 从JMeter 5.0开始,当使用 ...

  5. jmeter压力测试linux,JMeter压力测试

    JMeter压力测试 整体目标: 安装虚拟机,并安装一套LAMP(Linux+Apache+Mysql+PHP)待测系统,推荐ECShop(http://www.ecshop.com),基于此进行Jm ...

  6. Android渗透测试Android渗透测试入门教程大学霸

    Android渗透测试Android渗透测试入门教程大学霸 第1章  Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...

  7. 接口测试工具-Jmeter压力测试使用

    接口测试工具-Jmeter压力测试使用 官方描述:jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jm ...

  8. 零基础 Amazon Web Services (AWS) 入门教程图文版(三)

    原则上WDCP安装好了,就可以直接使用了,FTP.MySQL什么的应有尽有.但是本站Amazon AWS -- 免费的午餐不好吃一文中说到过这个问题,直接用WDCP的MySQL会导致EBS的I/O急剧 ...

  9. 零基础 Amazon Web Services (AWS) 入门教程图文版(四)

    自上一篇之后,5天过去了,这篇文章总算是挤出来了... 其实看不看无所谓啦,都说了WDCP非常适合小白,随便折腾.要是折腾的时候遇到什么问题,欢迎留言探讨~ 五.新建站点 登录WDCP后台,首次登录会 ...

最新文章

  1. 《Code Complete》ch.15 使用条件语句
  2. sendmail dead but subsys locked
  3. mysql实现查询最近7天的数据
  4. Oracle-分析函数之排序后顺序号row_number()
  5. TypeScript 里 tsconfig.json 文件的作用
  6. 修改.html 打开方式 注册表,windows 注册表修改资料打开方式
  7. linux条件变量cond,Linux 条件变量 pthread_cond_signal及pthread_cond_wait
  8. 看懂别人的代码,只是成为高效程序员的第一步!
  9. 官方华为鸿蒙os2.0,华为“新平板”6月2日登场,搭载麒麟9000,首发预装鸿蒙OS!...
  10. 设计模式:JavaScript
  11. 微信机器人框架【Python】
  12. 【蓝桥杯国赛真题06】Scratch3D打印 少儿编程scratch蓝桥杯国赛真题和答案讲解
  13. B站商业化驶入深水区
  14. 用了五年 VS Code ,我决定换成 JetBrains……
  15. Uefi ABL读取XBL设置的标志位
  16. TBTOOLS的使用:用TBTOOLS实现多序列比对
  17. 微信小程序开发:调用百度文字识别API实现图文识别
  18. Android项目实战训练:通讯录(一)——获取手机通讯录信息(IMUDGES)
  19. PLL锁相环原理以及Altera FPGA的IP核实现
  20. C++面向对象实验(四)

热门文章

  1. adobe Photoshop CS6 MAC中文版
  2. 【消息中间件】Spring Boot整合RabbitMQ
  3. 大数据学习——spark安装
  4. JFrame 居中显示
  5. 讨论:如何降低Cocos2d开发的游戏包体大小
  6. 用户体验——减少用户的操作!
  7. LDAPit's usage
  8. 如何利用阿里云安全产品加强你的网站防护能力
  9. Microsoft Windows Workflow Foundation 4.0 Cookbook
  10. 使用 Circular Reveal 动画让页面跳转更炫酷