JMeter
作为一个开源的纯 Java 开发的测试工具,工作中极大的方便了我们进行接口、性能测试,但使用过程中也遇到了很多的问题,下面记录几个常见的问题。
一、修改日志
在使用 JMeter
调试脚本的过程中,如果想获得更详细的日志,可以修改 jmeter.properties
文件中的log_level.jmeter
相关的属性,把 info
改为 debug
,如下:
但是,当脚本调试通过后,要记得改回去,不然很影响性能。
二、中文乱码
有时候在发送请求/查看响应数据时,服务端接收到的请求中包含乱码,导致无法解析报错,解决方法有如下几种:
1、请求数据显示乱码
可以在请求中设置编码为 UTF-8 ,如下设置:
2、返回数据包含乱码
可以修改 jmeter.properties
文件中的 sampleresult.default.encoding
属性,改为 utf-8,如下:
三、OOM
内存 OOM(OutOfMemoryError:内存溢出)
在执行压测的时候,有时候会遇到 OutOfMemoryError 内存溢出 问题。
可以通过调整 JVM 内存参数进行优化,是在 jmeter.bat 启动文件中配置的。
以文本方式打开 jmeter.bat,修改以下配置项:
调整堆内存 HEAP 的大小:
- 将默认的
set HEAP=-Xms512m -Xmx512m
,调整为set HEAP=-Xms1024m -Xmx1024m
;
调整堆内存中新生代 NEW 的大小:
- 将默认的
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
,调整为set NEW=-XX:NewSize=256m -XX:MaxNewSize=256m
;
调整堆内存中永久代 PERM 的大小:
- 将默认的
set PERM=-XX:PermSize=64m -XX:MaxPermSize=128m
,调整为set PERM=-XX:PermSize=128m -XX:MaxPermSize=256m
;
修改后重启 jmeter,oom 问题一般可以得到解决(参数的调整不是越大越好,具体根据测试机的硬件配置来决定,循序渐进)。
四、监听器的使用
监听器即 listener ,用来收集 sampler 的结果数据和呈现结果图形,我们最常用的有察看结果树、聚合报告等等。如下图所示:
监听器本身会在每次 sampler 运行完成后执行一次,即一个测试计划中的监听器数量越多,运行时带来的资源消耗就越大(尤其是 察看结果树
和 用表格察看结果
等)。
因此实际执行测试计划时,应首先禁用不需要的监听器,再开始执行;
或者是运行时只启用一种监听器, 并将生成的结果写入文件中,然后就可以用不同的监听器展现保存的结果数据。
但是, 实际在并发量较大时、或者进行稳定性测试时,最好是去掉或禁用所有的监听器,根据断言结果来判断请求是否成功, 测试报告以plugins插件中的报告形式、或是用文本形式,以此来提高测试结果的准确性。