本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html

个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢慢研究和学习,非常值得推荐推荐!!!

 

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(十三)常见问题及解决方法

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

  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. .ashx文件与.ashx.cs

    如果项目是“新建网站”,添加的ashx是没有ashx.cs的:如果是新建"asp.net web 应用程序",添加的ashx是有ashx.cs的. 今天做项目测试遇到一个问题,因为 ...

  2. Spark SQL 函数全集

    org.apache.spark.sql.functions是一个Object,提供了约两百多个函数. 大部分函数与Hive的差不多. 除UDF函数,均可在spark-sql中直接使用. 经过impo ...

  3. 对比损失(Contrastive Loss)学习【转载】

    转自:https://blog.csdn.net/autocyz/article/details/53149760 https://www.tensorflow.org/tutorials/repre ...

  4. windows下使用sed和tee命令

    最近需要在winowds slave上设置构建app和sdk,至于如何在windows slave上构建c/c++代码生成sdk(dll,lib之类)和apk(exe文件),请参考我的另外一篇博客,即 ...

  5. 数据库页已标记为 RestorePending,可能表明磁盘已损坏。要从此状态恢复,请执行还原操作。

    错误提示: 消息 829,级别 21,状态 1,第 1 行 数据库 ID 15,页 (1:21826) 已标记为 RestorePending,可能表明磁盘已损坏.要从此状态恢复,请执行还原操作. 引 ...

  6. unity3d-游戏实战突出重围,第一天

           此游戏是根据书上一步一步敲的.是一个入门级别的游戏.         游戏状态机 说到游戏状态机,就不得不提到开发中最常用的MVC模式. MVC模式的全称是Model-View-Cont ...

  7. git 语法

    $ git init  // 初始化一个Git仓库 会生成一个.git目录 $ git status   // 查看仓库的状态 $ git add .   // 将所有修改添加到暂存区 $git ad ...

  8. 1.display:flex布局笔记

    /*display:flex布局方式主要运用于垂直居中的效果*/ 一.Flex译为Flexible Box(弹性盒子),任何一个容器都可以指定为Flex布局 注:设置为Flex布局之后,子元素的flo ...

  9. JavaScript学习笔记之call和apply

    前端的知识面太广了,想要记住所有知识点是不可能的,所以将这些学过的记录下来,随时都可以翻开来参考 1.call方法 调用一个对象的一个方法,call(this, arg1, arg2,argN);用来 ...

  10. HTML5 缓存

    一.在html/htm文件中声明缓存,声明方式: <!DOCTYPE HTML> <html manifest="demo.appcache">...3 & ...