此文转自微信公众号:自动化性能测试

JMeter常见问题及解决方法

一、录制不到以html结尾的请求

在使用代理服务器录制脚本的时候,可能会出现html结尾的请求录制不到的问题。这是因为浏览器为了提升访问速度,将这些请求获取到的html资源作为静态资源缓存在本地了,所以只要打开过一次主页,接下来每次打开主页时,都无需再发送这些请求。对于性能测试来说,主页中这些html资源,是有必要反复进行压测的。因此录制脚本的时候,必须将这些请求录制下来。

解决方法:

只要每次录制前,清空浏览器缓存就可以了。

(建议使用抓包方式做脚本)

二、响应数据中有乱码

使用录制下来的测试脚本进行测试的时候,查看结果树,可能会出现响应数据中有乱码。

解决方法:

1、找到安装目录/bin下面的jmeter.properties配置文件,如下:

2、打开jmeter.properties配置文件,找到“sampleresult.default.encoding”这个配置项,将原来的默认值“ISO-8859-1”修改为“utf-8”即可,修改后的配置如下所示:

3、重启jmeter,重新执行测试。这时响应数据中就不会有乱码了。

三、请求数据中有乱码

设置HTTP请求,参数中的值显示为中文,但系统接受数据时,中文显示为乱码;在“查看结果树”中,查看HTTP请求,请求参数中的中文数据显示乱码。

解决方法:

在HTTP请求页面,Content encoding设置为utf-8即可。

四、JMeter内存OOM

执行测试的时候,可能会出现OutOfMemoryError这样的异常。JMeter是java实现的工具,内存是由java虚拟机JVM管理的。如果出现了内存溢出的问题,可能调整JVM内存相关的参数进行优化。

步骤如下:

1、在window下,找到jmeter.bat启动脚本;

2、编辑jmeter.bat脚本,找到下面这些配置项。

3、参数调整

可以调大堆内存的大小:

将默认的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,执行测试,问题一般能得到解决。需要说明的是,参数的取值不能一概而论,也要根据大家电脑的硬件配置实际选取。

五、测试机配置不能满足压测要求

Jmeter压测过程中,由于测试机配置有限,CPU、内存都可能是存在瓶颈。如果使用很大的并发进行测试时,就可能会感到程序比较卡,这时候就无法继续增加压力了。

解决方法:

搭建Jmeter分布式集群,远程启动测试。

步骤如下:

1、在分布式集群中,脚本编辑、控制的机器叫做“client”,实际运行Jmeter测试脚本,负责向被测服务器发请求的机器,称为“server”。网络要求

2、server和client需要网络互通。找几台机器作为 server,然后client和server相互ping彼此的ip地址,如果能ping通,说明网络是ok的。

和client一样,server可以是linux系统,也可以是windows系统。 client上安装的JMeter版本最好和client保持一致。

在本文演示中,作为client机器,ip是172.31.132.242。

作为server机器,ip是172.17.3.212。

3、演示中,因为server是linux系统的,我们需要去官网下载linux系统对应的JMeter安装文件,解压即可。

进入安装目录:apache-JMeter-2.13/bin下,启动server端程序,执行:./JMeter-server (windows下启动JMeter-server.bat)

如果server机器有多个ip,启动的时候可以指定一个,如:

./JMeter-server-Djava.rmi.server.hostname=172.17.3.212

配置和启动client端安装目录的bin文件夹下,找到JMeter.properties文件,如下:

打开文件,并找到remote_hosts=127.0.0.1这一行,修改为server服务器的列表,如下所示,如果server有多个,那么多个机器地址之间使用英文逗号分隔:

其实,client自己可以同时作为一个server机器,向服务端发送请求(前提是client上也启动了JMeter-server程序),所以也可以把client的ip加上,添加自己只需要写127.0.0.1即可。本文的演示中,先不添加client自己,所以使用的是第一个配置。

如果client有多个ip,也可以在启动的时候指定一个。 如果是windows系统,可以修改jmeter.bat启动脚本,在以下的命令最后,加上如下的配置,写明client这台机器的ip地址即可。

修改完毕后保存,启动Jmeter,打开界面。

执行分布式测试

打开client端的JMeter界面,点击运行-远程启动,里面能看到配置好的server端的机器列表。

此时可以启动一个远程机器,也可以选择下面的“远程全部启动”,同时启动所有的server。点击后,client端会自动和server端的服务建立连接,下发测试脚本到server端; 等server端的测试全部结束后,会将测试结果汇总到client端,我们在client端配置的监听器就能看到测试结果了。

Jmeter--常见问题及解决办法的更多相关文章

  1. WebView加载本地html、js文件常见问题及解决办法

    声明:基于android studio平台,php语言搭建服务器 目录: 一.JavaScript脚本语言没有反应 二.alert无法弹出 三.html页面之间不能跳转 四.屏幕缩放没有达到预期效果 ...

  2. FineUIMvc 常见问题及解决办法

    Ø  简介 FineUIMvc 是基于 jQuery 的专业 ASP.NET MVC/Core 控件库,本文主要介绍 FineUIMvc 的常见问题及解决办法. 1.   View 中无法调用 Htm ...

  3. rsync @ERROR: auth failed on module backup 解决思路及附录rsync常见问题及解决办法

    昨晚小版本上线,使用rsync往服务器上传文件时,client报如下异常: @ERROR: auth failed on module backup rsync error: error starti ...

  4. fetch使用的常见问题及其解决办法

    摘自: https://segmentfault.com/a/1190000008484070 fetch使用的常见问题及其解决办法 javascript wonyun 2月25日发布 |   0 收 ...

  5. PHPmailer发送邮件时的常见问题及解决办法

    来源:http://www.chinastor.com/a/jishu/mailserver/0G392262014.html 使用PHPmailer发送邮件时的常见问题总结: 一,没有定义发送邮箱$ ...

  6. 【小梅哥SOPC学习笔记】SOPC开发常见问题及解决办法集锦

    SOPC开发常见问题及解决办法集锦 一.Symbol 'NULL' could not be resolved 近期在评估使用NIOS II处理器进行项目的开发,我使用的软件是Quartus II 1 ...

  7. Vmware vSphere常见问题及解决办法

      Vmware vSphere常见问题及解决办法 日期:2012-6-29来源:51cto Vmware vSphere 12 1. 虚拟机文件被锁,无法正常 power on 故障状态: 启动虚拟 ...

  8. fetch的常见问题及其解决办法

    摘要: 玩转fetch. 作者:wonyun 原文:fetch使用的常见问题及其解决办法 Fundebug经授权转载,版权归原作者所有. 首先声明一下,本文不是要讲解fetch的具体用法,不清楚的可以 ...

  9. RSYNC @ERROR: AUTH FAILED ON MODULE XXX 解决思路及附录RSYNC常见问题及解决办法

    使用rsync往服务器上传文件时,client报如下异常: @ERROR: auth failed on module XXX rsync error: error starting client-s ...

  10. ecshop安装常见问题及解决办法

    一,Ecshop首页出现报错:Only variables should be passed by referen 最近想安装一个ECSHOP商城上去,老是报错,出现下面这就话: Strict Sta ...

随机推荐

  1. Java 时区转换(UTC+8 到 UTC 等等)

    前言:需要做时区转换,知道北京为UTC+8,东京为UTC+9,世界标准时间为UTC,所以下面的代码是只需要知道时区是+8还是+9还是0就可以了,不需要使用"CTT". " ...

  2. Q:接口与抽象类

    博文回答一下两个问题: 接口和抽象类的区别 选用接口和抽象类的依据 对于问题1: 从java语法的角度上来说,接口的所有成员和方法都是public的,且其方法均为abstract的.直到jdk1.8之 ...

  3. 前端之困 · XSS CookBook

    方法论 发掘漏洞的时间要具体到是检测什么目标了,找 Google 的,和找腾讯的时间肯定不会一样. 至于是如何发现的,不同类型的 XSS 漏洞,可能不尽相同. 反射型 以及一些 DOM 型,一般建议是 ...

  4. HTML中的Head标签学习

    在页面加载完成的时候,标签head里的内容,是不会在页面中显示出来的.它包含了像页面的<title>(标题) ,CSS(如果你想用CSS来美化页面内容),图标和其他的元数据(比如 作者,关 ...

  5. 配置文件出错 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): <!-- mybatis 配置- ...

  6. 对一些ArcGIS for JS的API的一些理解

    1.esri/map map类是每个地图控件中必须引入的类,我们可以通过Map()对地图进行许多的操作,比如修改地图的坐标系.显示级别和初始显示范围等等.   Map有一个类型为GraphicsLay ...

  7. 用SumatraPdf实现PDF静默打印

    原文:https://yutuo.net/archives/24a22d50d6001564.html 之前做一系统,有一个打印PDF文件的需求,需求如下: 能指定打印机 能两面打印 最好能静默打印 ...

  8. sudo的安装

    关于mini版的centos7的是不能直接sudo命令的 下面我来说一下怎么让sudo命令生效 第一步 先切换到root用户: su -    第二步 visudo 给相应用户分配sudo的权限 第三 ...

  9. mysql错误:Statement violates GTID consistency

    在MYSQL中,执行建表语句时CREATE TABLE  aaaa  AS SELECT * FROM menu;  报: 错误代码: 1786Statement violates GTID cons ...

  10. iTextSharp 使用详解(转) 感谢原著作者 .

    TextSharp是一个生成Pdf文件的开源项目,最近在项目中有使用到这个项目,对使用中的经验作一个小结. ITextSharp中相关的概念: 一.Document 这个对象有三个构造函数: 隐藏行号 ...