使用jmeter执行性能测试,报错:java.lang.OutOfMemoryError: Java heap space

需要对jmeter的jvm进行调优。记录如下:


1. 问题记录及分析:

  使用jmeter执行性能测试,某场景150并发时,出现报错。日志如下:

Creating summariser <summary>
Created the tree successfully using script/项目.jmx
Starting standalone test @ Wed Feb 22 20:36:29 CST 2023 (1677069389986)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4447
summary + 1 in 00:00:01 = 0.7/s Avg: 1049 Min: 1049 Max: 1049 Err: 0 (0.00%) Active: 150 Started: 150 Finished: 0
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid25798.hprof ...
Heap dump file created [898948073 bytes in 1.583 secs]

2. 问题分析

  利用jmeter在性能测试中模拟并发压测,有时候当模拟并发请求较大或者脚本运行时间较长时,压力机会出现卡顿甚至报异常——内存溢出。

  如果内存溢出的话,一般会出现这个提示:java.lang.OutOfMemoryError: Java heap space:意思就是堆内存溢出,不够用了。

  内存溢出解决方法:调整堆内存大小。

3. JVM调优 

  在使用Jmeter做性能测试过程中,可能会因为默认设置的堆内存值较小出现堆内存溢出问题,此时解决的方式有两种,分布式测试和调大堆内存。下面介绍官方推荐调整堆内存方法

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

3.1 官方介绍:

  翻译如下:

3.2 创建setenv.bat或setenv.sh文件

  setenv.bat、setenv.sh的优先级高于jmeter.bat、jmeter.sh中的jvm参数,会覆盖该文件的jvm参数内容。

 Xms、Xmx建议设为物理内存的一半。

  注:① setenv.bat、setenv.sh脚本文件语法格式稍有区别。window解析bat文件使用set语法设置变量,linux解析shell语言使用export设置变量。

     ② 堆的最大值不要超过物理内存的一半,否则容易导致jmeter运行变慢、卡顿甚至内存溢出(因为java本身的垃圾回收机制是动态分配内存,调整时候其本身会占用很多内存)

3.2.1 windows环境

  在bin目录创建setenv.bat文件,设置jvm参数

set HEAP=-Xms6G -Xmx6G -XX:MaxMetaspaceSize=256m

3.2.2 Linux环境

  在bin目录创建setenv.sh文件,设置jvm参数

export HEAP="-Xms6G -Xmx6G -XX:MaxMetaspaceSize=256m"

4. 展示

在bin目录创建以上文件后,重启jmeter,再次执行压测。


内存溢出问题解决。哈哈~

PS:当需要模拟的线程数较大时,就需要根据具体情况采用分布式压测的方式了,这种修改堆大小的方法只适用一部分情况,并不是万能的!

jmeter:内存溢出解决办法的更多相关文章

  1. jmeter内存溢出解决办法

    原文:http://blog.51cto.com/xqtesting/2107927 使用jmeter进行压力测试时遇到一段时间后报内存溢出outfmenmory错误,导致jmeter卡死了,先尝试在 ...

  2. linux中tomcat内存溢出解决办法

    用命令 tail -f /root/apache-tomcat-6.0.20/logs/catalina.out(需要找到tomcat路径) 查看日志,查看是否有错误 linux中tomcat内存溢出 ...

  3. angular打包出现JavaScript堆内存不足、启动也会内存溢出解决办法\increase-memory-limit' 不是内部或外部命令,

    ## 打包出现JavaScript堆内存不足 最近打包遇到这种报错 Ineffective mark-compacts near heap limit Allocation failed - Java ...

  4. jmeter 内存溢出解决方法

    执行“评论新鲜事”200并发就内存溢出 解决方法: [caozijuan@test09 bin]$ vi jmeter JVM_ARGS="-Xms1024m -Xmx4096m" ...

  5. Jmeter之内存溢出解决办法

    使用Jmeter进行压力测试会遇到一段时间后报内存溢出的错误,导致Jmeter卡死.这是因为Jmeter默认的HEAP配置的太小了,解决办法如下: 1.Windows环境   修改jmeter.bat ...

  6. Tomcat内存溢出解决办法

    使用Java程序从数据库中查询大量的数据时出现异常:java.lang.OutOfMemoryError: Java heap space在JVM中如果98%的时间是用于GC且可用的 Heap siz ...

  7. java 大数据处理之内存溢出解决办法(一)

    http://my.oschina.net/songhongxu/blog/209951 一.内存溢出类型 1.java.lang.OutOfMemoryError: PermGen space JV ...

  8. 图片生成操作属性导致WP内存溢出解决办法

    在开发的项目中,发现经常会出现异常 “内存溢出,不能再继续执行程序”,通过搜索一些国外的文章,发现原来是由于项目中的图片比较多,而生存操作设为了“内容”.通过设置图片的生成操作为“无”,复制操作为“如 ...

  9. 拼接xml时出现内存溢出解决办法

    /// designed by Alex /// 解决内存溢出问题,不可使用迭代器和foreach /// 循环遍历List, 别生成xml,一边释放 /// 反向遍历,相当于出栈,避免索引顺序乱的问 ...

  10. myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小java.lang.OutOfMemoryError: PermGen space及其解决方法

    摘要: tomcat部署多个项目后,启动tomcat正常,访问项目时却会出现该错误在网上查了查又试了好几次,才解决,将解决方法记录下来,以方便以后查看或让遇到同样问题的朋友有个参考 PermGen s ...

随机推荐

  1. MySQL对时间戳的格式化

    时间转时间戳 select unix_timestamp('2022-02-22 22:22:22'); 时间戳转时间 select from_unixtime(1645539742); 格式化 SE ...

  2. 2020-11-07:已知一个正整数数组,两个数相加等于N并且一定存在,如何找到两个数相乘最小的两个数?

    福哥答案2020-11-07: 1.哈希法.2.排序+双指针夹逼. golang代码如下: package main import ( "fmt" "sort" ...

  3. 2020-11-06:go中,谈一下调度器。

    福哥答案2020-11-06:·MPG模型:goroutine的并发模型可以归纳为MPG模型:·MPG概念:线程(machine,系统线程,物理线程)-内核(processor)-协程(gorouti ...

  4. 2022-07-29:一共有n个人,从左到右排列,依次编号0~n-1, h[i]是第i个人的身高, v[i]是第i个人的分数, 要求从左到右选出一个子序列,在这个子序列中的人,从左到右身高是不下降的。

    2022-07-29:一共有n个人,从左到右排列,依次编号0~n-1, h[i]是第i个人的身高, v[i]是第i个人的分数, 要求从左到右选出一个子序列,在这个子序列中的人,从左到右身高是不下降的. ...

  5. 2022-07-12:以下go语言代码输出什么?A:1 1;B:1.0 1.0;C:编译不通过;D:1.0 1。 package main import “fmt“ func main() {

    2022-07-12:以下go语言代码输出什么?A:1 1:B:1.0 1.0:C:编译不通过:D:1.0 1. package main import "fmt" func ma ...

  6. Django4全栈进阶之路6 对各类数据库连接设置

    Django 4 支持多种类型的数据库连接,包括 MySQL.PostgreSQL.SQLite.Oracle 等.对于不同类型的数据库,需要进行不同的设置.下面是 Django 4 对各类数据库连接 ...

  7. 卸载与重装Vue3及项目文件重创错误

    卸载与重装Vue3及项目文件的重创错误 首先先来个vue的卸载命令,直接win+R打开cmd npm uninstall -g @vue/cli   或     yarn global remove ...

  8. vue 中render执行流程梳理

    用了多年vue 今天对自己了解的render 做一个梳理 一.使用template模板 先从vue 初始化开始: 众所周知项目的main.js中定义了 var app = new Vue({})这vu ...

  9. nas盒子内网穿透

    2023年5月27日星期六 -------------------------------------------------------------------------------------- ...

  10. GaussDB(DWS)迁移实践丨row_number输出结果不一致

    摘要:迁移前后结果集row_number字段值前后不一致,前在DWS上运行不一致. 本文分享自华为云社区<GaussDB(DWS)迁移 - oracle兼容 --row_number输出结果不一 ...