Jenkins java.lang.OutOfMemoryError:超出GC开销限制
我目前正在使用jenkins创建一个性能框架,并执行jenkins的性能测试。我正在使用这个插件。在这个性能框架中,单用户的健全性测试运行良好,并进行了200个用户的实际性能测试,在2分钟内收到了错误 java.lang.OutOfMemoryError:超出GC开销限制 我在jenkins.xml中尝试了以下内容Jenkins java.lang.OutOfMemoryError:超出GC开销限制,java,jenkins,garbage-collection,maven-plugin,jmeter-maven-plugin,Java,Jenkins,Garbage Collection,Maven Plugin,Jmeter Maven Plugin,我目前正在使用jenkins创建一个性能框架,并执行jenkins的性能测试。我正在使用这个插件。在这个性能框架中,单用户的健全性测试运行良好,并进行了200个用户的实际性能测试,在2分钟内收到了错误 java.lang.OutOfMemoryError:超出GC开销限制 我在jenkins.xml中尝试了以下内容 <arguments>-Xrs -Xmx2048m -XX:MaxPermSize=512m -Dhudson.lifecycle=hudson.lifecycle.Wi
<arguments>-Xrs -Xmx2048m -XX:MaxPermSize=512m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --prefix=/jenkins --webroot="%BASE%\war"</arguments>
-Xrs-Xmx2048m-XX:MaxPermSize=512m-Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle-jar“%BASE%\jenkins.war”--httpPort=8080--prefix=/jenkins--webroot=“%BASE%\war”
但它不起作用,而且还注意到,每当我增加内存时,jenkins服务就会停止,并且必须将内存减少到1Gb,然后服务就会重新启动
也增加了jmeter和java的内存,但没有任何帮助。
在.jmx文件视图结果树中,每个其他侦听器都被禁用,但问题仍然存在
由于我正在做POC,jenkins被托管在我的笔记本电脑和高级规范中,如下所示 系统型号:Latitude E7270处理器:Intel(R)Core(TM)i5-6300U CPU@2.40GHZ(4CPU),约2.5GHZ内存:8192MB RAM
有什么帮助吗?关于GC开销的错误意味着Jenkins在垃圾收集方面遇到了麻烦。这意味着它可能要花更多的时间做垃圾收集而不是做有用的工作 当堆对于应用程序来说太小时,通常会出现这种情况。对于现代多代堆布局,很难说到底需要更改什么
我建议您使用以下选项启用详细GC“-Verbose:GC-XX:+PrintGCDetails-XX:+PrintGCTimeStamps” 然后遵循此处的建议:需要注意的几点
还有,你的新一代人有多大-XX:NewSize=1024m-XX:MaxNewSize=1024m?请注意,jmeter将永久加载所有文件,它将直接进入旧一代,从而减少新一代的可用空间 将内存(PermSize或heap?)增加到2GB时会出现什么错误?还有,这台机器的规格是什么?因为我在做一台POC jenkins,它的高级别规格是在我的笔记本电脑上,它的系统型号如下:Latitude E7270处理器:Intel(R)Core(TM)i5-6300U CPU@2.40GHZ(4CPU),~2.5GHZ内存:8192MB RAM。当我将内存增加到2GB(我认为是唯一的堆)时,没有错误简而言之,jenkins服务停止了添加该信息的问题,并包含了关于更改了哪个cmd行参数以将内存增加到2GB的信息。添加了该信息以及关于cmd行参数的信息。它已经在问题中发布了。我尝试了这个-Xrs-Xmx2048m-XX:MaxPermSize=512m-Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle-jar“%BASE%\jenkins.war”--httpPort=8080--prefix=/jenkins--webroot=“%BASE%\war”但Jenkins服务和在VM初始化期间看到此异常错误时,无法为2097152KB对象堆保留足够的空间,因为8gb的ram可用不确定为什么2GB也会失败“-verbose:gc-XX:+PrintGCDetails-XX:+PrintGCTimeStamps”这应该包含在jenkins.xml中吗?我没有使用JSR223采样器。关于指定或修改新一代尺寸,我需要在笔记本电脑中安装的jmeter中指定吗?我不太理解将测试执行移出jenkins并将报告作为插件的输入的建议?您能详细介绍一下这些方面吗?当您使用jmeter maven插件时,执行使用jenkins JVM进程和jmeter类,所有内容都在jenkins中加载。这是一个很难扩展的模型,因为您使用jenkins作为控制器主机来运行测试。您应该添加一个jenkins从机(另一台安装了jmeter的windows机器),并且应该从jenkins主机到从机运行测试。Jenkins master可以连接到从属服务器并运行windows批处理脚本。使用jmeter命令行界面运行测试,并使用CmdRunner处理结果。是的-您在当前模型中执行的所有GC调优都将针对jenkins JVM,因为maven插件在jenkins JVM中运行。您应该在jenkins JVM上设置新一代,就像您增加堆大小一样