作为一款小巧易用的性能测试工具,JMeter不仅免费开源而且功能强大、易于扩展,如果有一定Java开发基础的话还可以在JMeter上做扩展开发新的插件等,几乎能满足各种性能测试需求,本文用于收集使用JMeter进行性能测试过程中的一些技巧、特性或经验等。


JMeter脚本调试技巧--使用镜像服务器

 在调试和修改测试计划的过程中,通常会为采样器增加一些额外的设置,比如设置额外的HTTP头、cookie管理器或认证管理器等,但当设置了这些内容后,sampler发出的请求是否就与预期一致呢?当然可以通过添加监听器来看查采样器发出的HTTP请求,但如果调试过程中并不想真正地把请求发送给被测应用或暂时还没有被测试应用环境该如何办呢?Jmeter 提供了一个名叫HTTP Mirror Server的组件,HTTP Mirror Server可以启动一个镜像服务器,该服务器把所有接收到的请求原封不动地返回,这样就可以看到发出请求的具体内容了。使用步骤如下:

1、右键点击“工作台”-->非测试元件-->HTTP Mirror Server

设置端口号、最大线程数和队列长度,这三个参数的含义如下,然后点击启动按钮以启动镜像服务器。

Port:Port on which Mirror server listens, defaults to 8081.
Max Number of threads:If set to a value > 0, number of threads serving requests will be limited to the configured number, if set to a value =0 a new thread will be created to serve each incoming request. Defaults to 0
Max Queue size:Size of queue used for holding tasks before they are executed by Thread Pool, when Thread pool is exceeded, incoming requests will be held in this queue and discarded when this queue is full. This parameter is only used if Max Number of Threads is greater than 0. Defaults to 25

2、调试的时候,将HTTP请求发送到localhost:8081(也就是Mirror Server启动的端口)即可从监听器的响应查看请求了。


JMeter分布式测试

利用JMeter进行负载测试的时候,使用单台机器模拟测试超过1000个线程(根据请求的类型和机器配置或更少)的并发就有些力不从心,在执行的过程中,JMeter自身会自动关闭,要解决这个问题,可以使用分布式测试,运行多台机器运行所谓的Agent来分担JMeter自身的压力,并借此来获取更大的并发用户数。

配置步骤如下:
    1、在所有期望运行JMeter作为Load Generator的机器上安装JMeter,并确定其中一台机器作为Controller,其他的机器作为Agent。然后运行所有Agent机器上的JMeter-server.bat文件——假定我们使用两台机器192.168.0.1和192.168.0.2作为Agent。
    2、在Controller机器的JMeter安装目录下找到bin目录,再找到JMeter.properties这个文件,使用记事本或者其他文字编辑工具打开它;在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其中的127.0..0.1 表示运行JMeter Agent的机器,这里需要修改为“remote_hosts=192.168.0.1:1099,192.168.0.2:1099”——其中的1099为JMeter的Controller和Agent之间进行通讯的默认RMI端口号。
    3、保存文件后重新启动Controller机器上的JMeter.bat,并进入Run -> Remote Start菜单项,在这里可以看到远程启动菜单下面有192.168.0.1,192.168.0.1两个IP地址,如果要让某个Agent执行,可以点击该Agent的IP地址就可以,或者点击全部运行。
    4、可以将用作Controller的机器同时当作Agent使用,则同样需要修改JMeter.properties文件,将Controller的IP地址写入。同时,这个时候,需要打先打开Controller电脑中JMeter下bin目录下的jmeter-server.bat,然后再打开JMeter.bat,此时,进入Run -> Remote Start菜单,可以看到Controller也作为远程机器进行运行。

命令行方式:

1、在jmeter远程服务器上运行JMETER_HOME/bin/jmeter-server (UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows)脚本。

2、在jmeter客户端上修改/bin/jmeter.properties文件,找到属性"remote_hosts",使用JMeter远程服务器的IP地址作为其属性值。可以添加多个服务器的IP地址,以逗号作为分隔。
例如:
#remote_hosts=127.0.0.1
remote_hosts=9.115.210.2:1099,9.115.210.3:1099,9.115.210.4:1099
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=1099

3、在jmeter客户端上启动jmeter:
./jmeter -n -t plan.jmx -r #选项-r表示远程启动(remote) jmeter客户端会自动向jmeter远程服务器上分发测试计划。

jmeter -n -t  plan.jmx -l result1.jtl  -j dddss.logog -R 192.168.0.2  #只运行192.168.0.2

执行分布式测试时,Controller、Agent和被测试系统之间检查满足下面的一些条件:

1、所有的防火墙应该关闭。
   2、所有的Agent都是在同一个子网中。
   3、确保Agent与待测服务器以及Controller之间都能连通。
   4、确保各个安装的jMeter、JVM的版本都是一致的,不同版本的Jmeter可能不会协同工作。

另外JMeter分布式测试可能还会有下面这些限制:


JMeter参数化取值规律---CSV Data Set Config

  • 一个线程循环一次或多次:只取第一个值
  • 三个线程循环一次或多次:只取第一、二、三个值
  • 允许多列取值,多列时,参数名写多个并用逗号分隔
  • 当同一个参数名被CSV参数化同时又是全部变量名时,取CSV中的值

JMeter使用点滴的更多相关文章

  1. jmeter随笔(11)--上传文件接口出错

    点击标题下「飞测」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期 ...

  2. jmeter随笔(10)-中文url编码问题

    坚持分享,坚持总结,技术需要时间的积累和练习,对jmeter实践的点滴的记录,这里分享交流,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 1技巧1:后台数据h ...

  3. jmeter随笔(5)--断言中正则表达式的特殊字符问题和中文乱码显示问号的问题

    最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 问题:今天QQ群一朋友遇到jmeter的 ...

  4. jmeter随笔(4)--中文url编码问题

    最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 技巧1:中文url编码问题 问题:我们抓 ...

  5. jmeter随笔(3)-从csv中获取带引号的数据详情

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

  6. Jmeter4.0分布式测试时启动Jmeter.server时报错

       最近又开始研究Jmeter,将新版本4.0下载下来体验,准备远程分布式测试,又出现一些问题,废话不多说,直入主题把! Windows 系统启动Jmeter 4.0的JmeterServer.ba ...

  7. jmeter csv中获取带引号的数据详情

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

  8. Jmeter元件——JSON Extractor后置处理器

    场景使用 json extractor后置处理器用在返回格式为json的HTTP请求中,用来获取返回的json中的某个值.并保存成变量供后面的请求进行调用或断言等. 使用方法 1.常规操作 路径:选择 ...

  9. Jmeter做读取csv接口测试

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

随机推荐

  1. PowerDesigner12逆向生成oracle数据表时,错误解决

    1.用PowerDesigner12建模,在Database—>Generate Database (或者用Ctrl+G快捷键)来生产sql语句,却提示“Generation aborted d ...

  2. thinkphp的mvc理解

    ThinkPHP支持多层设计. .模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层等不同的模型层可以在模块目录下创建Model,L ...

  3. 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)

    转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...

  4. javaWeb项目中web.xml的xsd( XML Schemas Definition)文件

    <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://w ...

  5. IOS杂谈

    1 IOS名称是iPhone Operating System 的缩写,原本这个系统名为iPhone OS,意思是iPhone 操作系统. 2 IOS的开发环境是Xcode.Xcode就成为了iPho ...

  6. POJ3264Balanced Lineup 线段树练手

    题目意思:给定Q(1<=Q<=200000)个数A1,A2,```,AQ,多次求任一区间Ai-Aj中最大数和最小数的差 #include <iostream> #include ...

  7. 【bzoj1051】 [HAOI2006]受欢迎的牛 tarjan缩点判出度算点数

    [bzoj1051] [HAOI2006]受欢迎的牛 2014年1月8日7450 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B ...

  8. jq查找父类元素三个函数的区别

    parent是找当前元素的第一个父节点,parents是找当前元素的所有父节点 parent().parents()与closest()方法两两之间有类似又有不同,本篇简短的区分一下这三个方法.通过本 ...

  9. Oracle基本常用命令

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

  10. js:数据结构笔记8--集合

    集合:唯一性,无序性: 基本结构: function Set () { this.dataStore = []; this.add = add; this.remove = remove; this. ...