JMeter使用点滴
作为一款小巧易用的性能测试工具,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使用点滴的更多相关文章
- jmeter随笔(11)--上传文件接口出错
点击标题下「飞测」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期 ...
- jmeter随笔(10)-中文url编码问题
坚持分享,坚持总结,技术需要时间的积累和练习,对jmeter实践的点滴的记录,这里分享交流,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 1技巧1:后台数据h ...
- jmeter随笔(5)--断言中正则表达式的特殊字符问题和中文乱码显示问号的问题
最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 问题:今天QQ群一朋友遇到jmeter的 ...
- jmeter随笔(4)--中文url编码问题
最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 技巧1:中文url编码问题 问题:我们抓 ...
- jmeter随笔(3)-从csv中获取带引号的数据详情
最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...
- Jmeter4.0分布式测试时启动Jmeter.server时报错
最近又开始研究Jmeter,将新版本4.0下载下来体验,准备远程分布式测试,又出现一些问题,废话不多说,直入主题把! Windows 系统启动Jmeter 4.0的JmeterServer.ba ...
- jmeter csv中获取带引号的数据详情
最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...
- Jmeter元件——JSON Extractor后置处理器
场景使用 json extractor后置处理器用在返回格式为json的HTTP请求中,用来获取返回的json中的某个值.并保存成变量供后面的请求进行调用或断言等. 使用方法 1.常规操作 路径:选择 ...
- Jmeter做读取csv接口测试
最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...
随机推荐
- oracle 10g 学习之多表查询、分组函数(6)
笛卡尔集 l 笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 l 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. 自连接 select m.las ...
- Java Hour 30 Weather ( 3 )
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 30 上回终点 Model 这里有一些java bean 的 风格约 ...
- Sonar+Hudson+Maven构建系列之二:迁移Sonar
摘要:由于昨天在一台机器上安装的东西太多了,导致Linux机器上非常卡,一台Linux负担了jira, fisheye, confluence, sonar, hudson, mysql 等等,本来已 ...
- 查看APP用到的图片方法
把APP对应的APK文件下载到电脑上,然后把扩展名修改为zip,然后进行解压,就可以看了.
- node Later定时任务
var later = require('later'); later.date.localTime(); var basic = {h: [15], m: [40], s: [0]}; var co ...
- MATLAB学习笔记(十一)——MATLAB图形用户界面设计
(一)菜单设计 一.建立用户菜单 1.概况: 用户菜单一般含有一级菜单和二级菜单,乃至多级菜单.每一级菜单又包含多个菜单项.建立菜单可以使用uimenu函数. 2.uimenu函数调用: %建立一级菜 ...
- sql server存儲過程語法
-- 变量的声明,sql里面声明变量时必须在变量前加@符号 DECLARE @I INT -- 变量的赋值,变量赋值时变量前必须加set SET @I = 30 -- 声明多个变量 ...
- Web安全性测试总结
一.工具扫描 目前web安全扫描器针对 XSS.SQL injection .OPEN redirect .PHP File Include漏洞的检测技术已经比较成熟. 商业软件web安全扫描器:有I ...
- 寒假D3 A Find the Lost Sock
Alice bought a lot of pairs of socks yesterday. But when she went home, she found that she has lost ...
- HDU3987 Harry Potter and the Forbidden Forest(边数最少的最小割)
方法1:两遍最大流.一遍最大流后,把满流边容量+1,非满流边改为INF:再求最小割即为答案. 我大概想了下证明:能构成最小割的边在第一次跑最大流时都满流,然后按那样改变边容量再求一次最小割,就相当于再 ...