jmeter作为一个开源的纯Java性能测试工具,工作中极大的方便了我们进行接口、性能测试,但使用过程中也遇到了很多的问题,下面就记录一下自己遇到的问题,后续会不断更新。。。

1、获取日志

在使用jmeter过程中,如果想获得更详细的日志,可以修改jmeter\bin\jmeter.properties文件中的一个属性:所有log_level.jmeter的后缀由info改为debug,如下:

2、jmeter安装

安装使用jmeter时候不需要设置classpath以及class变量,只需要默认安装好JDK即可(通常情况下),然后解压jmeter安装包,启动jmeter\bin\jmeter.bat程序即可;

因为jmeter是以Java_jar的方式启动,而且会忽略该变量,这对所有Java程序都适用。

3、请求/响应数据显示乱码

有时候在发送请求/查看响应数据时,服务端接收到的请求中包含乱码,导致无法解析报错,解决方法有如下几种:

请求数据显示乱码,可以在请求中如下设置:

返回数据包含乱码时,可以修改jmeter\bin\jmeter.properties文件中的一个属性:将encoding=后面的编码格式改为utf-8,如下:

PS:此模块更详细的原因说明,可参考这篇博客:http://blog.csdn.net/cakushin7433/article/details/53039566

4、内存OOM(OutOfMemoryError:内存溢出)

在执行压力测试时候,有时候会遇到OutOfMemoryError这样的异常;JMeter是一个纯Java开发的工具,内存是由java虚拟机JVM管理;如果出现了内存溢出的问题,

可以通过调整JVM内存相关的参数进行优化。

具体过程如下:

①找到jmeter.bat文件,也就是我们启动jmeter的脚本:

②打开jmeter.bat文件,对一下这些配置项进行编辑:

③参数调整:

调整堆内存的大小:

将默认的set HEAP=-Xms512m -Xmx512m,调整为set HEAP=-Xms1024m -Xmx1024m;

调整堆内存中新生带的大小:

将默认的set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m,调整为set NEW=-XX:NewSize=256m -XX:MaxNewSize=256m;

调整堆内存中永久带的大小:

将默认的set PERM=-XX:PermSize=64m -XX:MaxPermSize=128m,调整为set PERM=-XX:PermSize=128m -XX:MaxPermSize=256m;

调整后重启jmeter,问题一般可以得到解决(参数的调整不能一概而论,具体根据测试机的硬件配置来决定)。

5、Listener使用技巧

listener作为一个收集sampler的结果数据和呈现结果的文件,其本身会在每次sampler运行完成后执行一次,即一个test plan中的listener数量越多,运行时listener本身带来的资源消耗

就越大(尤其是view results in table以及view results tree等)。

因此实际执行test plan时,应首先禁用不需要的listener,再开始执行;更好的方式是每次运行时将生成的结果写入结果文件中,方便以后用不同的listener展现保存的结果数据。

当然,在并发量较大的情况下,一般的测试机限于配置等因素,无法支撑较大的并发数,可以用以下的方法来进行测试,方法如下:

去掉listener,为sampler添加断言(一般是响应断言),根据断言结果来判断请求是否成功,测试报告以plugins插件中的报告形式或文本形式写入文件中来提升测试效率。

PS:这个方法是我认识的一个妹子她之前说的一种方法,感兴趣的可以去看看她的博客,链接:http://www.cnblogs.com/sunshine2016/

6、调试test plan

很多测试人员在初始进行性能测试时,脚本都是录制得到的,但录制的脚本一般都包含很多对本次测试来说无用的sampler,以及录制的sampler需要重新修改参数等内容,才能使用。

所以调试test plan就很有必要,常用的有以下2种方法:

①使用listener观察sampler的请求和相应

录制的脚本,一般都需要剔除无用的sampler,然后修改参数,进行调试,才能用于测试执行,一般用于调试的listener是结果树,可以在测试计划中将线程组的数量修改为1,然后执行。

listener显示的每一个sampler结果为绿色(表示通过),但jmeter仅根据http返回码来判断sampler执行是否成功,这样无法判断sampler语义上的错误;因此,一般都是在sampler

中插入对应的检查点(Assertion:断言),根据返回的内容,来判断sampler是否真正成功。

②使用http Mirror server观察sampler发出的请求

在调试和修改sampler时,经常会为其增加一些额外的设置,例如额外的信息头、cookie管理器等,但设置完成后直接运行脚本进行测试,并不能保证请求真的和我们预期的一致。

如果不想将请求发送给被测应用,可以使用http mirror server组件(http镜像服务器)。

http mirror server可以启动一个镜像服务器,其可以把所有接收到的请求原封不动的返回,这样就可以查看发出的请求的具体内容。

使用方法如下:

点击工作台,右键添加→http mirror server,如有必要修改服务器端口(一般修改为localhost:8080,方便调试),然后启动镜像服务器;

其次修改需要调试的sampler,将其请求发送到mirror server启动的端口,运行测试计划,即可以从listener中查看响应数据。

PS:其实http mirror server更大的作用是检查浏览器是否发送了特殊的http头,启动mirror server,使用浏览器访问该server,则可以在返回页面看到浏览器发送请求的完整内容。

jmeter(十三)常见问题及解决方法的更多相关文章

  1. NHibernate常见问题及解决方法

    NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...

  2. JMeter:响应结果乱码解决方法

    JMeter:响应结果乱码解决方法 我们经常使用jmeter做接口测试或者正则匹配 看到的响应结果存在乱码,这是小白经常会问的问题,这是因为jmeter会按照jmeter.properties文件中, ...

  3. C#用ado.net访问EXCEL的常见问题及解决方法

    C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问. ado.net访问excel的实例: OleDb ...

  4. Nacos 常见问题及解决方法

    Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...

  5. <转>jmeter(十三)常见问题及解决方法

    本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...

  6. linux启动jmeter(二十三),执行./jmeter.sh报错解决方法(转载)

    转载自 http://www.cnblogs.com/yangxia-test 1.l-bash: ./jmeter.sh: Permission denied解决办法:jmeter.sh的执行权限改 ...

  7. 安装scrapy框架的常见问题及其解决方法

    下面小编讲一下自己在windows10安装及配置Scrapy中遇到的一些坑及其解决的方法,现在总结如下,希望对大家有所帮助. 常见问题一:pip版本需要升级 如果你的pip版本比较老,可能在安装的过程 ...

  8. AppFuse 3常见问题与解决方法

    非常长一段时间没做SSH项目了.近期抽出时间看了一下升级到3.x的appfuse,对新版本号使用过程中出现的一些问题进行了排查.汇总例如以下.以备后用.本文原文出处: http://blog.csdn ...

  9. python网络爬虫(1)——安装scrapy框架的常见问题及其解决方法

    Scrapy是为了爬取网站数据而编写的一款应用框架,出名,强大.所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板. 其实在Linux和 Mac安装,就简单的pip命令即可: pip i ...

随机推荐

  1. html中用href 实现点击链接弹出文件下载对话框

    浏览器支持能够打开的格式,他都会默认直接在线打开(比如word或图片),不支持的格式,他就会弹出下载提示.最好是做成.rar格式.xlsx的文件.浏览器自带下载功能. <body> < ...

  2. 如今领占主导地位的19种AI技术!

    如今领占主导地位的19种AI技术! http://blog.itpub.net/31542119/viewspace-2212797/ 深度学习的突破将人工智能带进全新阶段. 2006 年-2015 ...

  3. Android NDK编译之undefined reference to 'JNI_CreateJavaVM'

    利用Android NDK编译动态库,在C文件中调用了两个JNI函数:JNI_GetDefaultJavaVMInitArgs和JNI_CreateJavaVM.编译的时候始终报以下错误: XXX: ...

  4. oracle存储函数实例

    CREATE OR REPLACE PROCEDURE "PROC_INS_DAY_DOCTOR_LL"(v_date in VARCHAR) is --PROC_INS_DAY_ ...

  5. Django之验证

    1. 滑动验证码补充说一下 极验科技:https://docs.geetest.com/install/deploy/server/python#下载SDK按照人家的实例操作即可 1.pip inst ...

  6. < meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />的意义

    X-UA-Compatible是神马? X-UA-Compatible是IE8的一个专有<meta>属性,它告诉IE8采用何种IE版本去渲染网页,在html的<head>标签中 ...

  7. 【第二篇】SAP ABAP7.5x新语法之OPEN SQL

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:SAP ABAP7.5x系列之OPEN SQL ...

  8. plsql备份表---只是表---不包含表数据

    写这个的同时还在备份,表的数据进度很慢,数据太大了. 用的工具是plsql 导出表:点击    tool工具  ---> export user object 导出用户目标  ----> ...

  9. CentOS7查询系统版本内核信息

    1. 查看版本号 查看CentOS的版本号命令: [root@localhost ~]# cat /etc/centos-releaseCentOS Linux release 7.4.1708 (C ...

  10. February 6th, 2018 Week 6th Tuesday

    To be is to be perceived. 存在即被感知. How to interpret this quote? Maybe it means that everything in you ...