码迷,mamicode.com
首页 > 其他好文 > 详细

jmeter内存溢出解决办法

时间:2021-04-26 14:02:54      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:result   垃圾   双击   jmeter   report   star   默认   使用   user   

Jmeter内存溢出原理以及解决办法

1、Jmeter内存溢出错误如下:

技术图片

由于我使用jmeter测试时,使用的是GUI图形化界面,后台日志可以看到描述的是:“请不要使用GUI模式,如果仅用于测试创建和测试调试,使用cli模式(命令行模式)或者增大java堆内存去满足你的测试需求”

解决办法:

(1)使用CLI命令行模式(建议)

如果只是为了测试创建和调试,使用命令行模式即可,命令行模式也可以输出报告,然后可以通过jmeter的GUI界面打开查看。

Jmeter官方文档地址: https://jmeter.apache.org/usermanual/get-started.html

官方文档中说明:GUI图形化界面应该仅仅用于创建测试脚本也就是jmx文件,CLI模式用于负载测试

技术图片

日志中提示可以使用如下命令运行CLI模式:

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

官方文档中对参数的描述:

技术图片

使用时,先根据jmeter的GUI界面创建任务保存为一个jmx文件,然后使用:

jmeter -n -t jmx文件路径 -l “指定结果输出的路径/result.jtl” -e -o "生成报告的输出文件夹"

例如:

jmeter -n -t "E:\jmeter\test.jmx" -l "E:\jmeter\任务_50.jtl" -e -o "E:\jmeter\jmeter0425"

(2)增加java堆内存大小

  • 如果必须要使用GUI模式,查看运行过程中的情况,那就考虑增加java堆大小,根据自己系统内存选择,尽量不要超

windows环境下

打开jmeter.bat文件:

技术图片

可以看到图片中第一部分:描述堆内存大小,默认初始化堆内存和最大堆内存都是1g,最大元数据空间为256m。这个内存对于普通的电脑来说已经比较大了。

如果只是调整堆内存大小,可以修改“-Xms”和“-Xmx”的值。

(3)分析内存溢出原理

根据jmeter.bat文件图中第二部分可以知道:GC垃圾回收默认使用的是G1GC并发垃圾回收器,最大GC暂停时间为100。

图中第三部分:描述的是当有OutOfMemory内存溢出时,输出当时jvm的堆内存信息到dump文件,在第一个报错的图中可以看到有dump文件生成。

技术图片

windows环境默认生成路径在bin目录下。

使用java自带的jvisualvm工具打开查看堆dump文件。这里我们打开java_pid2332.hprof文件。

技术图片

  • 双击打开jvisualvm程序

  • 点击文件,选择装入

技术图片

  • 选择要装入的文件

技术图片

  • 装入完成后,点击“类”可以看到有两个类对象实例占用内存大小90%左右,如果想看该类更详细的内容,双击l类名进行查看

技术图片

在官方文档中查看TableSample类,

技术图片

图中这句话翻译后:该类用来来保存TableVisualiser的数据,大概就是保存GUI图形化界面上的表格数据。

由此分析,如果使用GUI图形化界面去进行跑任务测试,并且添加了某些数据监视器,运行中的数据都会加载到jvm内存中,最终导致内存溢出。

所以最好还是根据官方文档中说的仅使用GUI图形化界面来创建任务的jmx文件,使用CLI命令行模式去运行任务。

jmeter内存溢出解决办法

标签:result   垃圾   双击   jmeter   report   star   默认   使用   user   

原文地址:https://www.cnblogs.com/YpfBolg/p/14701503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!