在Jenkins中的大型Grails项目上运行编译时出错:GC开销限制

时间:2012-06-14 21:50:49

标签: windows grails jenkins

我开始在这个问题上结束我的智慧。

我让Jenkins在Windows Server 2008 RC 2盒子上的tomcat容器内运行。我们在这里有一个大型的Grails项目,有一些依赖的内部插件(类似10个)。部分过程是运行

grails compile

在项目中(使用jenkins中的Grails插件,Grails版本1.3.7)

工作开始很好,但是在这一步骤中爆炸,出现以下错误:

[groovyc] Compiling 103 source files to D:\jenkins\jobs\my-build-job\workspace\my-application\target\classes
Compilation error: java.lang.OutOfMemoryError: GC overhead limit exceeded

我没有成功地在Grails插件的“parameters”表单字段中为这个特定的构建步骤添加参数,以及将java参数添加到tomcat servlet容器中(通常是互联网推荐的java选择此GC开销)错误)。这是servlet的wrapper.conf的一部分:

wrapper.java.additional.8=-Xmx2048m
wrapper.java.additional.9=-Xss256k
wrapper.java.additional.10=-Xms1024m
wrapper.java.additional.11=-XX:+UseParallelGC
wrapper.java.additional.12=-XX:-UseGCOverheadLimit
wrapper.java.additional.13=-XX:MaxPermSize=256m

有没有人有任何想法/建议?我觉得我已经尝试了所有的东西来给这份工作足够的记忆(盒子有12演出的RAM,我的意思是你可以看到上面我把堆积空间从256更小的东西上升,没有PermGen调整使用2gig和256M的PermGen!它不应该抱怨资源限制!)

请帮忙!

1 个答案:

答案 0 :(得分:5)

好吧,对于那些偶然发现这个问题的人,我有一个解决方案。

Windows中的JAVA_OPTS似乎是设置和保持设置的棘手野兽,但是使用Jenkins中的EnvInject插件,我能够使用以下内容: https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin

在新添加的“构建环境”步骤中,

选中标记为“将环境变量注入构建过程”的框

并将其添加到“属性内容”文本框中:

JAVA_OPTS=-Xmx1024m -XX:MaxPermSize=256m

没有引用!

正如我之前所说,我以前通过在Windows中设置一个系统范围的JAVA_OPTS变量来解决这个问题(这对我们服务器的需求来说太过分了),所以可能有多种方法可以获得这个工作在这里完成。

希望这对其他受挫的Windows / Jenkins / Grails用户有帮助!