作为一款小巧易用的性能测试工具,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. 设计模式学习之抽象工厂(Abstract Factory,创建型模式)(3)

    假如我们的苹果和香蕉还分为北方的和南方的,那么苹果Apple和香蕉Banana就是抽象类了,所以采集的方法就应该抽象的 第一步: 我们会创建北方的苹果NorthApple类和SourthBanana类 ...

  2. 使用asp.net从零开始制作设计网站---转载

    首先感谢提供此教程的朋友,可以给大家学习的机会,很有用,留着好好学.如下正文: 1. 申请域名 2. 购买空间 3. 备案 4. 使用photoshop完成设计与切图  5. 使用dreamweave ...

  3. sdut 2162:The Android University ACM Team Selection Contest(第二届山东省省赛原题,模拟题)

    The Android University ACM Team Selection Contest Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里 ...

  4. 在Windows中使用MinGW编译X264

    转自:http://www.cnblogs.com/xiongjiaji/archive/2012/06/08/2541265.html 参考:http://ayobamiadewole.com/Bl ...

  5. 铭飞MCMS内容管理系统完整开源版J2EE代码

    当前版本:4.6.0铭飞MS官网:http://ms.mingsoft.net官网同时提供一键运行版本下载,请步移官网....QQ交流群号1:221335098很多人说铭飞MCMS是大天朝国唯一完整开 ...

  6. Failed to load or instantiate

    Failed to load or instantiate: add this code in your xml: xmlns:android="http://schemas.android ...

  7. 【Android】Android之Action Bar

    Action Bar是在窗口上指示用户位置的组件,同时给用户提供导航和操作.使用Action Bar可以让你的应用在不同配置的屏幕上看起来比较一致.在开始之前,先了解一些相关的术语: Action B ...

  8. 微信SDK开发学习

    public class MainActivity extends Activity { // 应用程序的id,就是在网上开发平台创建应用的appid public static final Stri ...

  9. Xamarin提示Build-tools版本过老

    Xamarin提示Build-tools版本过老 错误信息:G:\XamarinDemo\Xamarin.Forms-master\packages\Xamarin.Android.Support.V ...

  10. easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法

    easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库&quo ...