当前位置: 首页 > 知识库问答 >
问题:

詹金斯:爪哇。lang.OutOfMemoryError:超出GC开销限制

荀增
2023-03-14

我目前正在使用jenkins创建一个性能框架,并执行jenkins的性能测试。我正在使用https://github.com/jmeter-maven-plugin/jmeter-maven-plugin这个插件。在这个性能框架中,单用户的健全性测试运行良好,并进行了200个用户的实际性能测试,在2分钟内收到了错误消息。lang.OutOfMemoryError:超出了GC开销限制。我在jenkins中尝试了以下方法。xml

<arguments>-Xrs -Xmx2048m -XX:MaxPermSize=512m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --prefix=/jenkins --webroot="%BASE%\war"</arguments>

但是它不起作用,并且还指出,每当我增加内存时,詹金斯服务就会停止,必须将内存减少到1Gb,然后服务重新启动。

也增加了jmeter和java的内存,但没有任何帮助。在公园里。jmx文件视图结果树和每个其他侦听器都已禁用,但问题仍然存在。

由于我在做POC,jenkins被托管在我的笔记本电脑和高级规格中,系统型号如下:Latitude E7270处理器:Intel(R)Core(TM)i5-6300U CPU@2.40GHZ(4CPU),~2.5GHZ内存:8192MB RAM

需要帮忙吗?

共有2个答案

司寇善
2023-03-14

需要注意的几点

  1. 您正在使用集成的maven目标来运行您的jmeta测试。这将使用Jenkins作为容器来启动您的jmeta测试,从而不仅会影响您的工作,还会影响jenkins的其他用户。
  2. 最好将执行推迟到不同的客户端机器,如专用的jmeter机器,它使用自己的带有参数的JVM来启动您的测试(或)使用您提供的测试

总之,1。将测试执行移出jenkins 2。将报告的输出作为性能插件的输入提供[这也可能崩溃,因为在处理耐久性测试结果(如8小时结果文件)时,它需要更多的JVM内存]

这样,您的测试将有更好的缩放机会。此外,您还没有提到您正在使用的脚本引擎类型。按照Jmets留档, JSR223与groovy有内存泄漏。请参考http://jmeter.apache.org/usermanual/component_reference.html#JSR223_Sampler

尝试添加-Dgroovy。使用classvalue=true以查看这是否有帮助(前提是您使用的是groovy)。如果您使用的是Java8,那么很有可能它正在为jmeter中的所有脚本创建唯一的类,并且它正在增加JVM之外的元空间。在这种情况下,限制元空间并使用类卸载和类似于64位JVM的方法

-d64-XX: CMSClassUnloadingEn的。

还有,你的新一代人有多大-XX:NewSize=1024m-XX:MaxNewSize=1024m?请注意,jmeter将永久加载所有文件,它将直接进入旧一代,从而减少新一代的可用空间。

饶德本
2023-03-14

关于GC开销的错误意味着Jenkins在垃圾收集中失败了。这意味着它可能要花更多的时间做垃圾收集而不是做有用的工作。

当堆对于应用程序来说太小时,通常会出现这种情况。对于现代多代堆布局,很难说到底需要更改什么。

我建议您使用以下选项启用详细GC“-Verbose:GC-XX:PrintGCDetails-XX:PrintGCTimeStamps”

然后按照这里的建议:http://www.oracle.com/technetwork/articles/javase/gcportal-136937.html

 类似资料:
  • 我试图用火花处理10GB的数据,它给了我这个错误, Java语言lang.OutOfMemoryError:超出GC开销限制 笔记本电脑配置为:4CPU,8个逻辑内核,8GB RAM 提交Spark作业时进行Spark配置。 在网上搜索了这个错误后,我有几个问题 如果回答,那将是一个很大的帮助。 1) Spark是内存计算引擎,用于处理10 gb的数据,系统应具有10 gb的RAM。Spark将1

  • 当我执行我的测试时,我得到了这个错误消息: 我知道什么是,但GC开销限制意味着什么?我怎样才能解决这个问题?

  • 当我运行我的8-puzzle程序时,我不断得到“超出GC开销限制”。我曾尝试向JVM添加更多内存,但没有任何帮助。 这是问题所在的方法: start是我从文件. txt中读取的字符串。它可以解决一些问题,但有些问题会产生此错误。

  • 当我尝试运行TestRun时,我遇到了以下错误。我试了很多,但找不到。帮帮我!我得到了内存不足错误Java堆。运行以下代码也需要更多的时间来运行,最后它显示错误,如下所示。如何使这段代码正确?调试这对我来说非常困难。线程“主”中的异常java.lang.OutOfMemoryError:Java堆空间。 班级总和: 类测试运行:

  • 我使用Spark\u apply在Spark中遇到GC开销限制超出错误。以下是我的规格: SparkyR v0.6.2 Spark v2.1.0 4个工人,8核和29G内存 闭包每次从Cassandra提取一行数据。总共大约有20万行。这个过程运行了大约一个半小时,然后给了我这个内存错误。 我试过spark。驾驶员内存本应增加堆大小,但它不起作用。 有什么想法吗?下面的用法

  • 我在mac os X 10.6.8上安装了詹金斯,成功安装詹金斯后,我在浏览器中以默认地址浏览它http://localhost:8080但tomcat页面显示的不是詹金斯主页。我读了jenkins的文档,它将需要执行命令java-jarjenkins.war--http pPort=8080 当执行命令java-jarjenkins时。war——httpPort=8080 有这个错误 2016-